diff --git a/.bazelrc b/.bazelrc new file mode 100644 index 0000000000000..e1e11044ae533 --- /dev/null +++ b/.bazelrc @@ -0,0 +1,13 @@ +startup --host_jvm_args=-Xmx8g +startup --unlimit_coredumps + +run --color=yes +build:release --workspace_status_command=./build/print-workspace-status.sh --stamp +build:release --config=ci +build --incompatible_strict_action_env --incompatible_enable_cc_toolchain_resolution +build:ci --remote_cache=http://172.16.4.3:8084/tidb +test:ci --verbose_failures +test:ci --test_timeout=180 +test:ci --test_env=GO_TEST_WRAP_TESTV=1 --test_verbose_timeout_warnings +test:ci --remote_cache=http://172.16.4.3:8084/tidb +test:ci --test_env=TZ=Asia/Shanghai --test_output=errors --experimental_ui_max_stdouterr_bytes=104857600 diff --git a/.github/licenserc.yml b/.github/licenserc.yml index 9f4890a3a1329..6185610c1464a 100644 --- a/.github/licenserc.yml +++ b/.github/licenserc.yml @@ -10,6 +10,9 @@ header: - '.golangci.yml' - '.golangci_br.yml' - 'LICENSES/' + - '**/BUILD.bazel' + - 'WORKSPACE' + - '.bazelrc' - '**/*.key' - '**/*.md' - '**/*.json' @@ -19,6 +22,8 @@ header: - '**/*.test' - '**/*.result' - '**/*.example' + - '**/*.patch' + - '**/*.bzl' - '.codecov.yml' - 'Jenkinsfile' - '.editorconfig' diff --git a/.gitignore b/.gitignore index ec864762068de..e2cdcd078a0f1 100644 --- a/.gitignore +++ b/.gitignore @@ -29,3 +29,9 @@ export-20*/ *-junit-report.xml # Files generated when testing out +/_bazel +bazel-bin +bazel-out +bazel-testlogs +bazel-tidb +.ijwb/ diff --git a/BUILD.bazel b/BUILD.bazel new file mode 100644 index 0000000000000..71ab0b44b41e1 --- /dev/null +++ b/BUILD.bazel @@ -0,0 +1,29 @@ +load("@bazel_gazelle//:def.bzl", "gazelle") + +# gazelle:proto disable_global +# gazelle:prefix github.com/pingcap/tidb +# gazelle:exclude tidb-binlog/proto/proto +# gazelle:exclude plugin/conn_ip_example +# gazelle:exclude build/linter/staticcheck +gazelle(name = "gazelle") + +package(default_visibility = ["//visibility:public"]) + +xcode_version( + name = "xcode_version", + version = "10.0", +) + +filegroup( + name = "package-srcs", + srcs = glob( + ["**"], + exclude = [ + "bazel-*/**", + ".git/**", + ".idea/**", + ], + ), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) diff --git a/DEPS.bzl b/DEPS.bzl new file mode 100644 index 0000000000000..f1e7920961fc9 --- /dev/null +++ b/DEPS.bzl @@ -0,0 +1,3195 @@ +load("@bazel_gazelle//:deps.bzl", "go_repository") + +def go_deps(): + go_repository( + name = "co_honnef_go_tools", + build_file_proto_mode = "disable_global", + importpath = "honnef.co/go/tools", + replace = "honnef.co/go/tools", + sum = "h1:ytYb4rOqyp1TSa2EPvNVwtPQJctSELKaMyLfqNP4+34=", + version = "v0.3.2", + ) + go_repository( + name = "com_github_ajg_form", + build_file_proto_mode = "disable_global", + importpath = "github.com/ajg/form", + sum = "h1:t9c7v8JUKu/XxOGBU0yjNpaMloxGEJhUkqFRq0ibGeU=", + version = "v1.5.1", + ) + go_repository( + name = "com_github_ajstarks_svgo", + build_file_proto_mode = "disable_global", + importpath = "github.com/ajstarks/svgo", + sum = "h1:wVe6/Ea46ZMeNkQjjBW6xcqyQA/j5e0D6GytH95g0gQ=", + version = "v0.0.0-20180226025133-644b8db467af", + ) + go_repository( + name = "com_github_alecthomas_template", + build_file_proto_mode = "disable_global", + importpath = "github.com/alecthomas/template", + sum = "h1:JYp7IbQjafoB+tBA3gMyHYHrpOtNuDiK/uB5uXxq5wM=", + version = "v0.0.0-20190718012654-fb15b899a751", + ) + go_repository( + name = "com_github_alecthomas_units", + build_file_proto_mode = "disable_global", + importpath = "github.com/alecthomas/units", + sum = "h1:UQZhZ2O0vMHr2cI+DC1Mbh0TJxzA3RcLoMsFw+aXw7E=", + version = "v0.0.0-20190924025748-f65c72e2690d", + ) + go_repository( + name = "com_github_aliyun_alibaba_cloud_sdk_go", + build_file_proto_mode = "disable", + importpath = "github.com/aliyun/alibaba-cloud-sdk-go", + sum = "h1:Q/yk4z/cHUVZfgTqtD09qeYBxHwshQAjVRX73qs8UH0=", + version = "v1.61.1581", + ) + + go_repository( + name = "com_github_andreasbriese_bbloom", + build_file_proto_mode = "disable_global", + importpath = "github.com/AndreasBriese/bbloom", + sum = "h1:HD8gA2tkByhMAwYaFAX9w2l7vxvBQ5NMoxDrkhqhtn4=", + version = "v0.0.0-20190306092124-e2d15f34fcf9", + ) + go_repository( + name = "com_github_antihax_optional", + build_file_proto_mode = "disable_global", + importpath = "github.com/antihax/optional", + sum = "h1:xK2lYat7ZLaVVcIuj82J8kIro4V6kDe0AUDFboUCwcg=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_apache_thrift", + build_file_proto_mode = "disable_global", + importpath = "github.com/apache/thrift", + sum = "h1:Jz3KVLYY5+JO7rDiX0sAuRGtuv2vG01r17Y9nLMWNUw=", + version = "v0.13.1-0.20201008052519-daf620915714", + ) + go_repository( + name = "com_github_armon_circbuf", + build_file_proto_mode = "disable_global", + importpath = "github.com/armon/circbuf", + sum = "h1:QEF07wC0T1rKkctt1RINW/+RMTVmiwxETico2l3gxJA=", + version = "v0.0.0-20150827004946-bbbad097214e", + ) + go_repository( + name = "com_github_armon_consul_api", + build_file_proto_mode = "disable_global", + importpath = "github.com/armon/consul-api", + sum = "h1:G1bPvciwNyF7IUmKXNt9Ak3m6u9DE1rF+RmtIkBpVdA=", + version = "v0.0.0-20180202201655-eb2c6b5be1b6", + ) + go_repository( + name = "com_github_armon_go_metrics", + build_file_proto_mode = "disable_global", + importpath = "github.com/armon/go-metrics", + sum = "h1:8GUt8eRujhVEGZFFEjBj46YV4rDjvGrNxb0KMWYkL2I=", + version = "v0.0.0-20180917152333-f0300d1749da", + ) + go_repository( + name = "com_github_armon_go_radix", + build_file_proto_mode = "disable_global", + importpath = "github.com/armon/go-radix", + sum = "h1:BUAU3CGlLvorLI26FmByPp2eC2qla6E1Tw+scpcg/to=", + version = "v0.0.0-20180808171621-7fddfc383310", + ) + go_repository( + name = "com_github_aws_aws_sdk_go", + build_file_proto_mode = "disable_global", + importpath = "github.com/aws/aws-sdk-go", + sum = "h1:r0puXncSaAfRt7Btml2swUo74Kao+vKhO3VLjwDjK54=", + version = "v1.35.3", + ) + go_repository( + name = "com_github_aymerick_raymond", + build_file_proto_mode = "disable_global", + importpath = "github.com/aymerick/raymond", + sum = "h1:Ppm0npCCsmuR9oQaBtRuZcmILVE74aXE+AmrJj8L2ns=", + version = "v2.0.3-0.20180322193309-b565731e1464+incompatible", + ) + 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", + sum = "h1:KQgdWmEOmaJKxaUUZwHAYh12t+b+ZJf8q3friycK1kA=", + version = "v0.20.0", + ) + go_repository( + name = "com_github_azure_azure_sdk_for_go_sdk_azidentity", + build_file_proto_mode = "disable_global", + importpath = "github.com/Azure/azure-sdk-for-go/sdk/azidentity", + sum = "h1:VBvHGLJbaY0+c66NZHdS9cgjHVYSH6DDa0XJMyrblsI=", + version = "v0.12.0", + ) + go_repository( + name = "com_github_azure_azure_sdk_for_go_sdk_internal", + build_file_proto_mode = "disable_global", + importpath = "github.com/Azure/azure-sdk-for-go/sdk/internal", + sum = "h1:BUYIbDf/mMZ8945v3QkG3OuqGVyS4Iek0AOLwdRAYoc=", + version = "v0.8.1", + ) + go_repository( + name = "com_github_azure_azure_sdk_for_go_sdk_storage_azblob", + build_file_proto_mode = "disable_global", + importpath = "github.com/Azure/azure-sdk-for-go/sdk/storage/azblob", + sum = "h1:62Ew5xXg5UCGIXDOM7+y4IL5/6mQJq1nenhBCJAeGX8=", + version = "v0.2.0", + ) + go_repository( + name = "com_github_benbjohnson_clock", + build_file_proto_mode = "disable_global", + importpath = "github.com/benbjohnson/clock", + sum = "h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A=", + version = "v1.3.0", + ) + go_repository( + name = "com_github_beorn7_perks", + build_file_proto_mode = "disable_global", + importpath = "github.com/beorn7/perks", + sum = "h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=", + version = "v1.0.1", + ) + go_repository( + name = "com_github_bgentry_speakeasy", + build_file_proto_mode = "disable_global", + importpath = "github.com/bgentry/speakeasy", + sum = "h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY=", + version = "v0.1.0", + ) + go_repository( + name = "com_github_bketelsen_crypt", + build_file_proto_mode = "disable_global", + importpath = "github.com/bketelsen/crypt", + sum = "h1:+0HFd5KSZ/mm3JmhmrDukiId5iR6w4+BdFtfSy4yWIc=", + version = "v0.0.3-0.20200106085610-5cbc8cc4026c", + ) + go_repository( + name = "com_github_blacktear23_go_proxyprotocol", + build_file_proto_mode = "disable_global", + importpath = "github.com/blacktear23/go-proxyprotocol", + sum = "h1:WmMmtZanGEfIHnJN9N3A4Pl6mM69D+GxEph2eOaCf7g=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_burntsushi_toml", + build_file_proto_mode = "disable_global", + importpath = "github.com/BurntSushi/toml", + sum = "h1:GaI7EiDXDRfa8VshkTj7Fym7ha+y8/XxIgD2okUIjLw=", + version = "v0.4.1", + ) + go_repository( + name = "com_github_burntsushi_xgb", + build_file_proto_mode = "disable_global", + importpath = "github.com/BurntSushi/xgb", + sum = "h1:1BDTz0u9nC3//pOCMdNH+CiXJVYJh5UQNCOBG7jbELc=", + version = "v0.0.0-20160522181843-27f122750802", + ) + go_repository( + name = "com_github_carlmjohnson_flagext", + build_file_proto_mode = "disable_global", + importpath = "github.com/carlmjohnson/flagext", + sum = "h1:/c4uK3ie786Z7caXLcIMvePNSSiH3bQVGDvmGLMme60=", + version = "v0.21.0", + ) + go_repository( + name = "com_github_census_instrumentation_opencensus_proto", + build_file_proto_mode = "disable_global", + importpath = "github.com/census-instrumentation/opencensus-proto", + sum = "h1:glEXhBS5PSLLv4IXzLA5yPRVX4bilULVyxxbrfOtDAk=", + version = "v0.2.1", + ) + go_repository( + name = "com_github_certifi_gocertifi", + build_file_proto_mode = "disable_global", + importpath = "github.com/certifi/gocertifi", + sum = "h1:uH66TXeswKn5PW5zdZ39xEwfS9an067BirqA+P4QaLI=", + version = "v0.0.0-20200922220541-2c3bb06c6054", + ) + go_repository( + name = "com_github_cespare_xxhash", + build_file_proto_mode = "disable_global", + importpath = "github.com/cespare/xxhash", + sum = "h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko=", + version = "v1.1.0", + ) + go_repository( + name = "com_github_cespare_xxhash_v2", + build_file_proto_mode = "disable_global", + importpath = "github.com/cespare/xxhash/v2", + sum = "h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE=", + version = "v2.1.2", + ) + go_repository( + name = "com_github_charithe_durationcheck", + build_file_proto_mode = "disable", + importpath = "github.com/charithe/durationcheck", + sum = "h1:mPP4ucLrf/rKZiIG/a9IPXHGlh8p4CzgpyTy6EEutYk=", + version = "v0.0.9", + ) + + go_repository( + name = "com_github_cheggaaa_pb_v3", + build_file_proto_mode = "disable_global", + importpath = "github.com/cheggaaa/pb/v3", + sum = "h1:bC8oemdChbke2FHIIGy9mn4DPJ2caZYQnfbRqwmdCoA=", + version = "v3.0.8", + ) + go_repository( + name = "com_github_cheynewallace_tabby", + build_file_proto_mode = "disable_global", + importpath = "github.com/cheynewallace/tabby", + sum = "h1:JvUR8waht4Y0S3JF17G6Vhyt+FRhnqVCkk8l4YrOU54=", + version = "v1.1.1", + ) + go_repository( + name = "com_github_chzyer_logex", + build_file_proto_mode = "disable_global", + importpath = "github.com/chzyer/logex", + sum = "h1:Swpa1K6QvQznwJRcfTfQJmTE72DqScAa40E+fbHEXEE=", + version = "v1.1.10", + ) + go_repository( + name = "com_github_chzyer_readline", + build_file_proto_mode = "disable_global", + importpath = "github.com/chzyer/readline", + sum = "h1:fY5BOSpyZCqRo5OhCuC+XN+r/bBCmeuuJtjz+bCNIf8=", + version = "v0.0.0-20180603132655-2972be24d48e", + ) + go_repository( + name = "com_github_chzyer_test", + build_file_proto_mode = "disable_global", + importpath = "github.com/chzyer/test", + sum = "h1:q763qf9huN11kDQavWsoZXJNW3xEE4JJyHa5Q25/sd8=", + version = "v0.0.0-20180213035817-a1ea475d72b1", + ) + go_repository( + name = "com_github_client9_misspell", + build_file_proto_mode = "disable_global", + importpath = "github.com/client9/misspell", + sum = "h1:ta993UF76GwbvJcIo3Y68y/M3WxlpEHPWIGDkJYwzJI=", + version = "v0.3.4", + ) + go_repository( + name = "com_github_cloudykit_fastprinter", + build_file_proto_mode = "disable_global", + importpath = "github.com/CloudyKit/fastprinter", + sum = "h1:3SgJcK9l5uPdBC/X17wanyJAMxM33+4ZhEIV96MIH8U=", + version = "v0.0.0-20170127035650-74b38d55f37a", + ) + go_repository( + name = "com_github_cloudykit_jet", + build_file_proto_mode = "disable_global", + importpath = "github.com/CloudyKit/jet", + sum = "h1:rZgFj+Gtf3NMi/U5FvCvhzaxzW/TaPYgUYx3bAPz9DE=", + version = "v2.1.3-0.20180809161101-62edd43e4f88+incompatible", + ) + go_repository( + name = "com_github_cncf_udpa_go", + build_file_proto_mode = "disable_global", + importpath = "github.com/cncf/udpa/go", + sum = "h1:hzAQntlaYRkVSFEfj9OTWlVV1H155FMD8BTKktLv0QI=", + version = "v0.0.0-20210930031921-04548b0d99d4", + ) + go_repository( + name = "com_github_cncf_xds_go", + build_file_proto_mode = "disable_global", + importpath = "github.com/cncf/xds/go", + sum = "h1:zH8ljVhhq7yC0MIeUL/IviMtY8hx2mK8cN9wEYb8ggw=", + version = "v0.0.0-20211011173535-cb28da3451f1", + ) + go_repository( + name = "com_github_cockroachdb_datadriven", + build_file_proto_mode = "disable_global", + importpath = "github.com/cockroachdb/datadriven", + sum = "h1:uhZrAfEayBecH2w2tZmhe20HJ7hDvrrA4x2Bg9YdZKM=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_cockroachdb_errors", + build_file_proto_mode = "disable_global", + importpath = "github.com/cockroachdb/errors", + sum = "h1:A5+txlVZfOqFBDa4mGz2bUWSp0aHElvHX2bKkdbQu+Y=", + version = "v1.8.1", + ) + go_repository( + name = "com_github_cockroachdb_logtags", + build_file_proto_mode = "disable_global", + importpath = "github.com/cockroachdb/logtags", + sum = "h1:o/kfcElHqOiXqcou5a3rIlMc7oJbMQkeLk0VQJ7zgqY=", + version = "v0.0.0-20190617123548-eb05cc24525f", + ) + go_repository( + name = "com_github_cockroachdb_pebble", + build_file_proto_mode = "disable_global", + importpath = "github.com/cockroachdb/pebble", + sum = "h1:Igd6YmtOZ77EgLAIaE9+mHl7+sAKaZ5m4iMI0Dz/J2A=", + version = "v0.0.0-20210719141320-8c3bd06debb5", + ) + go_repository( + name = "com_github_cockroachdb_redact", + build_file_proto_mode = "disable_global", + importpath = "github.com/cockroachdb/redact", + sum = "h1:8QG/764wK+vmEYoOlfobpe12EQcS81ukx/a4hdVMxNw=", + version = "v1.0.8", + ) + go_repository( + name = "com_github_cockroachdb_sentry_go", + build_file_proto_mode = "disable_global", + importpath = "github.com/cockroachdb/sentry-go", + sum = "h1:IKgmqgMQlVJIZj19CdocBeSfSaiCbEBZGKODaixqtHM=", + version = "v0.6.1-cockroachdb.2", + ) + go_repository( + name = "com_github_codahale_hdrhistogram", + build_file_proto_mode = "disable_global", + importpath = "github.com/codahale/hdrhistogram", + sum = "h1:qMd81Ts1T2OTKmB4acZcyKaMtRnY5Y44NuXGX2GFJ1w=", + version = "v0.0.0-20161010025455-3a0bb77429bd", + ) + go_repository( + name = "com_github_codegangsta_inject", + build_file_proto_mode = "disable_global", + importpath = "github.com/codegangsta/inject", + sum = "h1:sDMmm+q/3+BukdIpxwO365v/Rbspp2Nt5XntgQRXq8Q=", + version = "v0.0.0-20150114235600-33e0aa1cb7c0", + ) + go_repository( + name = "com_github_colinmarc_hdfs_v2", + build_file_proto_mode = "disable_global", + importpath = "github.com/colinmarc/hdfs/v2", + sum = "h1:x0hw/m+o3UE20Scso/KCkvYNc9Di39TBlCfGMkJ1/a0=", + version = "v2.1.1", + ) + go_repository( + name = "com_github_coocood_bbloom", + build_file_proto_mode = "disable_global", + importpath = "github.com/coocood/bbloom", + sum = "h1:W1SHiII3e0jVwvaQFglwu3kS9NLxOeTpvik7MbKCyuQ=", + version = "v0.0.0-20190830030839-58deb6228d64", + ) + go_repository( + name = "com_github_coocood_freecache", + build_file_proto_mode = "disable_global", + importpath = "github.com/coocood/freecache", + sum = "h1:/v1CqMq45NFH9mp/Pt142reundeBM0dVUD3osQBeu/U=", + version = "v1.2.1", + ) + go_repository( + name = "com_github_coocood_rtutil", + build_file_proto_mode = "disable_global", + importpath = "github.com/coocood/rtutil", + sum = "h1:NnLfQ77q0G4k2Of2c1ceQ0ec6MkLQyDp+IGdVM0D8XM=", + version = "v0.0.0-20190304133409-c84515f646f2", + ) + go_repository( + name = "com_github_coreos_bbolt", + build_file_proto_mode = "disable_global", + importpath = "github.com/coreos/bbolt", + sum = "h1:wZwiHHUieZCquLkDL0B8UhzreNWsPHooDAG3q34zk0s=", + version = "v1.3.2", + ) + go_repository( + name = "com_github_coreos_etcd", + build_file_proto_mode = "disable_global", + importpath = "github.com/coreos/etcd", + sum = "h1:8F3hqu9fGYLBifCmRCJsicFqDx/D68Rt3q1JMazcgBQ=", + version = "v3.3.13+incompatible", + ) + go_repository( + name = "com_github_coreos_go_etcd", + build_file_proto_mode = "disable_global", + importpath = "github.com/coreos/go-etcd", + sum = "h1:bXhRBIXoTm9BYHS3gE0TtQuyNZyeEMux2sDi4oo5YOo=", + version = "v2.0.0+incompatible", + ) + go_repository( + name = "com_github_coreos_go_semver", + build_file_proto_mode = "disable_global", + importpath = "github.com/coreos/go-semver", + sum = "h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM=", + version = "v0.3.0", + ) + go_repository( + name = "com_github_coreos_go_systemd", + build_file_proto_mode = "disable_global", + importpath = "github.com/coreos/go-systemd", + sum = "h1:Wf6HqHfScWJN9/ZjdUKyjop4mf3Qdd+1TvvltAvM3m8=", + version = "v0.0.0-20190321100706-95778dfbb74e", + ) + go_repository( + name = "com_github_coreos_go_systemd_v22", + build_file_proto_mode = "disable_global", + importpath = "github.com/coreos/go-systemd/v22", + sum = "h1:D9/bQk5vlXQFZ6Kwuu6zaiXJ9oTPe68++AzAJc1DzSI=", + version = "v22.3.2", + ) + go_repository( + name = "com_github_coreos_pkg", + build_file_proto_mode = "disable_global", + importpath = "github.com/coreos/pkg", + sum = "h1:lBNOc5arjvs8E5mO2tbpBpLoyyu8B6e44T7hJy6potg=", + version = "v0.0.0-20180928190104-399ea9e2e55f", + ) + go_repository( + name = "com_github_cpuguy83_go_md2man", + build_file_proto_mode = "disable_global", + importpath = "github.com/cpuguy83/go-md2man", + sum = "h1:BSKMNlYxDvnunlTymqtgONjNnaRV1sTpcovwwjF22jk=", + version = "v1.0.10", + ) + go_repository( + name = "com_github_cpuguy83_go_md2man_v2", + build_file_proto_mode = "disable_global", + importpath = "github.com/cpuguy83/go-md2man/v2", + sum = "h1:r/myEWzV9lfsM1tFLgDyu0atFtJ1fXn261LKYj/3DxU=", + version = "v2.0.1", + ) + go_repository( + name = "com_github_creack_pty", + build_file_proto_mode = "disable_global", + importpath = "github.com/creack/pty", + sum = "h1:07n33Z8lZxZ2qwegKbObQohDhXDQxiMMz1NOUGYlesw=", + version = "v1.1.11", + ) + go_repository( + name = "com_github_cznic_mathutil", + build_file_proto_mode = "disable_global", + importpath = "github.com/cznic/mathutil", + sum = "h1:iwZdTE0PVqJCos1vaoKsclOGD3ADKpshg3SRtYBbwso=", + version = "v0.0.0-20181122101859-297441e03548", + ) + go_repository( + name = "com_github_cznic_sortutil", + build_file_proto_mode = "disable_global", + importpath = "github.com/cznic/sortutil", + sum = "h1:LpMLYGyy67BoAFGda1NeOBQwqlv7nUXpm+rIVHGxZZ4=", + version = "v0.0.0-20181122101858-f5f958428db8", + ) + go_repository( + name = "com_github_cznic_strutil", + build_file_proto_mode = "disable_global", + importpath = "github.com/cznic/strutil", + sum = "h1:0rkFMAbn5KBKNpJyHQ6Prb95vIKanmAe62KxsrN+sqA=", + version = "v0.0.0-20171016134553-529a34b1c186", + ) + go_repository( + name = "com_github_danjacques_gofslock", + build_file_proto_mode = "disable_global", + importpath = "github.com/danjacques/gofslock", + sum = "h1:X6mKGhCFOxrKeeHAjv/3UvT6e5RRxW6wRdlqlV6/H4w=", + version = "v0.0.0-20191023191349-0a45f885bc37", + ) + go_repository( + name = "com_github_data_dog_go_sqlmock", + build_file_proto_mode = "disable_global", + importpath = "github.com/DATA-DOG/go-sqlmock", + sum = "h1:Shsta01QNfFxHCfpW6YH2STWB0MudeXXEWMr20OEh60=", + version = "v1.5.0", + ) + go_repository( + name = "com_github_datadog_zstd", + build_file_proto_mode = "disable_global", + importpath = "github.com/DataDog/zstd", + sum = "h1:EndNeuB0l9syBZhut0wns3gV1hL8zX8LIu6ZiVHWLIQ=", + version = "v1.4.5", + ) + go_repository( + name = "com_github_davecgh_go_spew", + build_file_proto_mode = "disable_global", + importpath = "github.com/davecgh/go-spew", + sum = "h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=", + version = "v1.1.1", + ) + go_repository( + name = "com_github_dgraph_io_badger", + build_file_proto_mode = "disable_global", + importpath = "github.com/dgraph-io/badger", + sum = "h1:DshxFxZWXUcO0xX476VJC07Xsr6ZCBVRHKZ93Oh7Evo=", + version = "v1.6.0", + ) + go_repository( + name = "com_github_dgraph_io_ristretto", + build_file_proto_mode = "disable_global", + importpath = "github.com/dgraph-io/ristretto", + sum = "h1:Wrc3UKTS+cffkOx0xRGFC+ZesNuTfn0ThvEC72N0krk=", + version = "v0.1.1-0.20220403145359-8e850b710d6d", + ) + go_repository( + name = "com_github_dgrijalva_jwt_go", + build_file_proto_mode = "disable_global", + importpath = "github.com/dgrijalva/jwt-go", + replace = "github.com/form3tech-oss/jwt-go", + sum = "h1:0sWoh2EtO7UrQdNTAN+hnU3QXa4AoivplyPLLHkcrLk=", + version = "v3.2.6-0.20210809144907-32ab6a8243d7+incompatible", + ) + go_repository( + name = "com_github_dgryski_go_farm", + build_file_proto_mode = "disable_global", + importpath = "github.com/dgryski/go-farm", + sum = "h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y=", + version = "v0.0.0-20200201041132-a6ae2369ad13", + ) + go_repository( + name = "com_github_dgryski_go_sip13", + build_file_proto_mode = "disable_global", + importpath = "github.com/dgryski/go-sip13", + sum = "h1:RMLoZVzv4GliuWafOuPuQDKSm1SJph7uCRnnS61JAn4=", + version = "v0.0.0-20181026042036-e10d5fee7954", + ) + go_repository( + name = "com_github_dnaeon_go_vcr", + build_file_proto_mode = "disable_global", + importpath = "github.com/dnaeon/go-vcr", + sum = "h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI=", + version = "v1.2.0", + ) + go_repository( + name = "com_github_docker_go_units", + build_file_proto_mode = "disable_global", + importpath = "github.com/docker/go-units", + sum = "h1:3uh0PgVws3nIA0Q+MwDC8yjEPf9zjRfZZWXZYDct3Tw=", + version = "v0.4.0", + ) + go_repository( + name = "com_github_dustin_go_humanize", + build_file_proto_mode = "disable_global", + importpath = "github.com/dustin/go-humanize", + sum = "h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_eapache_go_resiliency", + build_file_proto_mode = "disable_global", + importpath = "github.com/eapache/go-resiliency", + sum = "h1:v7g92e/KSN71Rq7vSThKaWIq68fL4YHvWyiUKorFR1Q=", + version = "v1.2.0", + ) + go_repository( + name = "com_github_eapache_go_xerial_snappy", + build_file_proto_mode = "disable_global", + importpath = "github.com/eapache/go-xerial-snappy", + sum = "h1:YEetp8/yCZMuEPMUDHG0CW/brkkEp8mzqk2+ODEitlw=", + version = "v0.0.0-20180814174437-776d5712da21", + ) + go_repository( + name = "com_github_eapache_queue", + build_file_proto_mode = "disable_global", + importpath = "github.com/eapache/queue", + sum = "h1:YOEu7KNc61ntiQlcEeUIoDTJ2o8mQznoNvUhiigpIqc=", + version = "v1.1.0", + ) + go_repository( + name = "com_github_eknkc_amber", + build_file_proto_mode = "disable_global", + importpath = "github.com/eknkc/amber", + sum = "h1:clC1lXBpe2kTj2VHdaIu9ajZQe4kcEY9j0NsnDDBZ3o=", + version = "v0.0.0-20171010120322-cdade1c07385", + ) + go_repository( + name = "com_github_envoyproxy_go_control_plane", + build_file_proto_mode = "disable_global", + importpath = "github.com/envoyproxy/go-control-plane", + sum = "h1:fP+fF0up6oPY49OrjPrhIJ8yQfdIM85NXMLkMg1EXVs=", + version = "v0.9.10-0.20210907150352-cf90f659a021", + ) + go_repository( + name = "com_github_envoyproxy_protoc_gen_validate", + build_file_proto_mode = "disable_global", + importpath = "github.com/envoyproxy/protoc-gen-validate", + sum = "h1:EQciDnbrYxy13PgWoY8AqoxGiPrpgBZ1R8UNe3ddc+A=", + version = "v0.1.0", + ) + go_repository( + name = "com_github_etcd_io_bbolt", + build_file_proto_mode = "disable_global", + importpath = "github.com/etcd-io/bbolt", + sum = "h1:gSJmxrs37LgTqR/oyJBWok6k6SvXEUerFTbltIhXkBM=", + version = "v1.3.3", + ) + go_repository( + name = "com_github_etcd_io_gofail", + build_file_proto_mode = "disable_global", + importpath = "github.com/etcd-io/gofail", + sum = "h1:Y2I0lxOttdUKz+hNaIdG3FtjuQrTmwXun1opRV65IZc=", + version = "v0.0.0-20190801230047-ad7f989257ca", + ) + go_repository( + name = "com_github_fasthttp_contrib_websocket", + build_file_proto_mode = "disable_global", + importpath = "github.com/fasthttp-contrib/websocket", + sum = "h1:DddqAaWDpywytcG8w/qoQ5sAN8X12d3Z3koB0C3Rxsc=", + version = "v0.0.0-20160511215533-1f3b11f56072", + ) + go_repository( + name = "com_github_fatih_color", + build_file_proto_mode = "disable_global", + importpath = "github.com/fatih/color", + sum = "h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w=", + version = "v1.13.0", + ) + go_repository( + name = "com_github_fatih_structs", + build_file_proto_mode = "disable_global", + importpath = "github.com/fatih/structs", + sum = "h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo=", + version = "v1.1.0", + ) + go_repository( + name = "com_github_felixge_httpsnoop", + build_file_proto_mode = "disable_global", + importpath = "github.com/felixge/httpsnoop", + sum = "h1:lvB5Jl89CsZtGIWuTcDM1E/vkVs49/Ml7JJe07l8SPQ=", + version = "v1.0.1", + ) + go_repository( + name = "com_github_flosch_pongo2", + build_file_proto_mode = "disable_global", + importpath = "github.com/flosch/pongo2", + sum = "h1:GY1+t5Dr9OKADM64SYnQjw/w99HMYvQ0A8/JoUkxVmc=", + version = "v0.0.0-20190707114632-bbf5a6c351f4", + ) + go_repository( + name = "com_github_fogleman_gg", + build_file_proto_mode = "disable_global", + importpath = "github.com/fogleman/gg", + sum = "h1:WXb3TSNmHp2vHoCroCIB1foO/yQ36swABL8aOVeDpgg=", + version = "v1.2.1-0.20190220221249-0403632d5b90", + ) + go_repository( + name = "com_github_form3tech_oss_jwt_go", + build_file_proto_mode = "disable_global", + importpath = "github.com/form3tech-oss/jwt-go", + sum = "h1:/l4kBbb4/vGSsdtB5nUe8L7B9mImVMaBPw9L/0TBHU8=", + version = "v3.2.5+incompatible", + ) + go_repository( + name = "com_github_fortytw2_leaktest", + build_file_proto_mode = "disable_global", + importpath = "github.com/fortytw2/leaktest", + sum = "h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw=", + version = "v1.3.0", + ) + go_repository( + name = "com_github_frankban_quicktest", + build_file_proto_mode = "disable_global", + importpath = "github.com/frankban/quicktest", + sum = "h1:8sXhOn0uLys67V8EsXLc6eszDs8VXWxL3iRvebPhedY=", + version = "v1.11.3", + ) + go_repository( + name = "com_github_fsnotify_fsnotify", + build_file_proto_mode = "disable_global", + importpath = "github.com/fsnotify/fsnotify", + sum = "h1:mZcQUHVQUQWoPXXtuf9yuEXKudkV2sx1E06UadKWpgI=", + version = "v1.5.1", + ) + go_repository( + name = "com_github_fsouza_fake_gcs_server", + build_file_proto_mode = "disable_global", + importpath = "github.com/fsouza/fake-gcs-server", + sum = "h1:XyaGOlqo+R5sjT03x2ymk0xepaQlgwhRLTT2IopW0zA=", + version = "v1.19.0", + ) + go_repository( + name = "com_github_fzipp_gocyclo", + build_file_proto_mode = "disable_global", + importpath = "github.com/fzipp/gocyclo", + sum = "h1:A9UeX3HJSXTBzvHzhqoYVuE0eAhe+aM8XBCCwsPMZOc=", + version = "v0.3.1", + ) + go_repository( + name = "com_github_gavv_httpexpect", + build_file_proto_mode = "disable_global", + importpath = "github.com/gavv/httpexpect", + sum = "h1:1X9kcRshkSKEjNJJxX9Y9mQ5BRfbxU5kORdjhlA1yX8=", + version = "v2.0.0+incompatible", + ) + go_repository( + name = "com_github_getsentry_raven_go", + build_file_proto_mode = "disable_global", + importpath = "github.com/getsentry/raven-go", + sum = "h1:no+xWJRb5ZI7eE8TWgIq1jLulQiIoLG0IfYxv5JYMGs=", + version = "v0.2.0", + ) + go_repository( + name = "com_github_ghemawat_stream", + build_file_proto_mode = "disable_global", + importpath = "github.com/ghemawat/stream", + sum = "h1:r5GgOLGbza2wVHRzK7aAj6lWZjfbAwiu/RDCVOKjRyM=", + version = "v0.0.0-20171120220530-696b145b53b9", + ) + go_repository( + name = "com_github_ghodss_yaml", + build_file_proto_mode = "disable_global", + importpath = "github.com/ghodss/yaml", + sum = "h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_gin_contrib_sse", + build_file_proto_mode = "disable_global", + importpath = "github.com/gin-contrib/sse", + sum = "h1:t8FVkw33L+wilf2QiWkw0UV77qRpcH/JHPKGpKa2E8g=", + version = "v0.0.0-20190301062529-5545eab6dad3", + ) + go_repository( + name = "com_github_gin_gonic_gin", + build_file_proto_mode = "disable_global", + importpath = "github.com/gin-gonic/gin", + sum = "h1:3tMoCCfM7ppqsR0ptz/wi1impNpT7/9wQtMZ8lr1mCQ=", + version = "v1.4.0", + ) + go_repository( + name = "com_github_go_check_check", + build_file_proto_mode = "disable_global", + importpath = "github.com/go-check/check", + sum = "h1:0gkP6mzaMqkmpcJYCFOLkIBwI7xFExG03bbkOkCvUPI=", + version = "v0.0.0-20180628173108-788fd7840127", + ) + go_repository( + name = "com_github_go_errors_errors", + build_file_proto_mode = "disable_global", + importpath = "github.com/go-errors/errors", + sum = "h1:LUHzmkK3GUKUrL/1gfBUxAHzcev3apQlezX/+O7ma6w=", + version = "v1.0.1", + ) + go_repository( + name = "com_github_go_gl_glfw", + build_file_proto_mode = "disable_global", + importpath = "github.com/go-gl/glfw", + sum = "h1:QbL/5oDUmRBzO9/Z7Seo6zf912W/a6Sr4Eu0G/3Jho0=", + version = "v0.0.0-20190409004039-e6da0acd62b1", + ) + go_repository( + name = "com_github_go_gl_glfw_v3_3_glfw", + build_file_proto_mode = "disable_global", + importpath = "github.com/go-gl/glfw/v3.3/glfw", + sum = "h1:WtGNWLvXpe6ZudgnXrq0barxBImvnnJoMEhXAzcbM0I=", + version = "v0.0.0-20200222043503-6f7a984d4dc4", + ) + go_repository( + name = "com_github_go_kit_kit", + build_file_proto_mode = "disable_global", + importpath = "github.com/go-kit/kit", + sum = "h1:wDJmvq38kDhkVxi50ni9ykkdUr1PKgqKOoi01fa0Mdk=", + version = "v0.9.0", + ) + go_repository( + name = "com_github_go_kit_log", + build_file_proto_mode = "disable_global", + importpath = "github.com/go-kit/log", + sum = "h1:DGJh0Sm43HbOeYDNnVZFl8BvcYVvjD5bqYJvp0REbwQ=", + version = "v0.1.0", + ) + go_repository( + name = "com_github_go_logfmt_logfmt", + build_file_proto_mode = "disable_global", + importpath = "github.com/go-logfmt/logfmt", + sum = "h1:TrB8swr/68K7m9CcGut2g3UOihhbcbiMAYiuTXdEih4=", + version = "v0.5.0", + ) + go_repository( + name = "com_github_go_martini_martini", + build_file_proto_mode = "disable_global", + importpath = "github.com/go-martini/martini", + sum = "h1:xveKWz2iaueeTaUgdetzel+U7exyigDYBryyVfV/rZk=", + version = "v0.0.0-20170121215854-22fa46961aab", + ) + go_repository( + name = "com_github_go_ole_go_ole", + build_file_proto_mode = "disable_global", + importpath = "github.com/go-ole/go-ole", + sum = "h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY=", + version = "v1.2.6", + ) + go_repository( + name = "com_github_go_sql_driver_mysql", + build_file_proto_mode = "disable_global", + importpath = "github.com/go-sql-driver/mysql", + sum = "h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE=", + version = "v1.6.0", + ) + go_repository( + name = "com_github_go_stack_stack", + build_file_proto_mode = "disable_global", + importpath = "github.com/go-stack/stack", + sum = "h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk=", + version = "v1.8.0", + ) + go_repository( + name = "com_github_go_task_slim_sprig", + build_file_proto_mode = "disable_global", + importpath = "github.com/go-task/slim-sprig", + sum = "h1:p104kn46Q8WdvHunIJ9dAyjPVtrBPhSr3KT2yUst43I=", + version = "v0.0.0-20210107165309-348f09dbbbc0", + ) + go_repository( + name = "com_github_gobwas_httphead", + build_file_proto_mode = "disable_global", + importpath = "github.com/gobwas/httphead", + sum = "h1:s+21KNqlpePfkah2I+gwHF8xmJWRjooY+5248k6m4A0=", + version = "v0.0.0-20180130184737-2c6c146eadee", + ) + go_repository( + name = "com_github_gobwas_pool", + build_file_proto_mode = "disable_global", + importpath = "github.com/gobwas/pool", + sum = "h1:QEmUOlnSjWtnpRGHF3SauEiOsy82Cup83Vf2LcMlnc8=", + version = "v0.2.0", + ) + go_repository( + name = "com_github_gobwas_ws", + build_file_proto_mode = "disable_global", + importpath = "github.com/gobwas/ws", + sum = "h1:CoAavW/wd/kulfZmSIBt6p24n4j7tHgNVCjsfHVNUbo=", + version = "v1.0.2", + ) + go_repository( + name = "com_github_godbus_dbus_v5", + build_file_proto_mode = "disable_global", + importpath = "github.com/godbus/dbus/v5", + sum = "h1:9349emZab16e7zQvpmsbtjc18ykshndd8y2PG3sgJbA=", + version = "v5.0.4", + ) + go_repository( + name = "com_github_gogo_googleapis", + build_file_proto_mode = "disable_global", + importpath = "github.com/gogo/googleapis", + sum = "h1:dR8+Q0uO5S2ZBcs2IH6VBKYwSxPo2vYCYq0ot0mu7xA=", + version = "v0.0.0-20180223154316-0cd9801be74a", + ) + go_repository( + name = "com_github_gogo_protobuf", + build_file_proto_mode = "disable_global", + importpath = "github.com/gogo/protobuf", + sum = "h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=", + version = "v1.3.2", + ) + go_repository( + name = "com_github_gogo_status", + build_file_proto_mode = "disable_global", + importpath = "github.com/gogo/status", + sum = "h1:+eIkrewn5q6b30y+g/BJINVVdi2xH7je5MPJ3ZPK3JA=", + version = "v1.1.0", + ) + go_repository( + name = "com_github_goji_httpauth", + build_file_proto_mode = "disable", + importpath = "github.com/goji/httpauth", + sum = "h1:lBXNCxVENCipq4D1Is42JVOP4eQjlB8TQ6H69Yx5J9Q=", + version = "v0.0.0-20160601135302-2da839ab0f4d", + ) + + go_repository( + name = "com_github_golang_freetype", + build_file_proto_mode = "disable_global", + importpath = "github.com/golang/freetype", + sum = "h1:DACJavvAHhabrF08vX0COfcOBJRhZ8lUbR+ZWIs0Y5g=", + version = "v0.0.0-20170609003504-e2365dfdc4a0", + ) + go_repository( + name = "com_github_golang_glog", + build_file_proto_mode = "disable_global", + importpath = "github.com/golang/glog", + sum = "h1:nfP3RFugxnNRyKgeWd4oI1nYvXpxrx8ck8ZrcizshdQ=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_golang_groupcache", + build_file_proto_mode = "disable_global", + importpath = "github.com/golang/groupcache", + sum = "h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=", + version = "v0.0.0-20210331224755-41bb18bfe9da", + ) + go_repository( + name = "com_github_golang_mock", + build_file_proto_mode = "disable_global", + importpath = "github.com/golang/mock", + sum = "h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc=", + version = "v1.6.0", + ) + go_repository( + name = "com_github_golang_protobuf", + build_file_proto_mode = "disable_global", + importpath = "github.com/golang/protobuf", + patch_args = ["-p1"], + patches = [ + "//build/patches:com_github_golang_protobuf.patch", + ], + sum = "h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw=", + version = "v1.5.2", + ) + go_repository( + name = "com_github_golang_snappy", + build_file_proto_mode = "disable_global", + importpath = "github.com/golang/snappy", + sum = "h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM=", + version = "v0.0.4", + ) + go_repository( + name = "com_github_golangci_prealloc", + build_file_proto_mode = "disable", + importpath = "github.com/golangci/prealloc", + sum = "h1:leSNB7iYzLYSSx3J/s5sVf4Drkc68W2wm4Ixh/mr0us=", + version = "v0.0.0-20180630174525-215b22d4de21", + ) + + go_repository( + name = "com_github_gomodule_redigo", + build_file_proto_mode = "disable_global", + importpath = "github.com/gomodule/redigo", + sum = "h1:y0Wmhvml7cGnzPa9nocn/fMraMH/lMDdeG+rkx4VgYY=", + version = "v1.7.1-0.20190724094224-574c33c3df38", + ) + go_repository( + name = "com_github_google_btree", + build_file_proto_mode = "disable_global", + importpath = "github.com/google/btree", + sum = "h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4=", + version = "v1.0.1", + ) + go_repository( + name = "com_github_google_go_cmp", + build_file_proto_mode = "disable_global", + importpath = "github.com/google/go-cmp", + sum = "h1:81/ik6ipDQS2aGcBfIN5dHDB36BwrStyeAQquSYCV4o=", + version = "v0.5.7", + ) + go_repository( + name = "com_github_google_go_querystring", + build_file_proto_mode = "disable_global", + importpath = "github.com/google/go-querystring", + sum = "h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_google_gofuzz", + build_file_proto_mode = "disable_global", + importpath = "github.com/google/gofuzz", + sum = "h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_google_martian", + build_file_proto_mode = "disable_global", + importpath = "github.com/google/martian", + sum = "h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no=", + version = "v2.1.0+incompatible", + ) + go_repository( + name = "com_github_google_martian_v3", + build_file_proto_mode = "disable_global", + importpath = "github.com/google/martian/v3", + sum = "h1:d8MncMlErDFTwQGBK1xhv026j9kqhvw1Qv9IbWT1VLQ=", + version = "v3.2.1", + ) + go_repository( + name = "com_github_google_pprof", + build_file_proto_mode = "disable_global", + importpath = "github.com/google/pprof", + sum = "h1:c8EUapQFi+kjzedr4c6WqbwMdmB95+oDBWZ5XFHFYxY=", + version = "v0.0.0-20211122183932-1daafda22083", + ) + go_repository( + name = "com_github_google_renameio", + build_file_proto_mode = "disable_global", + importpath = "github.com/google/renameio", + sum = "h1:GOZbcHa3HfsPKPlmyPyN2KEohoMXOhdMbHrvbpl2QaA=", + version = "v0.1.0", + ) + go_repository( + name = "com_github_google_uuid", + build_file_proto_mode = "disable_global", + importpath = "github.com/google/uuid", + sum = "h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y=", + version = "v1.1.2", + ) + go_repository( + name = "com_github_googleapis_gax_go_v2", + build_file_proto_mode = "disable_global", + importpath = "github.com/googleapis/gax-go/v2", + sum = "h1:dp3bWCh+PPO1zjRRiCSczJav13sBvG4UhNyVTa1KqdU=", + version = "v2.1.1", + ) + go_repository( + name = "com_github_gopherjs_gopherjs", + build_file_proto_mode = "disable_global", + importpath = "github.com/gopherjs/gopherjs", + sum = "h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8=", + version = "v0.0.0-20181017120253-0766667cb4d1", + ) + go_repository( + name = "com_github_gordonklaus_ineffassign", + build_file_proto_mode = "disable", + importpath = "github.com/gordonklaus/ineffassign", + sum = "h1:PVRE9d4AQKmbelZ7emNig1+NT27DUmKZn5qXxfio54U=", + version = "v0.0.0-20210914165742-4cc7213b9bc8", + ) + + go_repository( + name = "com_github_gorilla_handlers", + build_file_proto_mode = "disable_global", + importpath = "github.com/gorilla/handlers", + sum = "h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH4=", + version = "v1.5.1", + ) + go_repository( + name = "com_github_gorilla_mux", + build_file_proto_mode = "disable_global", + importpath = "github.com/gorilla/mux", + sum = "h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI=", + version = "v1.8.0", + ) + go_repository( + name = "com_github_gorilla_securecookie", + build_file_proto_mode = "disable_global", + importpath = "github.com/gorilla/securecookie", + sum = "h1:miw7JPhV+b/lAHSXz4qd/nN9jRiAFV5FwjeKyCS8BvQ=", + version = "v1.1.1", + ) + go_repository( + name = "com_github_gorilla_sessions", + build_file_proto_mode = "disable_global", + importpath = "github.com/gorilla/sessions", + sum = "h1:DHd3rPN5lE3Ts3D8rKkQ8x/0kqfeNmBAaiSi+o7FsgI=", + version = "v1.2.1", + ) + go_repository( + name = "com_github_gorilla_websocket", + build_file_proto_mode = "disable_global", + importpath = "github.com/gorilla/websocket", + sum = "h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc=", + version = "v1.4.2", + ) + go_repository( + name = "com_github_grpc_ecosystem_go_grpc_middleware", + build_file_proto_mode = "disable_global", + importpath = "github.com/grpc-ecosystem/go-grpc-middleware", + sum = "h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw=", + version = "v1.3.0", + ) + go_repository( + name = "com_github_grpc_ecosystem_go_grpc_prometheus", + build_file_proto_mode = "disable_global", + importpath = "github.com/grpc-ecosystem/go-grpc-prometheus", + sum = "h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho=", + version = "v1.2.0", + ) + go_repository( + name = "com_github_grpc_ecosystem_grpc_gateway", + build_file_proto_mode = "disable_global", + build_naming_convention = "go_default_library", + importpath = "github.com/grpc-ecosystem/grpc-gateway", + patch_args = ["-p1"], + patches = [ + "//build/patches:com_github_grpc_ecosystem_grpc_gateway.patch", + ], + sum = "h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo=", + version = "v1.16.0", + ) + go_repository( + name = "com_github_hashicorp_consul_api", + build_file_proto_mode = "disable_global", + importpath = "github.com/hashicorp/consul/api", + sum = "h1:BNQPM9ytxj6jbjjdRPioQ94T6YXriSopn0i8COv6SRA=", + version = "v1.1.0", + ) + go_repository( + name = "com_github_hashicorp_consul_sdk", + build_file_proto_mode = "disable_global", + importpath = "github.com/hashicorp/consul/sdk", + sum = "h1:LnuDWGNsoajlhGyHJvuWW6FVqRl8JOTPqS6CPTsYjhY=", + version = "v0.1.1", + ) + go_repository( + name = "com_github_hashicorp_errwrap", + build_file_proto_mode = "disable_global", + importpath = "github.com/hashicorp/errwrap", + sum = "h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_hashicorp_go_cleanhttp", + build_file_proto_mode = "disable_global", + importpath = "github.com/hashicorp/go-cleanhttp", + sum = "h1:dH3aiDG9Jvb5r5+bYHsikaOUIpcM0xvgMXVoDkXMzJM=", + version = "v0.5.1", + ) + go_repository( + name = "com_github_hashicorp_go_immutable_radix", + build_file_proto_mode = "disable_global", + importpath = "github.com/hashicorp/go-immutable-radix", + sum = "h1:AKDB1HM5PWEA7i4nhcpwOrO2byshxBjXVn/J/3+z5/0=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_hashicorp_go_msgpack", + build_file_proto_mode = "disable_global", + importpath = "github.com/hashicorp/go-msgpack", + sum = "h1:zKjpN5BK/P5lMYrLmBHdBULWbJ0XpYR+7NGzqkZzoD4=", + version = "v0.5.3", + ) + go_repository( + name = "com_github_hashicorp_go_multierror", + build_file_proto_mode = "disable_global", + importpath = "github.com/hashicorp/go-multierror", + sum = "h1:iVjPR7a6H0tWELX5NxNe7bYopibicUzc7uPribsnS6o=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_hashicorp_go_net", + build_file_proto_mode = "disable_global", + importpath = "github.com/hashicorp/go.net", + sum = "h1:sNCoNyDEvN1xa+X0baata4RdcpKwcMS6DH+xwfqPgjw=", + version = "v0.0.1", + ) + go_repository( + name = "com_github_hashicorp_go_rootcerts", + build_file_proto_mode = "disable_global", + importpath = "github.com/hashicorp/go-rootcerts", + sum = "h1:Rqb66Oo1X/eSV1x66xbDccZjhJigjg0+e82kpwzSwCI=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_hashicorp_go_sockaddr", + build_file_proto_mode = "disable_global", + importpath = "github.com/hashicorp/go-sockaddr", + sum = "h1:GeH6tui99pF4NJgfnhp+L6+FfobzVW3Ah46sLo0ICXs=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_hashicorp_go_syslog", + build_file_proto_mode = "disable_global", + importpath = "github.com/hashicorp/go-syslog", + sum = "h1:KaodqZuhUoZereWVIYmpUgZysurB1kBLX2j0MwMrUAE=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_hashicorp_go_uuid", + build_file_proto_mode = "disable_global", + importpath = "github.com/hashicorp/go-uuid", + sum = "h1:cfejS+Tpcp13yd5nYHWDI6qVCny6wyX2Mt5SGur2IGE=", + version = "v1.0.2", + ) + go_repository( + name = "com_github_hashicorp_go_version", + build_file_proto_mode = "disable_global", + importpath = "github.com/hashicorp/go-version", + sum = "h1:3vNe/fWF5CBgRIguda1meWhsZHy3m8gCJ5wx+dIzX/E=", + version = "v1.2.0", + ) + go_repository( + name = "com_github_hashicorp_golang_lru", + build_file_proto_mode = "disable_global", + importpath = "github.com/hashicorp/golang-lru", + sum = "h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU=", + version = "v0.5.1", + ) + go_repository( + name = "com_github_hashicorp_hcl", + build_file_proto_mode = "disable_global", + importpath = "github.com/hashicorp/hcl", + sum = "h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_hashicorp_logutils", + build_file_proto_mode = "disable_global", + importpath = "github.com/hashicorp/logutils", + sum = "h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_hashicorp_mdns", + build_file_proto_mode = "disable_global", + importpath = "github.com/hashicorp/mdns", + sum = "h1:WhIgCr5a7AaVH6jPUwjtRuuE7/RDufnUvzIr48smyxs=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_hashicorp_memberlist", + build_file_proto_mode = "disable_global", + importpath = "github.com/hashicorp/memberlist", + sum = "h1:EmmoJme1matNzb+hMpDuR/0sbJSUisxyqBGG676r31M=", + version = "v0.1.3", + ) + go_repository( + name = "com_github_hashicorp_serf", + build_file_proto_mode = "disable_global", + importpath = "github.com/hashicorp/serf", + sum = "h1:YZ7UKsJv+hKjqGVUUbtE3HNj79Eln2oQ75tniF6iPt0=", + version = "v0.8.2", + ) + go_repository( + name = "com_github_hdrhistogram_hdrhistogram_go", + build_file_proto_mode = "disable_global", + importpath = "github.com/HdrHistogram/hdrhistogram-go", + sum = "h1:5IcZpTvzydCQeHzK4Ef/D5rrSqwxob0t8PQPMybUNFM=", + version = "v1.1.2", + ) + go_repository( + name = "com_github_hpcloud_tail", + build_file_proto_mode = "disable_global", + importpath = "github.com/hpcloud/tail", + sum = "h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_hydrogen18_memlistener", + build_file_proto_mode = "disable_global", + importpath = "github.com/hydrogen18/memlistener", + sum = "h1:EPRgaDqXpLFUJLXZdGLnBTy1l6CLiNAPnvn2l+kHit0=", + version = "v0.0.0-20141126152155-54553eb933fb", + ) + go_repository( + name = "com_github_iancoleman_strcase", + build_file_proto_mode = "disable_global", + importpath = "github.com/iancoleman/strcase", + sum = "h1:05I4QRnGpI0m37iZQRuskXh+w77mr6Z41lwQzuHLwW0=", + version = "v0.2.0", + ) + go_repository( + name = "com_github_ianlancetaylor_demangle", + build_file_proto_mode = "disable_global", + importpath = "github.com/ianlancetaylor/demangle", + sum = "h1:uGg2frlt3IcT7kbV6LEp5ONv4vmoO2FW4qSO+my/aoM=", + version = "v0.0.0-20210905161508-09a460cdf81d", + ) + go_repository( + name = "com_github_imkira_go_interpol", + build_file_proto_mode = "disable_global", + importpath = "github.com/imkira/go-interpol", + sum = "h1:KIiKr0VSG2CUW1hl1jpiyuzuJeKUUpC8iM1AIE7N1Vk=", + version = "v1.1.0", + ) + go_repository( + name = "com_github_inconshreveable_mousetrap", + build_file_proto_mode = "disable_global", + importpath = "github.com/inconshreveable/mousetrap", + sum = "h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_iris_contrib_blackfriday", + build_file_proto_mode = "disable_global", + importpath = "github.com/iris-contrib/blackfriday", + sum = "h1:o5sHQHHm0ToHUlAJSTjW9UWicjJSDDauOOQ2AHuIVp4=", + version = "v2.0.0+incompatible", + ) + go_repository( + name = "com_github_iris_contrib_go_uuid", + build_file_proto_mode = "disable_global", + importpath = "github.com/iris-contrib/go.uuid", + sum = "h1:XZubAYg61/JwnJNbZilGjf3b3pB80+OQg2qf6c8BfWE=", + version = "v2.0.0+incompatible", + ) + go_repository( + name = "com_github_iris_contrib_i18n", + build_file_proto_mode = "disable_global", + importpath = "github.com/iris-contrib/i18n", + sum = "h1:Kyp9KiXwsyZRTeoNjgVCrWks7D8ht9+kg6yCjh8K97o=", + version = "v0.0.0-20171121225848-987a633949d0", + ) + go_repository( + name = "com_github_iris_contrib_schema", + build_file_proto_mode = "disable_global", + importpath = "github.com/iris-contrib/schema", + sum = "h1:10g/WnoRR+U+XXHWKBHeNy/+tZmM2kcAVGLOsz+yaDA=", + version = "v0.0.1", + ) + go_repository( + name = "com_github_jcmturner_aescts_v2", + build_file_proto_mode = "disable_global", + importpath = "github.com/jcmturner/aescts/v2", + sum = "h1:9YKLH6ey7H4eDBXW8khjYslgyqG2xZikXP0EQFKrle8=", + version = "v2.0.0", + ) + go_repository( + name = "com_github_jcmturner_dnsutils_v2", + build_file_proto_mode = "disable_global", + importpath = "github.com/jcmturner/dnsutils/v2", + sum = "h1:lltnkeZGL0wILNvrNiVCR6Ro5PGU/SeBvVO/8c/iPbo=", + version = "v2.0.0", + ) + go_repository( + name = "com_github_jcmturner_gofork", + build_file_proto_mode = "disable_global", + importpath = "github.com/jcmturner/gofork", + sum = "h1:J7uCkflzTEhUZ64xqKnkDxq3kzc96ajM1Gli5ktUem8=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_jcmturner_goidentity_v6", + build_file_proto_mode = "disable_global", + importpath = "github.com/jcmturner/goidentity/v6", + sum = "h1:VKnZd2oEIMorCTsFBnJWbExfNN7yZr3EhJAxwOkZg6o=", + version = "v6.0.1", + ) + go_repository( + name = "com_github_jcmturner_gokrb5_v8", + build_file_proto_mode = "disable_global", + importpath = "github.com/jcmturner/gokrb5/v8", + sum = "h1:6ZIM6b/JJN0X8UM43ZOM6Z4SJzla+a/u7scXFJzodkA=", + version = "v8.4.2", + ) + go_repository( + name = "com_github_jcmturner_rpc_v2", + build_file_proto_mode = "disable_global", + importpath = "github.com/jcmturner/rpc/v2", + sum = "h1:7FXXj8Ti1IaVFpSAziCZWNzbNuZmnvw/i6CqLNdWfZY=", + version = "v2.0.3", + ) + go_repository( + name = "com_github_jedib0t_go_pretty_v6", + build_file_proto_mode = "disable_global", + importpath = "github.com/jedib0t/go-pretty/v6", + sum = "h1:o3McN0rQ4X+IU+HduppSp9TwRdGLRW2rhJXy9CJaCRw=", + version = "v6.2.2", + ) + go_repository( + name = "com_github_jeffail_gabs_v2", + build_file_proto_mode = "disable_global", + importpath = "github.com/Jeffail/gabs/v2", + sum = "h1:ANfZYjpMlfTTKebycu4X1AgkVWumFVDYQl7JwOr4mDk=", + version = "v2.5.1", + ) + go_repository( + name = "com_github_jmespath_go_jmespath", + build_file_proto_mode = "disable_global", + importpath = "github.com/jmespath/go-jmespath", + sum = "h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=", + version = "v0.4.0", + ) + go_repository( + name = "com_github_jmespath_go_jmespath_internal_testify", + build_file_proto_mode = "disable_global", + importpath = "github.com/jmespath/go-jmespath/internal/testify", + sum = "h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8=", + version = "v1.5.1", + ) + go_repository( + name = "com_github_joho_sqltocsv", + build_file_proto_mode = "disable_global", + importpath = "github.com/joho/sqltocsv", + sum = "h1:Zrb0IbuLOGHL7nrO2WrcuNWgDTlzFv3zY69QMx4ggQE=", + version = "v0.0.0-20210428211105-a6d6801d59df", + ) + go_repository( + name = "com_github_joker_hpp", + build_file_proto_mode = "disable_global", + importpath = "github.com/Joker/hpp", + sum = "h1:65+iuJYdRXv/XyN62C1uEmmOx3432rNG/rKlX6V7Kkc=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_joker_jade", + build_file_proto_mode = "disable_global", + importpath = "github.com/Joker/jade", + sum = "h1:mreN1m/5VJ/Zc3b4pzj9qU6D9SRQ6Vm+3KfI328t3S8=", + version = "v1.0.1-0.20190614124447-d475f43051e7", + ) + go_repository( + name = "com_github_jonboulle_clockwork", + build_file_proto_mode = "disable_global", + importpath = "github.com/jonboulle/clockwork", + sum = "h1:UOGuzwb1PwsrDAObMuhUnj0p5ULPj8V/xJ7Kx9qUBdQ=", + version = "v0.2.2", + ) + go_repository( + name = "com_github_jpillora_backoff", + build_file_proto_mode = "disable_global", + importpath = "github.com/jpillora/backoff", + sum = "h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_json_iterator_go", + build_file_proto_mode = "disable_global", + importpath = "github.com/json-iterator/go", + sum = "h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=", + version = "v1.1.12", + ) + go_repository( + name = "com_github_jstemmer_go_junit_report", + build_file_proto_mode = "disable_global", + importpath = "github.com/jstemmer/go-junit-report", + sum = "h1:6QPYqodiu3GuPL+7mfx+NwDdp2eTkp9IfEUpgAwUN0o=", + version = "v0.9.1", + ) + go_repository( + name = "com_github_jtolds_gls", + build_file_proto_mode = "disable_global", + importpath = "github.com/jtolds/gls", + sum = "h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo=", + version = "v4.20.0+incompatible", + ) + go_repository( + name = "com_github_juju_errors", + build_file_proto_mode = "disable_global", + importpath = "github.com/juju/errors", + sum = "h1:rhqTjzJlm7EbkELJDKMTU7udov+Se0xZkWmugr6zGok=", + version = "v0.0.0-20181118221551-089d3ea4e4d5", + ) + go_repository( + name = "com_github_juju_loggo", + build_file_proto_mode = "disable_global", + importpath = "github.com/juju/loggo", + sum = "h1:MK144iBQF9hTSwBW/9eJm034bVoG30IshVm688T2hi8=", + version = "v0.0.0-20180524022052-584905176618", + ) + go_repository( + name = "com_github_juju_testing", + build_file_proto_mode = "disable_global", + importpath = "github.com/juju/testing", + sum = "h1:WQM1NildKThwdP7qWrNAFGzp4ijNLw8RlgENkaI4MJs=", + version = "v0.0.0-20180920084828-472a3e8b2073", + ) + go_repository( + name = "com_github_julienschmidt_httprouter", + build_file_proto_mode = "disable_global", + importpath = "github.com/julienschmidt/httprouter", + sum = "h1:U0609e9tgbseu3rBINet9P48AI/D3oJs4dN7jwJOQ1U=", + version = "v1.3.0", + ) + go_repository( + name = "com_github_jung_kurt_gofpdf", + build_file_proto_mode = "disable_global", + importpath = "github.com/jung-kurt/gofpdf", + sum = "h1:PJr+ZMXIecYc1Ey2zucXdR73SMBtgjPgwa31099IMv0=", + version = "v1.0.3-0.20190309125859-24315acbbda5", + ) + go_repository( + name = "com_github_k0kubun_colorstring", + build_file_proto_mode = "disable_global", + importpath = "github.com/k0kubun/colorstring", + sum = "h1:uC1QfSlInpQF+M0ao65imhwqKnz3Q2z/d8PWZRMQvDM=", + version = "v0.0.0-20150214042306-9440f1994b88", + ) + go_repository( + name = "com_github_kataras_golog", + build_file_proto_mode = "disable_global", + importpath = "github.com/kataras/golog", + sum = "h1:J7Dl82843nbKQDrQM/abbNJZvQjS6PfmkkffhOTXEpM=", + version = "v0.0.9", + ) + go_repository( + name = "com_github_kataras_iris_v12", + build_file_proto_mode = "disable_global", + importpath = "github.com/kataras/iris/v12", + sum = "h1:Wo5S7GMWv5OAzJmvFTvss/C4TS1W0uo6LkDlSymT4rM=", + version = "v12.0.1", + ) + go_repository( + name = "com_github_kataras_neffos", + build_file_proto_mode = "disable_global", + importpath = "github.com/kataras/neffos", + sum = "h1:O06dvQlxjdWvzWbm2Bq+Si6psUhvSmEctAMk9Xujqms=", + version = "v0.0.10", + ) + go_repository( + name = "com_github_kataras_pio", + build_file_proto_mode = "disable_global", + importpath = "github.com/kataras/pio", + sum = "h1:V5Rs9ztEWdp58oayPq/ulmlqJJZeJP6pP79uP3qjcao=", + version = "v0.0.0-20190103105442-ea782b38602d", + ) + go_repository( + name = "com_github_kisielk_errcheck", + build_file_proto_mode = "disable_global", + importpath = "github.com/kisielk/errcheck", + sum = "h1:e8esj/e4R+SAOwFwN+n3zr0nYeCyeweozKfO23MvHzY=", + version = "v1.5.0", + ) + go_repository( + name = "com_github_kisielk_gotool", + build_file_proto_mode = "disable_global", + importpath = "github.com/kisielk/gotool", + sum = "h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_klauspost_compress", + build_file_proto_mode = "disable_global", + importpath = "github.com/klauspost/compress", + sum = "h1:y9FcTHGyrebwfP0ZZqFiaxTaiDnUrGkJkI+f583BL1A=", + version = "v1.15.1", + ) + go_repository( + name = "com_github_klauspost_cpuid", + build_file_proto_mode = "disable_global", + importpath = "github.com/klauspost/cpuid", + sum = "h1:5JNjFYYQrZeKRJ0734q51WCEEn2huer72Dc7K+R/b6s=", + version = "v1.3.1", + ) + go_repository( + name = "com_github_konsorten_go_windows_terminal_sequences", + build_file_proto_mode = "disable_global", + importpath = "github.com/konsorten/go-windows-terminal-sequences", + sum = "h1:CE8S1cTafDpPvMhIxNJKvHsGVBgn1xWYf1NbHQhywc8=", + version = "v1.0.3", + ) + go_repository( + name = "com_github_kr_logfmt", + build_file_proto_mode = "disable_global", + importpath = "github.com/kr/logfmt", + sum = "h1:T+h1c/A9Gawja4Y9mFVWj2vyii2bbUNDw3kt9VxK2EY=", + version = "v0.0.0-20140226030751-b84e30acd515", + ) + go_repository( + name = "com_github_kr_pretty", + build_file_proto_mode = "disable_global", + importpath = "github.com/kr/pretty", + sum = "h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0=", + version = "v0.3.0", + ) + go_repository( + name = "com_github_kr_pty", + build_file_proto_mode = "disable_global", + importpath = "github.com/kr/pty", + sum = "h1:VkoXIwSboBpnk99O/KFauAEILuNHv5DVFKZMBN/gUgw=", + version = "v1.1.1", + ) + go_repository( + name = "com_github_kr_text", + build_file_proto_mode = "disable_global", + importpath = "github.com/kr/text", + sum = "h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=", + version = "v0.2.0", + ) + go_repository( + name = "com_github_kyoh86_exportloopref", + build_file_proto_mode = "disable", + importpath = "github.com/kyoh86/exportloopref", + sum = "h1:5Ry/at+eFdkX9Vsdw3qU4YkvGtzuVfzT4X7S77LoN/M=", + version = "v0.1.8", + ) + + go_repository( + name = "com_github_labstack_echo_v4", + build_file_proto_mode = "disable_global", + importpath = "github.com/labstack/echo/v4", + sum = "h1:z0BZoArY4FqdpUEl+wlHp4hnr/oSR6MTmQmv8OHSoww=", + version = "v4.1.11", + ) + go_repository( + name = "com_github_labstack_gommon", + build_file_proto_mode = "disable_global", + importpath = "github.com/labstack/gommon", + sum = "h1:JEeO0bvc78PKdyHxloTKiF8BD5iGrH8T6MSeGvSgob0=", + version = "v0.3.0", + ) + go_repository( + name = "com_github_lufia_plan9stats", + build_file_proto_mode = "disable_global", + importpath = "github.com/lufia/plan9stats", + sum = "h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4=", + version = "v0.0.0-20211012122336-39d0f177ccd0", + ) + go_repository( + name = "com_github_magiconair_properties", + build_file_proto_mode = "disable_global", + importpath = "github.com/magiconair/properties", + sum = "h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4=", + version = "v1.8.1", + ) + go_repository( + name = "com_github_mattn_go_colorable", + build_file_proto_mode = "disable_global", + importpath = "github.com/mattn/go-colorable", + sum = "h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40=", + version = "v0.1.12", + ) + go_repository( + name = "com_github_mattn_go_isatty", + build_file_proto_mode = "disable_global", + importpath = "github.com/mattn/go-isatty", + sum = "h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y=", + version = "v0.0.14", + ) + go_repository( + name = "com_github_mattn_go_runewidth", + build_file_proto_mode = "disable_global", + importpath = "github.com/mattn/go-runewidth", + sum = "h1:Y41i/hVW3Pgwr8gV+J23B9YEY0zxjptBuCWEaxmAOow=", + version = "v0.0.12", + ) + go_repository( + name = "com_github_mattn_goveralls", + build_file_proto_mode = "disable_global", + importpath = "github.com/mattn/goveralls", + sum = "h1:7eJB6EqsPhRVxvwEXGnqdO2sJI0PTsrWoTMXEk9/OQc=", + version = "v0.0.2", + ) + go_repository( + name = "com_github_matttproud_golang_protobuf_extensions", + build_file_proto_mode = "disable_global", + importpath = "github.com/matttproud/golang_protobuf_extensions", + sum = "h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU=", + version = "v1.0.1", + ) + go_repository( + name = "com_github_mediocregopher_mediocre_go_lib", + build_file_proto_mode = "disable_global", + importpath = "github.com/mediocregopher/mediocre-go-lib", + sum = "h1:3dQJqqDouawQgl3gBE1PNHKFkJYGEuFb1DbSlaxdosE=", + version = "v0.0.0-20181029021733-cb65787f37ed", + ) + go_repository( + name = "com_github_mediocregopher_radix_v3", + build_file_proto_mode = "disable_global", + importpath = "github.com/mediocregopher/radix/v3", + sum = "h1:oacPXPKHJg0hcngVVrdtTnfGJiS+PtwoQwTBZGFlV4k=", + version = "v3.3.0", + ) + go_repository( + name = "com_github_microcosm_cc_bluemonday", + build_file_proto_mode = "disable_global", + importpath = "github.com/microcosm-cc/bluemonday", + sum = "h1:5lPfLTTAvAbtS0VqT+94yOtFnGfUWYyx0+iToC3Os3s=", + version = "v1.0.2", + ) + go_repository( + name = "com_github_miekg_dns", + build_file_proto_mode = "disable_global", + importpath = "github.com/miekg/dns", + sum = "h1:9jZdLNd/P4+SfEJ0TNyxYpsK8N4GtfylBLqtbYN1sbA=", + version = "v1.0.14", + ) + go_repository( + name = "com_github_mitchellh_cli", + build_file_proto_mode = "disable_global", + importpath = "github.com/mitchellh/cli", + sum = "h1:iGBIsUe3+HZ/AD/Vd7DErOt5sU9fa8Uj7A2s1aggv1Y=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_mitchellh_go_homedir", + build_file_proto_mode = "disable_global", + importpath = "github.com/mitchellh/go-homedir", + sum = "h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=", + version = "v1.1.0", + ) + go_repository( + name = "com_github_mitchellh_go_testing_interface", + build_file_proto_mode = "disable_global", + importpath = "github.com/mitchellh/go-testing-interface", + sum = "h1:fzU/JVNcaqHQEcVFAKeR41fkiLdIPrefOvVG1VZ96U0=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_mitchellh_gox", + build_file_proto_mode = "disable_global", + importpath = "github.com/mitchellh/gox", + sum = "h1:lfGJxY7ToLJQjHHwi0EX6uYBdK78egf954SQl13PQJc=", + version = "v0.4.0", + ) + go_repository( + name = "com_github_mitchellh_iochan", + build_file_proto_mode = "disable_global", + importpath = "github.com/mitchellh/iochan", + sum = "h1:C+X3KsSTLFVBr/tK1eYN/vs4rJcvsiLU338UhYPJWeY=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_mitchellh_mapstructure", + build_file_proto_mode = "disable_global", + importpath = "github.com/mitchellh/mapstructure", + sum = "h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE=", + version = "v1.1.2", + ) + go_repository( + name = "com_github_modern_go_concurrent", + build_file_proto_mode = "disable_global", + importpath = "github.com/modern-go/concurrent", + sum = "h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=", + version = "v0.0.0-20180306012644-bacd9c7ef1dd", + ) + go_repository( + name = "com_github_modern_go_reflect2", + build_file_proto_mode = "disable_global", + importpath = "github.com/modern-go/reflect2", + sum = "h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=", + version = "v1.0.2", + ) + go_repository( + name = "com_github_modocache_gover", + build_file_proto_mode = "disable_global", + importpath = "github.com/modocache/gover", + sum = "h1:8Q0qkMVC/MmWkpIdlvZgcv2o2jrlF6zqVOh7W5YHdMA=", + version = "v0.0.0-20171022184752-b58185e213c5", + ) + go_repository( + name = "com_github_moul_http2curl", + build_file_proto_mode = "disable_global", + importpath = "github.com/moul/http2curl", + sum = "h1:dRMWoAtb+ePxMlLkrCbAqh4TlPHXvoGUSQ323/9Zahs=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_mwitkow_go_conntrack", + build_file_proto_mode = "disable_global", + importpath = "github.com/mwitkow/go-conntrack", + sum = "h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU=", + version = "v0.0.0-20190716064945-2f068394615f", + ) + go_repository( + name = "com_github_nats_io_nats_go", + build_file_proto_mode = "disable_global", + importpath = "github.com/nats-io/nats.go", + sum = "h1:6lF/f1/NN6kzUDBz6pyvQDEXO39jqXcWRLu/tKjtOUQ=", + version = "v1.8.1", + ) + go_repository( + name = "com_github_nats_io_nkeys", + build_file_proto_mode = "disable_global", + importpath = "github.com/nats-io/nkeys", + sum = "h1:+qM7QpgXnvDDixitZtQUBDY9w/s9mu1ghS+JIbsrx6M=", + version = "v0.0.2", + ) + go_repository( + name = "com_github_nats_io_nuid", + build_file_proto_mode = "disable_global", + importpath = "github.com/nats-io/nuid", + sum = "h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw=", + version = "v1.0.1", + ) + go_repository( + name = "com_github_ncw_directio", + build_file_proto_mode = "disable_global", + importpath = "github.com/ncw/directio", + sum = "h1:JSUBhdjEvVaJvOoyPAbcW0fnd0tvRXD76wEfZ1KcQz4=", + version = "v1.0.5", + ) + go_repository( + name = "com_github_ngaut_pools", + build_file_proto_mode = "disable_global", + importpath = "github.com/ngaut/pools", + sum = "h1:7KAv7KMGTTqSmYZtNdcNTgsos+vFzULLwyElndwn+5c=", + version = "v0.0.0-20180318154953-b7bc8c42aac7", + ) + go_repository( + name = "com_github_ngaut_sync2", + build_file_proto_mode = "disable_global", + importpath = "github.com/ngaut/sync2", + sum = "h1:K0Fn+DoFqNqktdZtdV3bPQ/0cuYh2H4rkg0tytX/07k=", + version = "v0.0.0-20141008032647-7a24ed77b2ef", + ) + go_repository( + name = "com_github_niemeyer_pretty", + build_file_proto_mode = "disable_global", + importpath = "github.com/niemeyer/pretty", + sum = "h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=", + version = "v0.0.0-20200227124842-a10e7caefd8e", + ) + go_repository( + name = "com_github_nxadm_tail", + build_file_proto_mode = "disable_global", + importpath = "github.com/nxadm/tail", + sum = "h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=", + version = "v1.4.8", + ) + go_repository( + name = "com_github_oklog_ulid", + build_file_proto_mode = "disable_global", + importpath = "github.com/oklog/ulid", + sum = "h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4=", + version = "v1.3.1", + ) + go_repository( + name = "com_github_olekukonko_tablewriter", + build_file_proto_mode = "disable_global", + importpath = "github.com/olekukonko/tablewriter", + sum = "h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec=", + version = "v0.0.5", + ) + go_repository( + name = "com_github_oneofone_xxhash", + build_file_proto_mode = "disable_global", + importpath = "github.com/OneOfOne/xxhash", + sum = "h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE=", + version = "v1.2.2", + ) + go_repository( + name = "com_github_onsi_ginkgo", + build_file_proto_mode = "disable_global", + importpath = "github.com/onsi/ginkgo", + sum = "h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE=", + version = "v1.16.5", + ) + go_repository( + name = "com_github_onsi_ginkgo_v2", + build_file_proto_mode = "disable_global", + importpath = "github.com/onsi/ginkgo/v2", + sum = "h1:CcuG/HvWNkkaqCUpJifQY8z7qEMBJya6aLPx6ftGyjQ=", + version = "v2.0.0", + ) + go_repository( + name = "com_github_onsi_gomega", + build_file_proto_mode = "disable_global", + importpath = "github.com/onsi/gomega", + sum = "h1:M1GfJqGRrBrrGGsbxzV5dqM2U2ApXefZCQpkukxYRLE=", + version = "v1.18.1", + ) + go_repository( + name = "com_github_opentracing_basictracer_go", + build_file_proto_mode = "disable_global", + importpath = "github.com/opentracing/basictracer-go", + sum = "h1:YyUAhaEfjoWXclZVJ9sGoNct7j4TVk7lZWlQw5UXuoo=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_opentracing_opentracing_go", + build_file_proto_mode = "disable_global", + importpath = "github.com/opentracing/opentracing-go", + sum = "h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs=", + version = "v1.2.0", + ) + go_repository( + name = "com_github_pascaldekloe_goe", + build_file_proto_mode = "disable_global", + importpath = "github.com/pascaldekloe/goe", + sum = "h1:Lgl0gzECD8GnQ5QCWA8o6BtfL6mDH5rQgM4/fX3avOs=", + version = "v0.0.0-20180627143212-57f6aae5913c", + ) + go_repository( + name = "com_github_pborman_getopt", + build_file_proto_mode = "disable_global", + importpath = "github.com/pborman/getopt", + sum = "h1:7822vZ646Atgxkp3tqrSufChvAAYgIy+iFEGpQntwlI=", + version = "v0.0.0-20180729010549-6fdd0a2c7117", + ) + go_repository( + name = "com_github_pelletier_go_toml", + build_file_proto_mode = "disable_global", + importpath = "github.com/pelletier/go-toml", + sum = "h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc=", + version = "v1.2.0", + ) + go_repository( + name = "com_github_phayes_freeport", + build_file_proto_mode = "disable_global", + importpath = "github.com/phayes/freeport", + sum = "h1:JhzVVoYvbOACxoUmOs6V/G4D5nPVUW73rKvXxP4XUJc=", + version = "v0.0.0-20180830031419-95f893ade6f2", + ) + go_repository( + name = "com_github_pierrec_lz4", + build_file_proto_mode = "disable_global", + importpath = "github.com/pierrec/lz4", + sum = "h1:9UY3+iC23yxF0UfGaYrGplQ+79Rg+h/q9FV9ix19jjM=", + version = "v2.6.1+incompatible", + ) + go_repository( + name = "com_github_pingcap_badger", + build_file_proto_mode = "disable_global", + importpath = "github.com/pingcap/badger", + sum = "h1:MKVFZuqFvAMiDtv3AbihOQ6rY5IE8LWflI1BuZ/hF0Y=", + version = "v1.5.1-0.20220314162537-ab58fbf40580", + ) + go_repository( + name = "com_github_pingcap_check", + build_file_proto_mode = "disable_global", + importpath = "github.com/pingcap/check", + sum = "h1:HVl5539r48eA+uDuX/ziBmQCxzT1pGrzWbKuXT46Bq0=", + version = "v0.0.0-20211026125417-57bd13f7b5f0", + ) + go_repository( + name = "com_github_pingcap_errors", + build_file_proto_mode = "disable_global", + importpath = "github.com/pingcap/errors", + sum = "h1:xpW9bvK+HuuTmyFqUwr+jcCvpVkK7sumiz+ko5H9eq4=", + version = "v0.11.5-0.20211224045212-9687c2b0f87c", + ) + go_repository( + name = "com_github_pingcap_failpoint", + build_file_proto_mode = "disable_global", + importpath = "github.com/pingcap/failpoint", + sum = "h1:kJolJWbyadVeL8RKBlqmXQR7FRKPsIeU85TUYyhbhiQ=", + version = "v0.0.0-20220423142525-ae43b7f4e5c3", + ) + go_repository( + name = "com_github_pingcap_fn", + build_file_proto_mode = "disable_global", + importpath = "github.com/pingcap/fn", + sum = "h1:Pe2LbxRmbTfAoKJ65bZLmhahmvHm7n9DUxGRQT00208=", + version = "v0.0.0-20200306044125-d5540d389059", + ) + go_repository( + name = "com_github_pingcap_goleveldb", + build_file_proto_mode = "disable_global", + importpath = "github.com/pingcap/goleveldb", + sum = "h1:surzm05a8C9dN8dIUmo4Be2+pMRb6f55i+UIYrluu2E=", + version = "v0.0.0-20191226122134-f82aafb29989", + ) + go_repository( + name = "com_github_pingcap_kvproto", + build_file_proto_mode = "disable_global", + importpath = "github.com/pingcap/kvproto", + sum = "h1:dsMpneacHyuVslSVndgUfJKrXFNG7VPdXip2ulG6glo=", + version = "v0.0.0-20220517085838-12e2f5a9d167", + ) + go_repository( + name = "com_github_pingcap_log", + build_file_proto_mode = "disable_global", + importpath = "github.com/pingcap/log", + sum = "h1:ELiPxACz7vdo1qAvvaWJg1NrYFoY6gqAh/+Uo6aXdD8=", + version = "v1.1.0", + ) + go_repository( + name = "com_github_pingcap_sysutil", + build_file_proto_mode = "disable_global", + importpath = "github.com/pingcap/sysutil", + sum = "h1:HYbcxtnkN3s5tqrZ/z3eJS4j3Db8wMphEm1q10lY/TM=", + version = "v0.0.0-20220114020952-ea68d2dbf5b4", + ) + go_repository( + name = "com_github_pingcap_tipb", + build_file_proto_mode = "disable_global", + importpath = "github.com/pingcap/tipb", + sum = "h1:L4nZwfYSrIsWPAZR8zMwHaNQJy0Rjy3Od6Smj5mlOms=", + version = "v0.0.0-20220602075447-4847c5d68e73", + ) + go_repository( + name = "com_github_pkg_browser", + build_file_proto_mode = "disable_global", + importpath = "github.com/pkg/browser", + sum = "h1:49lOXmGaUpV9Fz3gd7TFZY106KVlPVa5jcYD1gaQf98=", + version = "v0.0.0-20180916011732-0a3d74bf9ce4", + ) + go_repository( + name = "com_github_pkg_errors", + build_file_proto_mode = "disable_global", + importpath = "github.com/pkg/errors", + sum = "h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=", + version = "v0.9.1", + ) + go_repository( + name = "com_github_pkg_profile", + build_file_proto_mode = "disable_global", + importpath = "github.com/pkg/profile", + sum = "h1:F++O52m40owAmADcojzM+9gyjmMOY/T4oYJkgFDH8RE=", + version = "v1.2.1", + ) + go_repository( + name = "com_github_pmezard_go_difflib", + build_file_proto_mode = "disable_global", + importpath = "github.com/pmezard/go-difflib", + sum = "h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_posener_complete", + build_file_proto_mode = "disable_global", + importpath = "github.com/posener/complete", + sum = "h1:ccV59UEOTzVDnDUEFdT95ZzHVZ+5+158q8+SJb2QV5w=", + version = "v1.1.1", + ) + go_repository( + name = "com_github_power_devops_perfstat", + build_file_proto_mode = "disable_global", + importpath = "github.com/power-devops/perfstat", + sum = "h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw=", + version = "v0.0.0-20210106213030-5aafc221ea8c", + ) + go_repository( + name = "com_github_prometheus_client_golang", + build_file_proto_mode = "disable_global", + importpath = "github.com/prometheus/client_golang", + sum = "h1:51L9cDoUHVrXx4zWYlcLQIZ+d+VXHgqnYKkIuq4g/34=", + version = "v1.12.2", + ) + go_repository( + name = "com_github_prometheus_client_model", + build_file_proto_mode = "disable_global", + importpath = "github.com/prometheus/client_model", + sum = "h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M=", + version = "v0.2.0", + ) + go_repository( + name = "com_github_prometheus_common", + build_file_proto_mode = "disable_global", + importpath = "github.com/prometheus/common", + sum = "h1:hWIdL3N2HoUx3B8j3YN9mWor0qhY/NlEKZEaXxuIRh4=", + version = "v0.32.1", + ) + go_repository( + name = "com_github_prometheus_procfs", + build_file_proto_mode = "disable_global", + importpath = "github.com/prometheus/procfs", + sum = "h1:4jVXhlkAyzOScmCkXBTOLRLTz8EeU+eyjrwB/EPq0VU=", + version = "v0.7.3", + ) + go_repository( + name = "com_github_prometheus_tsdb", + build_file_proto_mode = "disable_global", + importpath = "github.com/prometheus/tsdb", + sum = "h1:YZcsG11NqnK4czYLrWd9mpEuAJIHVQLwdrleYfszMAA=", + version = "v0.7.1", + ) + go_repository( + name = "com_github_rcrowley_go_metrics", + build_file_proto_mode = "disable_global", + importpath = "github.com/rcrowley/go-metrics", + sum = "h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM=", + version = "v0.0.0-20201227073835-cf1acfcdf475", + ) + go_repository( + name = "com_github_remyoudompheng_bigfft", + build_file_proto_mode = "disable_global", + importpath = "github.com/remyoudompheng/bigfft", + sum = "h1:OdAsTTz6OkFY5QxjkYwrChwuRruF69c169dPK26NUlk=", + version = "v0.0.0-20200410134404-eec4a21b6bb0", + ) + go_repository( + name = "com_github_rivo_uniseg", + build_file_proto_mode = "disable_global", + importpath = "github.com/rivo/uniseg", + sum = "h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY=", + version = "v0.2.0", + ) + go_repository( + name = "com_github_rogpeppe_fastuuid", + build_file_proto_mode = "disable_global", + importpath = "github.com/rogpeppe/fastuuid", + sum = "h1:Ppwyp6VYCF1nvBTXL3trRso7mXMlRrw9ooo375wvi2s=", + version = "v1.2.0", + ) + go_repository( + name = "com_github_rogpeppe_go_internal", + build_file_proto_mode = "disable_global", + importpath = "github.com/rogpeppe/go-internal", + sum = "h1:/FiVV8dS/e+YqF2JvO3yXRFbBLTIuSDkuC7aBOAvL+k=", + version = "v1.6.1", + ) + go_repository( + name = "com_github_russross_blackfriday", + build_file_proto_mode = "disable_global", + importpath = "github.com/russross/blackfriday", + sum = "h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo=", + version = "v1.5.2", + ) + go_repository( + name = "com_github_russross_blackfriday_v2", + build_file_proto_mode = "disable_global", + importpath = "github.com/russross/blackfriday/v2", + sum = "h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=", + version = "v2.1.0", + ) + go_repository( + name = "com_github_ryanuber_columnize", + build_file_proto_mode = "disable_global", + importpath = "github.com/ryanuber/columnize", + sum = "h1:j1Wcmh8OrK4Q7GXY+V7SVSY8nUWQxHW5TkBe7YUl+2s=", + version = "v2.1.0+incompatible", + ) + go_repository( + name = "com_github_sclevine_agouti", + build_file_proto_mode = "disable_global", + importpath = "github.com/sclevine/agouti", + sum = "h1:8IBJS6PWz3uTlMP3YBIR5f+KAldcGuOeFkFbUWfBgK4=", + version = "v3.0.0+incompatible", + ) + go_repository( + name = "com_github_sean_seed", + build_file_proto_mode = "disable_global", + importpath = "github.com/sean-/seed", + sum = "h1:nn5Wsu0esKSJiIVhscUtVbo7ada43DJhG55ua/hjS5I=", + version = "v0.0.0-20170313163322-e2103e2c3529", + ) + go_repository( + name = "com_github_sergi_go_diff", + build_file_proto_mode = "disable_global", + importpath = "github.com/sergi/go-diff", + sum = "h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0=", + version = "v1.1.0", + ) + go_repository( + name = "com_github_shirou_gopsutil_v3", + build_file_proto_mode = "disable_global", + importpath = "github.com/shirou/gopsutil/v3", + sum = "h1:VoGxEW2hpmz0Vt3wUvHIl9fquzYLNpVpgNNB7pGJimA=", + version = "v3.21.12", + ) + go_repository( + name = "com_github_shopify_goreferrer", + build_file_proto_mode = "disable_global", + importpath = "github.com/Shopify/goreferrer", + sum = "h1:WDC6ySpJzbxGWFh4aMxFFC28wwGp5pEuoTtvA4q/qQ4=", + version = "v0.0.0-20181106222321-ec9c9a553398", + ) + go_repository( + name = "com_github_shopify_sarama", + build_file_proto_mode = "disable_global", + importpath = "github.com/Shopify/sarama", + sum = "h1:ARid8o8oieau9XrHI55f/L3EoRAhm9px6sonbD7yuUE=", + version = "v1.29.0", + ) + go_repository( + name = "com_github_shopify_toxiproxy", + build_file_proto_mode = "disable_global", + importpath = "github.com/Shopify/toxiproxy", + sum = "h1:TKdv8HiTLgE5wdJuEML90aBgNWsokNbMijUGhmcoBJc=", + version = "v2.1.4+incompatible", + ) + go_repository( + name = "com_github_shurcool_httpfs", + build_file_proto_mode = "disable_global", + importpath = "github.com/shurcooL/httpfs", + sum = "h1:bUGsEnyNbVPw06Bs80sCeARAlK8lhwqGyi6UT8ymuGk=", + version = "v0.0.0-20190707220628-8d4bc4ba7749", + ) + go_repository( + name = "com_github_shurcool_httpgzip", + build_file_proto_mode = "disable_global", + importpath = "github.com/shurcooL/httpgzip", + sum = "h1:mj/nMDAwTBiaCqMEs4cYCqF7pO6Np7vhy1D1wcQGz+E=", + version = "v0.0.0-20190720172056-320755c1c1b0", + ) + go_repository( + name = "com_github_shurcool_sanitized_anchor_name", + build_file_proto_mode = "disable_global", + importpath = "github.com/shurcooL/sanitized_anchor_name", + sum = "h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_shurcool_vfsgen", + build_file_proto_mode = "disable_global", + importpath = "github.com/shurcooL/vfsgen", + sum = "h1:pXY9qYc/MP5zdvqWEUH6SjNiu7VhSjuVFTFiTcphaLU=", + version = "v0.0.0-20200824052919-0d455de96546", + ) + go_repository( + name = "com_github_sirupsen_logrus", + build_file_proto_mode = "disable_global", + importpath = "github.com/sirupsen/logrus", + sum = "h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE=", + version = "v1.8.1", + ) + go_repository( + name = "com_github_smartystreets_assertions", + build_file_proto_mode = "disable_global", + importpath = "github.com/smartystreets/assertions", + sum = "h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM=", + version = "v0.0.0-20180927180507-b2de0cb4f26d", + ) + go_repository( + name = "com_github_smartystreets_goconvey", + build_file_proto_mode = "disable_global", + importpath = "github.com/smartystreets/goconvey", + sum = "h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s=", + version = "v1.6.4", + ) + go_repository( + name = "com_github_soheilhy_cmux", + build_file_proto_mode = "disable_global", + importpath = "github.com/soheilhy/cmux", + sum = "h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js=", + version = "v0.1.5", + ) + go_repository( + name = "com_github_spaolacci_murmur3", + build_file_proto_mode = "disable_global", + importpath = "github.com/spaolacci/murmur3", + sum = "h1:qLC7fQah7D6K1B0ujays3HV9gkFtllcxhzImRR7ArPQ=", + version = "v0.0.0-20180118202830-f09979ecbc72", + ) + go_repository( + name = "com_github_spf13_afero", + build_file_proto_mode = "disable_global", + importpath = "github.com/spf13/afero", + sum = "h1:5jhuqJyZCZf2JRofRvN/nIFgIWNzPa3/Vz8mYylgbWc=", + version = "v1.2.2", + ) + go_repository( + name = "com_github_spf13_cast", + build_file_proto_mode = "disable_global", + importpath = "github.com/spf13/cast", + sum = "h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8=", + version = "v1.3.0", + ) + go_repository( + name = "com_github_spf13_cobra", + build_file_proto_mode = "disable_global", + importpath = "github.com/spf13/cobra", + sum = "h1:y+wJpx64xcgO1V+RcnwW0LEHxTKRi2ZDPSBjWnrg88Q=", + version = "v1.4.0", + ) + go_repository( + name = "com_github_spf13_jwalterweatherman", + build_file_proto_mode = "disable_global", + importpath = "github.com/spf13/jwalterweatherman", + sum = "h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_spf13_pflag", + build_file_proto_mode = "disable_global", + importpath = "github.com/spf13/pflag", + sum = "h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=", + version = "v1.0.5", + ) + go_repository( + name = "com_github_spf13_viper", + build_file_proto_mode = "disable_global", + importpath = "github.com/spf13/viper", + sum = "h1:xVKxvI7ouOI5I+U9s2eeiUfMaWBVoXA3AWskkrqK0VM=", + version = "v1.7.0", + ) + go_repository( + name = "com_github_stathat_consistent", + build_file_proto_mode = "disable", + importpath = "github.com/stathat/consistent", + sum = "h1:ZFJ1QTRn8npNBKW065raSZ8xfOqhpb8vLOkfp4CcL/U=", + version = "v1.0.0", + ) + + go_repository( + name = "com_github_stretchr_objx", + build_file_proto_mode = "disable_global", + importpath = "github.com/stretchr/objx", + sum = "h1:2vfRuCMp5sSVIDSqO8oNnWJq7mPa6KVP3iPIwFBuy8A=", + version = "v0.1.1", + ) + go_repository( + name = "com_github_stretchr_testify", + build_file_proto_mode = "disable_global", + importpath = "github.com/stretchr/testify", + sum = "h1:rh3VYpfvzXRbJ90ymx1yfhGl/wq8ac2m/cUbao61kwY=", + version = "v1.7.2-0.20220504104629-106ec21d14df", + ) + go_repository( + name = "com_github_subosito_gotenv", + build_file_proto_mode = "disable_global", + importpath = "github.com/subosito/gotenv", + sum = "h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s=", + version = "v1.2.0", + ) + go_repository( + name = "com_github_tiancaiamao_appdash", + build_file_proto_mode = "disable_global", + importpath = "github.com/tiancaiamao/appdash", + sum = "h1:mbAskLJ0oJfDRtkanvQPiooDH8HvJ2FBh+iKT/OmiQQ=", + version = "v0.0.0-20181126055449-889f96f722a2", + ) + go_repository( + name = "com_github_tikv_client_go_v2", + build_file_proto_mode = "disable_global", + importpath = "github.com/tikv/client-go/v2", + sum = "h1:N5ivsNkDQDgimY0ZVqMnWqXjEnxy5uFChoB4wPIKpPI=", + version = "v2.0.1-0.20220613112734-be31f33ba03b", + ) + go_repository( + name = "com_github_tikv_pd_client", + build_file_proto_mode = "disable_global", + importpath = "github.com/tikv/pd/client", + sum = "h1:jxgmKOscXSjaFEKQGRyY5qOpK8hLqxs2irb/uDJMtwk=", + version = "v0.0.0-20220307081149-841fa61e9710", + ) + go_repository( + name = "com_github_tklauser_go_sysconf", + build_file_proto_mode = "disable_global", + importpath = "github.com/tklauser/go-sysconf", + sum = "h1:JeUVdAOWhhxVcU6Eqr/ATFHgXk/mmiItdKeJPev3vTo=", + version = "v0.3.9", + ) + go_repository( + name = "com_github_tklauser_numcpus", + build_file_proto_mode = "disable_global", + importpath = "github.com/tklauser/numcpus", + sum = "h1:ILuRUQBtssgnxw0XXIjKUC56fgnOrFoQQ/4+DeU2biQ=", + version = "v0.3.0", + ) + go_repository( + name = "com_github_tmc_grpc_websocket_proxy", + build_file_proto_mode = "disable_global", + importpath = "github.com/tmc/grpc-websocket-proxy", + sum = "h1:uruHq4dN7GR16kFc5fp3d1RIYzJW5onx8Ybykw2YQFA=", + version = "v0.0.0-20201229170055-e5319fda7802", + ) + go_repository( + name = "com_github_twmb_murmur3", + build_file_proto_mode = "disable_global", + importpath = "github.com/twmb/murmur3", + sum = "h1:D83U0XYKcHRYwYIpBKf3Pks91Z0Byda/9SJ8B6EMRcA=", + version = "v1.1.3", + ) + go_repository( + name = "com_github_uber_jaeger_client_go", + build_file_proto_mode = "disable_global", + importpath = "github.com/uber/jaeger-client-go", + sum = "h1:NHcubEkVbahf9t3p75TOCR83gdUHXjRJvjoBh1yACsM=", + version = "v2.22.1+incompatible", + ) + go_repository( + name = "com_github_uber_jaeger_lib", + build_file_proto_mode = "disable_global", + importpath = "github.com/uber/jaeger-lib", + sum = "h1:td4jdvLcExb4cBISKIpHuGoVXh+dVKhn2Um6rjCsSsg=", + version = "v2.4.1+incompatible", + ) + go_repository( + name = "com_github_ugorji_go", + build_file_proto_mode = "disable_global", + importpath = "github.com/ugorji/go", + sum = "h1:j4s+tAvLfL3bZyefP2SEWmhBzmuIlH/eqNuPdFPgngw=", + version = "v1.1.4", + ) + go_repository( + name = "com_github_ugorji_go_codec", + build_file_proto_mode = "disable_global", + importpath = "github.com/ugorji/go/codec", + sum = "h1:3SVOIvH7Ae1KRYyQWRjXWJEA9sS/c/pjvH++55Gr648=", + version = "v0.0.0-20181204163529-d75b2dcb6bc8", + ) + go_repository( + name = "com_github_urfave_negroni", + build_file_proto_mode = "disable_global", + importpath = "github.com/urfave/negroni", + sum = "h1:kIimOitoypq34K7TG7DUaJ9kq/N4Ofuwi1sjz0KipXc=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_valyala_bytebufferpool", + build_file_proto_mode = "disable_global", + importpath = "github.com/valyala/bytebufferpool", + sum = "h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_valyala_fasthttp", + build_file_proto_mode = "disable_global", + importpath = "github.com/valyala/fasthttp", + sum = "h1:uWF8lgKmeaIewWVPwi4GRq2P6+R46IgYZdxWtM+GtEY=", + version = "v1.6.0", + ) + go_repository( + name = "com_github_valyala_fasttemplate", + build_file_proto_mode = "disable_global", + importpath = "github.com/valyala/fasttemplate", + sum = "h1:tY9CJiPnMXf1ERmG2EyK7gNUd+c6RKGD0IfU8WdUSz8=", + version = "v1.0.1", + ) + go_repository( + name = "com_github_valyala_tcplisten", + build_file_proto_mode = "disable_global", + importpath = "github.com/valyala/tcplisten", + sum = "h1:0R4NLDRDZX6JcmhJgXi5E4b8Wg84ihbmUKp/GvSPEzc=", + version = "v0.0.0-20161114210144-ceec8f93295a", + ) + go_repository( + name = "com_github_vividcortex_ewma", + build_file_proto_mode = "disable_global", + importpath = "github.com/VividCortex/ewma", + sum = "h1:MnEK4VOv6n0RSY4vtRe3h11qjxL3+t0B8yOL8iMXdcM=", + version = "v1.1.1", + ) + go_repository( + name = "com_github_wangjohn_quickselect", + build_file_proto_mode = "disable_global", + importpath = "github.com/wangjohn/quickselect", + sum = "h1:9DDCDwOyEy/gId+IEMrFHLuQ5R/WV0KNxWLler8X2OY=", + version = "v0.0.0-20161129230411-ed8402a42d5f", + ) + go_repository( + name = "com_github_xdg_scram", + build_file_proto_mode = "disable_global", + importpath = "github.com/xdg/scram", + sum = "h1:nTadYh2Fs4BK2xdldEa2g5bbaZp0/+1nJMMPtPxS/to=", + version = "v1.0.3", + ) + go_repository( + name = "com_github_xdg_stringprep", + build_file_proto_mode = "disable_global", + importpath = "github.com/xdg/stringprep", + sum = "h1:cmL5Enob4W83ti/ZHuZLuKD/xqJfus4fVPwE+/BDm+4=", + version = "v1.0.3", + ) + go_repository( + name = "com_github_xeipuuv_gojsonpointer", + build_file_proto_mode = "disable_global", + importpath = "github.com/xeipuuv/gojsonpointer", + sum = "h1:J9EGpcZtP0E/raorCMxlFGSTBrsSlaDGf3jU/qvAE2c=", + version = "v0.0.0-20180127040702-4e3ac2762d5f", + ) + go_repository( + name = "com_github_xeipuuv_gojsonreference", + build_file_proto_mode = "disable_global", + importpath = "github.com/xeipuuv/gojsonreference", + sum = "h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0=", + version = "v0.0.0-20180127040603-bd5ef7bd5415", + ) + go_repository( + name = "com_github_xeipuuv_gojsonschema", + build_file_proto_mode = "disable_global", + importpath = "github.com/xeipuuv/gojsonschema", + sum = "h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74=", + version = "v1.2.0", + ) + go_repository( + name = "com_github_xiang90_probing", + build_file_proto_mode = "disable_global", + importpath = "github.com/xiang90/probing", + sum = "h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8=", + version = "v0.0.0-20190116061207-43a291ad63a2", + ) + go_repository( + name = "com_github_xitongsys_parquet_go", + build_file_proto_mode = "disable_global", + importpath = "github.com/xitongsys/parquet-go", + sum = "h1:tBbuFCtyJNKT+BFAv6qjvTFpVdy97IYNaBwGUXifIUs=", + version = "v1.5.5-0.20201110004701-b09c49d6d457", + ) + go_repository( + name = "com_github_xitongsys_parquet_go_source", + build_file_proto_mode = "disable_global", + importpath = "github.com/xitongsys/parquet-go-source", + sum = "h1:a742S4V5A15F93smuVxA60LQWsrCnN8bKeWDBARU1/k=", + version = "v0.0.0-20200817004010-026bad9b25d0", + ) + go_repository( + name = "com_github_xordataexchange_crypt", + build_file_proto_mode = "disable_global", + importpath = "github.com/xordataexchange/crypt", + sum = "h1:ESFSdwYZvkeru3RtdrYueztKhOBCSAAzS4Gf+k0tEow=", + version = "v0.0.3-0.20170626215501-b2862e3d0a77", + ) + go_repository( + name = "com_github_yalp_jsonpath", + build_file_proto_mode = "disable_global", + importpath = "github.com/yalp/jsonpath", + sum = "h1:6fRhSjgLCkTD3JnJxvaJ4Sj+TYblw757bqYgZaOq5ZY=", + version = "v0.0.0-20180802001716-5cc68e5049a0", + ) + go_repository( + name = "com_github_yudai_gojsondiff", + build_file_proto_mode = "disable_global", + importpath = "github.com/yudai/gojsondiff", + sum = "h1:27cbfqXLVEJ1o8I6v3y9lg8Ydm53EKqHXAOMxEGlCOA=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_yudai_golcs", + build_file_proto_mode = "disable_global", + importpath = "github.com/yudai/golcs", + sum = "h1:BHyfKlQyqbsFN5p3IfnEUduWvb9is428/nNb5L3U01M=", + version = "v0.0.0-20170316035057-ecda9a501e82", + ) + go_repository( + name = "com_github_yudai_pp", + build_file_proto_mode = "disable_global", + importpath = "github.com/yudai/pp", + sum = "h1:Q4//iY4pNF6yPLZIigmvcl7k/bPgrcTPIFIcmawg5bI=", + version = "v2.0.1+incompatible", + ) + go_repository( + name = "com_github_yuin_goldmark", + build_file_proto_mode = "disable_global", + importpath = "github.com/yuin/goldmark", + sum = "h1:/vn0k+RBvwlxEmP5E7SZMqNxPhfMVFEJiykr15/0XKM=", + version = "v1.4.1", + ) + go_repository( + name = "com_github_yusufpapurcu_wmi", + build_file_proto_mode = "disable_global", + importpath = "github.com/yusufpapurcu/wmi", + sum = "h1:KBNDSne4vP5mbSWnJbO+51IMOXJB67QiYCSBrubbPRg=", + version = "v1.2.2", + ) + go_repository( + name = "com_google_cloud_go", + build_file_proto_mode = "disable_global", + importpath = "cloud.google.com/go", + sum = "h1:t9Iw5QH5v4XtlEQaCtUY7x6sCABps8sW0acw7e2WQ6Y=", + version = "v0.100.2", + ) + go_repository( + name = "com_google_cloud_go_bigquery", + build_file_proto_mode = "disable_global", + importpath = "cloud.google.com/go/bigquery", + sum = "h1:PQcPefKFdaIzjQFbiyOgAqyx8q5djaE7x9Sqe712DPA=", + version = "v1.8.0", + ) + go_repository( + name = "com_google_cloud_go_compute", + build_file_proto_mode = "disable_global", + importpath = "cloud.google.com/go/compute", + sum = "h1:EKki8sSdvDU0OO9mAXGwPXOTOgPz2l08R0/IutDH11I=", + version = "v1.2.0", + ) + go_repository( + name = "com_google_cloud_go_datastore", + build_file_proto_mode = "disable_global", + importpath = "cloud.google.com/go/datastore", + sum = "h1:/May9ojXjRkPBNVrq+oWLqmWCkr4OU5uRY29bu0mRyQ=", + version = "v1.1.0", + ) + go_repository( + name = "com_google_cloud_go_firestore", + build_file_proto_mode = "disable_global", + importpath = "cloud.google.com/go/firestore", + sum = "h1:9x7Bx0A9R5/M9jibeJeZWqjeVEIxYW9fZYqB9a70/bY=", + version = "v1.1.0", + ) + go_repository( + name = "com_google_cloud_go_iam", + build_file_proto_mode = "disable_global", + importpath = "cloud.google.com/go/iam", + sum = "h1:4CapQyNFjiksks1/x7jsvsygFPhihslYk5GptIrlX68=", + version = "v0.1.1", + ) + go_repository( + name = "com_google_cloud_go_pubsub", + build_file_proto_mode = "disable_global", + importpath = "cloud.google.com/go/pubsub", + sum = "h1:ukjixP1wl0LpnZ6LWtZJ0mX5tBmjp1f8Sqer8Z2OMUU=", + version = "v1.3.1", + ) + go_repository( + name = "com_google_cloud_go_storage", + build_file_proto_mode = "disable_global", + importpath = "cloud.google.com/go/storage", + sum = "h1:HwnT2u2D309SFDHQII6m18HlrCi3jAXhUMTLOWXYH14=", + version = "v1.21.0", + ) + go_repository( + name = "com_shuralyov_dmitri_gpu_mtl", + build_file_proto_mode = "disable_global", + importpath = "dmitri.shuralyov.com/gpu/mtl", + sum = "h1:VpgP7xuJadIUuKccphEpTJnWhS2jkQyMt6Y7pJCD7fY=", + version = "v0.0.0-20190408044501-666a987793e9", + ) + go_repository( + name = "com_sourcegraph_sourcegraph_appdash", + build_file_proto_mode = "disable_global", + importpath = "sourcegraph.com/sourcegraph/appdash", + sum = "h1:ucqkfpjg9WzSUubAO62csmucvxl4/JeW3F4I4909XkM=", + version = "v0.0.0-20190731080439-ebfcffb1b5c0", + ) + go_repository( + name = "com_sourcegraph_sourcegraph_appdash_data", + build_file_proto_mode = "disable_global", + importpath = "sourcegraph.com/sourcegraph/appdash-data", + sum = "h1:e1sMhtVq9AfcEy8AXNb8eSg6gbzfdpYhoNqnPJa+GzI=", + version = "v0.0.0-20151005221446-73f23eafcf67", + ) + go_repository( + name = "com_stathat_c_consistent", + build_file_proto_mode = "disable", + importpath = "stathat.com/c/consistent", + sum = "h1:ezyc51EGcRPJUxfHGSgJjWzJdj3NiMU9pNfLNGiXV0c=", + version = "v1.0.0", + ) + + go_repository( + name = "in_gopkg_alecthomas_kingpin_v2", + build_file_proto_mode = "disable_global", + importpath = "gopkg.in/alecthomas/kingpin.v2", + sum = "h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc=", + version = "v2.2.6", + ) + go_repository( + name = "in_gopkg_check_v1", + build_file_proto_mode = "disable_global", + importpath = "gopkg.in/check.v1", + sum = "h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=", + version = "v1.0.0-20201130134442-10cb98267c6c", + ) + go_repository( + name = "in_gopkg_errgo_v2", + build_file_proto_mode = "disable_global", + importpath = "gopkg.in/errgo.v2", + sum = "h1:0vLT13EuvQ0hNvakwLuFZ/jYrLp5F3kcWHXdRggjCE8=", + version = "v2.1.0", + ) + go_repository( + name = "in_gopkg_fsnotify_v1", + build_file_proto_mode = "disable_global", + importpath = "gopkg.in/fsnotify.v1", + sum = "h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4=", + version = "v1.4.7", + ) + go_repository( + name = "in_gopkg_go_playground_assert_v1", + build_file_proto_mode = "disable_global", + importpath = "gopkg.in/go-playground/assert.v1", + sum = "h1:xoYuJVE7KT85PYWrN730RguIQO0ePzVRfFMXadIrXTM=", + version = "v1.2.1", + ) + go_repository( + name = "in_gopkg_go_playground_validator_v8", + build_file_proto_mode = "disable_global", + importpath = "gopkg.in/go-playground/validator.v8", + sum = "h1:lFB4DoMU6B626w8ny76MV7VX6W2VHct2GVOI3xgiMrQ=", + version = "v8.18.2", + ) + go_repository( + name = "in_gopkg_ini_v1", + build_file_proto_mode = "disable_global", + importpath = "gopkg.in/ini.v1", + sum = "h1:XfR1dOYubytKy4Shzc2LHrrGhU0lDCfDGG1yLPmpgsI=", + version = "v1.66.2", + ) + go_repository( + name = "in_gopkg_jcmturner_aescts_v1", + build_file_proto_mode = "disable_global", + importpath = "gopkg.in/jcmturner/aescts.v1", + sum = "h1:cVVZBK2b1zY26haWB4vbBiZrfFQnfbTVrE3xZq6hrEw=", + version = "v1.0.1", + ) + go_repository( + name = "in_gopkg_jcmturner_dnsutils_v1", + build_file_proto_mode = "disable_global", + importpath = "gopkg.in/jcmturner/dnsutils.v1", + sum = "h1:cIuC1OLRGZrld+16ZJvvZxVJeKPsvd5eUIvxfoN5hSM=", + version = "v1.0.1", + ) + go_repository( + name = "in_gopkg_jcmturner_goidentity_v3", + build_file_proto_mode = "disable_global", + importpath = "gopkg.in/jcmturner/goidentity.v3", + sum = "h1:1duIyWiTaYvVx3YX2CYtpJbUFd7/UuPYCfgXtQ3VTbI=", + version = "v3.0.0", + ) + go_repository( + name = "in_gopkg_jcmturner_gokrb5_v7", + build_file_proto_mode = "disable_global", + importpath = "gopkg.in/jcmturner/gokrb5.v7", + sum = "h1:0709Jtq/6QXEuWRfAm260XqlpcwL1vxtO1tUE2qK8Z4=", + version = "v7.3.0", + ) + go_repository( + name = "in_gopkg_jcmturner_rpc_v1", + build_file_proto_mode = "disable_global", + importpath = "gopkg.in/jcmturner/rpc.v1", + sum = "h1:QHIUxTX1ISuAv9dD2wJ9HWQVuWDX/Zc0PfeC2tjc4rU=", + version = "v1.1.0", + ) + go_repository( + name = "in_gopkg_mgo_v2", + build_file_proto_mode = "disable_global", + importpath = "gopkg.in/mgo.v2", + sum = "h1:xcEWjVhvbDy+nHP67nPDDpbYrY+ILlfndk4bRioVHaU=", + version = "v2.0.0-20180705113604-9856a29383ce", + ) + go_repository( + name = "in_gopkg_natefinch_lumberjack_v2", + build_file_proto_mode = "disable_global", + importpath = "gopkg.in/natefinch/lumberjack.v2", + sum = "h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8=", + version = "v2.0.0", + ) + go_repository( + name = "in_gopkg_resty_v1", + build_file_proto_mode = "disable_global", + importpath = "gopkg.in/resty.v1", + sum = "h1:CuXP0Pjfw9rOuY6EP+UvtNvt5DSqHpIxILZKT/quCZI=", + version = "v1.12.0", + ) + go_repository( + name = "in_gopkg_tomb_v1", + build_file_proto_mode = "disable_global", + importpath = "gopkg.in/tomb.v1", + sum = "h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=", + version = "v1.0.0-20141024135613-dd632973f1e7", + ) + go_repository( + name = "in_gopkg_yaml_v2", + build_file_proto_mode = "disable_global", + importpath = "gopkg.in/yaml.v2", + sum = "h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=", + version = "v2.4.0", + ) + go_repository( + name = "in_gopkg_yaml_v3", + build_file_proto_mode = "disable_global", + importpath = "gopkg.in/yaml.v3", + sum = "h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo=", + version = "v3.0.0-20210107192922-496545a6307b", + ) + go_repository( + name = "io_etcd_go_bbolt", + build_file_proto_mode = "disable_global", + importpath = "go.etcd.io/bbolt", + sum = "h1:/ecaJf0sk1l4l6V4awd65v2C3ILy7MSj+s/x1ADCIMU=", + version = "v1.3.6", + ) + go_repository( + name = "io_etcd_go_etcd_api_v3", + build_file_proto_mode = "disable", + importpath = "go.etcd.io/etcd/api/v3", + patch_args = ["-p2"], + patches = [ + "//build/patches:io_etcd_go_etcd_api_v3.patch", + ], + sum = "h1:tXok5yLlKyuQ/SXSjtqHc4uzNaMqZi2XsoSPr/LlJXI=", + version = "v3.5.2", + ) + go_repository( + name = "io_etcd_go_etcd_client_pkg_v3", + build_file_proto_mode = "disable_global", + importpath = "go.etcd.io/etcd/client/pkg/v3", + sum = "h1:4hzqQ6hIb3blLyQ8usCU4h3NghkqcsohEQ3o3VetYxE=", + version = "v3.5.2", + ) + go_repository( + name = "io_etcd_go_etcd_client_v2", + build_file_proto_mode = "disable_global", + importpath = "go.etcd.io/etcd/client/v2", + sum = "h1:ymrVwTkefuqA/rPkSW7/B4ApijbPVefRumkY+stNfS0=", + version = "v2.305.2", + ) + go_repository( + name = "io_etcd_go_etcd_client_v3", + build_file_proto_mode = "disable_global", + importpath = "go.etcd.io/etcd/client/v3", + sum = "h1:WdnejrUtQC4nCxK0/dLTMqKOB+U5TP/2Ya0BJL+1otA=", + version = "v3.5.2", + ) + go_repository( + name = "io_etcd_go_etcd_etcdutl_v3", + build_file_proto_mode = "disable_global", + importpath = "go.etcd.io/etcd/etcdutl/v3", + sum = "h1:XDNv2bGD6Ylz3Gb9lIGV/IYLk1bwTvyCIi1EI4hyyqo=", + version = "v3.5.2", + ) + go_repository( + name = "io_etcd_go_etcd_pkg_v3", + build_file_proto_mode = "disable_global", + importpath = "go.etcd.io/etcd/pkg/v3", + sum = "h1:YZUojdoPhOyl5QILYnR8LTUbbNefu/sV4ma+ZMr2tto=", + version = "v3.5.2", + ) + go_repository( + name = "io_etcd_go_etcd_raft_v3", + build_file_proto_mode = "disable_global", + importpath = "go.etcd.io/etcd/raft/v3", + patch_args = ["-p1"], + patches = [ + "//build/patches:io_etcd_go_etcd_raft_v3.patch", + ], + sum = "h1:uCC37qOXqBvKqTGHGyhASsaCsnTuJugl1GvneJNwHWo=", + version = "v3.5.2", + ) + go_repository( + name = "io_etcd_go_etcd_server_v3", + build_file_proto_mode = "disable_global", + importpath = "go.etcd.io/etcd/server/v3", + sum = "h1:B6ytJvS4Fmt8nkjzS2/8POf4tuPhFMluE0lWd4dx/7U=", + version = "v3.5.2", + ) + go_repository( + name = "io_etcd_go_etcd_tests_v3", + build_file_proto_mode = "disable_global", + importpath = "go.etcd.io/etcd/tests/v3", + sum = "h1:uk7/uMGVebpBDl+roivowHt6gJ5Fnqwik3syDkoSKdo=", + version = "v3.5.2", + ) + go_repository( + name = "io_k8s_sigs_yaml", + build_file_proto_mode = "disable_global", + importpath = "sigs.k8s.io/yaml", + sum = "h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q=", + version = "v1.2.0", + ) + go_repository( + name = "io_opencensus_go", + build_file_proto_mode = "disable_global", + importpath = "go.opencensus.io", + sum = "h1:gqCw0LfLxScz8irSi8exQc7fyQ0fKQU/qnC/X8+V/1M=", + version = "v0.23.0", + ) + go_repository( + name = "io_opentelemetry_go_contrib", + build_file_proto_mode = "disable_global", + importpath = "go.opentelemetry.io/contrib", + sum = "h1:ubFQUn0VCZ0gPwIoJfBJVpeBlyRMxu8Mm/huKWYd9p0=", + version = "v0.20.0", + ) + go_repository( + name = "io_opentelemetry_go_contrib_instrumentation_google_golang_org_grpc_otelgrpc", + build_file_proto_mode = "disable_global", + importpath = "go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc", + sum = "h1:sO4WKdPAudZGKPcpZT4MJn6JaDmpyLrMPDGGyA1SttE=", + version = "v0.20.0", + ) + go_repository( + name = "io_opentelemetry_go_otel", + build_file_proto_mode = "disable_global", + importpath = "go.opentelemetry.io/otel", + sum = "h1:eaP0Fqu7SXHwvjiqDq83zImeehOHX8doTvU9AwXON8g=", + version = "v0.20.0", + ) + go_repository( + name = "io_opentelemetry_go_otel_exporters_otlp", + build_file_proto_mode = "disable_global", + importpath = "go.opentelemetry.io/otel/exporters/otlp", + sum = "h1:PTNgq9MRmQqqJY0REVbZFvwkYOA85vbdQU/nVfxDyqg=", + version = "v0.20.0", + ) + go_repository( + name = "io_opentelemetry_go_otel_metric", + build_file_proto_mode = "disable_global", + importpath = "go.opentelemetry.io/otel/metric", + sum = "h1:4kzhXFP+btKm4jwxpjIqjs41A7MakRFUS86bqLHTIw8=", + version = "v0.20.0", + ) + go_repository( + name = "io_opentelemetry_go_otel_oteltest", + build_file_proto_mode = "disable_global", + importpath = "go.opentelemetry.io/otel/oteltest", + sum = "h1:HiITxCawalo5vQzdHfKeZurV8x7ljcqAgiWzF6Vaeaw=", + version = "v0.20.0", + ) + go_repository( + name = "io_opentelemetry_go_otel_sdk", + build_file_proto_mode = "disable_global", + importpath = "go.opentelemetry.io/otel/sdk", + sum = "h1:JsxtGXd06J8jrnya7fdI/U/MR6yXA5DtbZy+qoHQlr8=", + version = "v0.20.0", + ) + go_repository( + name = "io_opentelemetry_go_otel_sdk_export_metric", + build_file_proto_mode = "disable_global", + importpath = "go.opentelemetry.io/otel/sdk/export/metric", + sum = "h1:c5VRjxCXdQlx1HjzwGdQHzZaVI82b5EbBgOu2ljD92g=", + version = "v0.20.0", + ) + go_repository( + name = "io_opentelemetry_go_otel_sdk_metric", + build_file_proto_mode = "disable_global", + importpath = "go.opentelemetry.io/otel/sdk/metric", + sum = "h1:7ao1wpzHRVKf0OQ7GIxiQJA6X7DLX9o14gmVon7mMK8=", + version = "v0.20.0", + ) + go_repository( + name = "io_opentelemetry_go_otel_trace", + build_file_proto_mode = "disable_global", + importpath = "go.opentelemetry.io/otel/trace", + sum = "h1:1DL6EXUdcg95gukhuRRvLDO/4X5THh/5dIV52lqtnbw=", + version = "v0.20.0", + ) + go_repository( + name = "io_opentelemetry_go_proto_otlp", + build_file_proto_mode = "disable_global", + importpath = "go.opentelemetry.io/proto/otlp", + sum = "h1:rwOQPCuKAKmwGKq2aVNnYIibI6wnV7EvzgfTCzcdGg8=", + version = "v0.7.0", + ) + go_repository( + name = "io_rsc_binaryregexp", + build_file_proto_mode = "disable_global", + importpath = "rsc.io/binaryregexp", + sum = "h1:HfqmD5MEmC0zvwBuF187nq9mdnXjXsSivRiXN7SmRkE=", + version = "v0.2.0", + ) + go_repository( + name = "io_rsc_pdf", + build_file_proto_mode = "disable_global", + importpath = "rsc.io/pdf", + sum = "h1:k1MczvYDUvJBe93bYd7wrZLLUEcLZAuF824/I4e5Xr4=", + version = "v0.1.1", + ) + go_repository( + name = "io_rsc_quote_v3", + build_file_proto_mode = "disable_global", + importpath = "rsc.io/quote/v3", + sum = "h1:9JKUTTIUgS6kzR9mK1YuGKv6Nl+DijDNIc0ghT58FaY=", + version = "v3.1.0", + ) + go_repository( + name = "io_rsc_sampler", + build_file_proto_mode = "disable_global", + importpath = "rsc.io/sampler", + sum = "h1:7uVkIFmeBqHfdjD+gZwtXXI+RODJ2Wc4O7MPEh/QiW4=", + version = "v1.3.0", + ) + go_repository( + name = "org_golang_google_api", + build_file_proto_mode = "disable_global", + importpath = "google.golang.org/api", + sum = "h1:yHW5s2SFyDapr/43kYtIQmoaaFVW4baLMLwqV4auj2A=", + version = "v0.69.0", + ) + go_repository( + name = "org_golang_google_appengine", + build_file_proto_mode = "disable_global", + importpath = "google.golang.org/appengine", + sum = "h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c=", + version = "v1.6.7", + ) + go_repository( + name = "org_golang_google_genproto", + build_file_proto_mode = "disable_global", + importpath = "google.golang.org/genproto", + sum = "h1:divpuJZKgX3Qt7MFDE5v62yu0yQcQbTCD9VJp9leX58=", + version = "v0.0.0-20220216160803-4663080d8bc8", + ) + go_repository( + name = "org_golang_google_grpc", + build_file_proto_mode = "disable_global", + importpath = "google.golang.org/grpc", + sum = "h1:weqSxi/TMs1SqFRMHCtBgXRs8k3X39QIDEZ0pRcttUg=", + version = "v1.44.0", + ) + go_repository( + name = "org_golang_google_grpc_cmd_protoc_gen_go_grpc", + build_file_proto_mode = "disable_global", + importpath = "google.golang.org/grpc/cmd/protoc-gen-go-grpc", + sum = "h1:M1YKkFIboKNieVO5DLUEVzQfGwJD30Nv2jfUgzb5UcE=", + version = "v1.1.0", + ) + go_repository( + name = "org_golang_google_protobuf", + build_file_proto_mode = "disable_global", + importpath = "google.golang.org/protobuf", + sum = "h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ=", + version = "v1.27.1", + ) + go_repository( + name = "org_golang_x_crypto", + build_file_proto_mode = "disable_global", + importpath = "golang.org/x/crypto", + sum = "h1:f+lwQ+GtmgoY+A2YaQxlSOnDjXcQ7ZRLWOHbC6HtRqE=", + version = "v0.0.0-20220214200702-86341886e292", + ) + go_repository( + name = "org_golang_x_exp", + build_file_proto_mode = "disable_global", + importpath = "golang.org/x/exp", + sum = "h1:rxKZ2gOnYxjfmakvUUqh9Gyb6KXfrj7JWTxORTYqb0E=", + version = "v0.0.0-20220426173459-3bcf042a4bf5", + ) + go_repository( + name = "org_golang_x_exp_typeparams", + build_file_proto_mode = "disable", + importpath = "golang.org/x/exp/typeparams", + sum = "h1:qyrTQ++p1afMkO4DPEeLGq/3oTsdlvdH4vqZUBWzUKM=", + version = "v0.0.0-20220218215828-6cf2b201936e", + ) + + go_repository( + name = "org_golang_x_image", + build_file_proto_mode = "disable_global", + importpath = "golang.org/x/image", + sum = "h1:+qEpEAPhDZ1o0x3tHzZTQDArnOixOzGD9HUJfcg0mb4=", + version = "v0.0.0-20190802002840-cff245a6509b", + ) + go_repository( + name = "org_golang_x_lint", + build_file_proto_mode = "disable_global", + importpath = "golang.org/x/lint", + sum = "h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug=", + version = "v0.0.0-20210508222113-6edffad5e616", + ) + go_repository( + name = "org_golang_x_mobile", + build_file_proto_mode = "disable_global", + importpath = "golang.org/x/mobile", + sum = "h1:4+4C/Iv2U4fMZBiMCc98MG1In4gJY5YRhtpDNeDeHWs=", + version = "v0.0.0-20190719004257-d2bd2a29d028", + ) + go_repository( + name = "org_golang_x_mod", + build_file_proto_mode = "disable_global", + importpath = "golang.org/x/mod", + sum = "h1:6zppjxzCulZykYSLyVDYbneBfbaBIQPYMevg0bEwv2s=", + version = "v0.6.0-dev.0.20220419223038-86c51ed26bb4", + ) + go_repository( + name = "org_golang_x_net", + build_file_proto_mode = "disable_global", + importpath = "golang.org/x/net", + sum = "h1:O7DYs+zxREGLKzKoMQrtrEacpb0ZVXA5rIwylE2Xchk=", + version = "v0.0.0-20220127200216-cd36cc0744dd", + ) + go_repository( + name = "org_golang_x_oauth2", + build_file_proto_mode = "disable_global", + importpath = "golang.org/x/oauth2", + sum = "h1:RerP+noqYHUQ8CMRcPlC2nvTa4dcBIjegkuWdcUDuqg=", + version = "v0.0.0-20211104180415-d3ed0bb246c8", + ) + go_repository( + name = "org_golang_x_sync", + build_file_proto_mode = "disable_global", + importpath = "golang.org/x/sync", + sum = "h1:w8s32wxx3sY+OjLlv9qltkLU5yvJzxjjgiHWLjdIcw4=", + version = "v0.0.0-20220513210516-0976fa681c29", + ) + go_repository( + name = "org_golang_x_sys", + build_file_proto_mode = "disable_global", + importpath = "golang.org/x/sys", + sum = "h1:8w7RhxzTVgUzw/AH/9mUV5q0vMgy40SQRursCcfmkCw=", + version = "v0.0.0-20220408201424-a24fb2fb8a0f", + ) + go_repository( + name = "org_golang_x_term", + build_file_proto_mode = "disable_global", + importpath = "golang.org/x/term", + sum = "h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY=", + version = "v0.0.0-20210927222741-03fcf44c2211", + ) + go_repository( + name = "org_golang_x_text", + build_file_proto_mode = "disable_global", + importpath = "golang.org/x/text", + sum = "h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=", + version = "v0.3.7", + ) + go_repository( + name = "org_golang_x_time", + build_file_proto_mode = "disable_global", + importpath = "golang.org/x/time", + sum = "h1:M73Iuj3xbbb9Uk1DYhzydthsj6oOd6l9bpuFcNoUvTs=", + version = "v0.0.0-20220224211638-0e9765cccd65", + ) + go_repository( + name = "org_golang_x_tools", + build_file_proto_mode = "disable_global", + importpath = "golang.org/x/tools", + sum = "h1:OKYpQQVE3DKSc3r3zHVzq46vq5YH7x8xpR3/k9ixmUg=", + version = "v0.1.11-0.20220513221640-090b14e8501f", + ) + go_repository( + name = "org_golang_x_xerrors", + build_file_proto_mode = "disable_global", + importpath = "golang.org/x/xerrors", + sum = "h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=", + version = "v0.0.0-20200804184101-5ec99f83aff1", + ) + go_repository( + name = "org_gonum_v1_gonum", + build_file_proto_mode = "disable_global", + importpath = "gonum.org/v1/gonum", + sum = "h1:CCXrcPKiGGotvnN6jfUsKk4rRqm7q09/YbKb5xCEvtM=", + version = "v0.8.2", + ) + go_repository( + name = "org_gonum_v1_netlib", + build_file_proto_mode = "disable_global", + importpath = "gonum.org/v1/netlib", + sum = "h1:OE9mWmgKkjJyEmDAAtGMPjXu+YNeGvK9VTSHY6+Qihc=", + version = "v0.0.0-20190313105609-8cb42192e0e0", + ) + go_repository( + name = "org_gonum_v1_plot", + build_file_proto_mode = "disable_global", + importpath = "gonum.org/v1/plot", + sum = "h1:Qh4dB5D/WpoUUp3lSod7qgoyEHbDGPUWjIbnqdqqe1k=", + version = "v0.0.0-20190515093506-e2840ee46a6b", + ) + go_repository( + name = "org_modernc_fileutil", + build_file_proto_mode = "disable_global", + importpath = "modernc.org/fileutil", + sum = "h1:Z1AFLZwl6BO8A5NldQg/xTSjGLetp+1Ubvl4alfGx8w=", + version = "v1.0.0", + ) + go_repository( + name = "org_modernc_golex", + build_file_proto_mode = "disable_global", + importpath = "modernc.org/golex", + sum = "h1:EYKY1a3wStt0RzHaH8mdSRNg78Ub0OHxYfCRWw35YtM=", + version = "v1.0.1", + ) + go_repository( + name = "org_modernc_lex", + build_file_proto_mode = "disable_global", + importpath = "modernc.org/lex", + sum = "h1:w0dxp18i1q+aSE7GkepvwzvVWTLoCIQ2oDgTFAV2JZU=", + version = "v1.0.0", + ) + go_repository( + name = "org_modernc_lexer", + build_file_proto_mode = "disable_global", + importpath = "modernc.org/lexer", + sum = "h1:D2xE6YTaH7aiEC7o/+rbx6qTAEr1uY83peKwkamIdQ0=", + version = "v1.0.0", + ) + go_repository( + name = "org_modernc_mathutil", + build_file_proto_mode = "disable_global", + importpath = "modernc.org/mathutil", + sum = "h1:ij3fYGe8zBF4Vu+g0oT7mB06r8sqGWKuJu1yXeR4by8=", + version = "v1.4.1", + ) + go_repository( + name = "org_modernc_parser", + build_file_proto_mode = "disable_global", + importpath = "modernc.org/parser", + sum = "h1:/qHLDn1ezrcRk9/XbErYp84bPPM4+w0kIDuvMdRk6Vc=", + version = "v1.0.2", + ) + go_repository( + name = "org_modernc_scanner", + build_file_proto_mode = "disable_global", + importpath = "modernc.org/scanner", + sum = "h1:rmWBTztgQKLM2CYx0uTQGhAxgnrILDEOVXJsEq/I4Js=", + version = "v1.0.1", + ) + go_repository( + name = "org_modernc_sortutil", + build_file_proto_mode = "disable_global", + importpath = "modernc.org/sortutil", + sum = "h1:SUTM1sCR0Ldpv7dbB/KCPC2zHHsZ1KrSkhmGmmV22CQ=", + version = "v1.0.0", + ) + go_repository( + name = "org_modernc_strutil", + build_file_proto_mode = "disable_global", + importpath = "modernc.org/strutil", + sum = "h1:+1/yCzZxY2pZwwrsbH+4T7BQMoLQ9QiBshRC9eicYsc=", + version = "v1.1.0", + ) + go_repository( + name = "org_modernc_y", + build_file_proto_mode = "disable_global", + importpath = "modernc.org/y", + sum = "h1:+QT+MtLkwkvLkh3fYQq+YD5vw2s5paVE73jdl5R/Py8=", + version = "v1.0.1", + ) + go_repository( + name = "org_uber_go_atomic", + build_file_proto_mode = "disable_global", + importpath = "go.uber.org/atomic", + sum = "h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE=", + version = "v1.9.0", + ) + go_repository( + name = "org_uber_go_automaxprocs", + build_file_proto_mode = "disable_global", + importpath = "go.uber.org/automaxprocs", + sum = "h1:CpDZl6aOlLhReez+8S3eEotD7Jx0Os++lemPlMULQP0=", + version = "v1.4.0", + ) + go_repository( + name = "org_uber_go_goleak", + build_file_proto_mode = "disable_global", + importpath = "go.uber.org/goleak", + sum = "h1:gZAh5/EyT/HQwlpkCy6wTpqfH9H8Lz8zbm3dZh+OyzA=", + version = "v1.1.12", + ) + go_repository( + name = "org_uber_go_multierr", + build_file_proto_mode = "disable_global", + importpath = "go.uber.org/multierr", + sum = "h1:dg6GjLku4EH+249NNmoIciG9N/jURbDG+pFlTkhzIC8=", + version = "v1.8.0", + ) + go_repository( + name = "org_uber_go_tools", + build_file_proto_mode = "disable_global", + importpath = "go.uber.org/tools", + sum = "h1:0mgffUl7nfd+FpvXMVz4IDEaUSmT1ysygQC7qYo7sG4=", + version = "v0.0.0-20190618225709-2cfd321de3ee", + ) + go_repository( + name = "org_uber_go_zap", + build_file_proto_mode = "disable_global", + importpath = "go.uber.org/zap", + sum = "h1:WefMeulhovoZ2sYXz7st6K0sLj7bBhpiFaud4r4zST8=", + version = "v1.21.0", + ) diff --git a/Makefile b/Makefile index b6b3cab07a462..2314bcff43e63 100644 --- a/Makefile +++ b/Makefile @@ -14,7 +14,7 @@ include Makefile.common -.PHONY: all clean test gotest server dev benchkv benchraw check checklist parser tidy ddltest build_br build_lightning build_lightning-ctl build_dumpling ut +.PHONY: all clean test gotest server dev benchkv benchraw check checklist parser tidy ddltest build_br build_lightning build_lightning-ctl build_dumpling ut bazel_build bazel_prepare bazel_test default: server buildsucc @@ -25,9 +25,6 @@ buildsucc: all: dev server benchkv -parser: - @echo "remove this command later, when our CI script doesn't call it" - dev: checklist check explaintest gogenerate br_unit_test test_part_parser_dev ut @>&2 echo "Great, all tests passed." @@ -96,6 +93,9 @@ test_part_parser: parser_yacc test_part_parser_dev test_part_parser_dev: parser_fmt parser_unit_test +parser: + @cd parser && make parser + parser_yacc: @cd parser && mv parser.go parser.go.committed && make parser && diff -u parser.go.committed parser.go && rm parser.go.committed @@ -327,6 +327,14 @@ build_for_br_integration_test: ) || (make failpoint-disable && exit 1) @make failpoint-disable +build_for_lightning_test: + @make failpoint-enable + $(GOTEST) -c -cover -covermode=count \ + -coverpkg=github.com/pingcap/tidb/br/... \ + -o $(LIGHTNING_BIN).test \ + github.com/pingcap/tidb/br/cmd/tidb-lightning + @make failpoint-disable + br_unit_test: export ARGS=$$($(BR_PACKAGES)) br_unit_test: @make failpoint-enable @@ -409,15 +417,6 @@ dumpling_integration_test: dumpling_bins failpoint-enable build_dumpling @make failpoint-disable ./dumpling/tests/run.sh $(CASE) -dumpling_tools: - @echo "install dumpling tools..." - @cd dumpling/tools && make - -dumpling_tidy: - @echo "go mod tidy" - GO111MODULE=on go mod tidy - git diff --exit-code go.mod go.sum dumpling/tools/go.mod dumpling/tools/go.sum - dumpling_bins: @which bin/tidb-server @which bin/minio @@ -429,3 +428,38 @@ tools/bin/gotestsum: tools/check/go.mod generate_grafana_scripts: @cd metrics/grafana && mv tidb_summary.json tidb_summary.json.committed && ./generate_json.sh && diff -u tidb_summary.json.committed tidb_summary.json && rm tidb_summary.json.committed + +bazel_ci_prepare: + bazel --output_user_root=/home/jenkins/.tidb/tmp run --config=ci //:gazelle + +bazel_prepare: + bazel run //:gazelle + +bazel_test: failpoint-enable bazel_ci_prepare + bazel --output_user_root=/home/jenkins/.tidb/tmp test --config=ci \ + -- //... -//cmd/... -//tests/graceshutdown/... \ + -//tests/globalkilltest/... -//tests/readonlytest/... -//br/pkg/task:task_test + + +bazel_coverage_test: failpoint-enable bazel_ci_prepare + bazel --output_user_root=/home/jenkins/.tidb/tmp coverage --config=ci --@io_bazel_rules_go//go/config:cover_format=go_cover \ + -- //... -//cmd/... -//tests/graceshutdown/... \ + -//tests/globalkilltest/... -//tests/readonlytest/... -//br/pkg/task:task_test + +bazel_build: bazel_ci_prepare + mkdir -p bin + bazel --output_user_root=/home/jenkins/.tidb/tmp build --config=ci //tidb-server/... //br/cmd/... //cmd/... + cp bazel-out/k8-fastbuild/bin/tidb-server/tidb-server_/tidb-server ./bin + cp bazel-out/k8-fastbuild/bin/cmd/importer/importer_/importer ./bin + cp bazel-out/k8-fastbuild/bin/tidb-server/tidb-server-check_/tidb-server-check ./bin + +bazel_fail_build: failpoint-enable bazel_ci_prepare + bazel --output_user_root=/home/jenkins/.tidb/tmp build --config=ci //... + +bazel_clean: + bazel --output_user_root=/home/jenkins/.tidb/tmp clean + +bazel_junit: + bazel_collect + @mkdir -p $(TEST_COVERAGE_DIR) + mv ./junit.xml `$(TEST_COVERAGE_DIR)/junit.xml` diff --git a/README.md b/README.md index 038d7a380df21..ca96703510e40 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ For more details and latest updates, see [TiDB docs](https://docs.pingcap.com/ti TiDB Cloud is the fully-managed service of TiDB, currently available on AWS and GCP. -Quickly check out TiDB Cloud with [a free trial](https://tidbcloud.com/signup). +Quickly check out TiDB Cloud with [a free trial](https://tidbcloud.com/free-trial). See [TiDB Cloud Quick Start Guide](https://docs.pingcap.com/tidbcloud/tidb-cloud-quickstart). @@ -60,7 +60,7 @@ The [community repository](https://github.com/pingcap/community) hosts all infor [contribution-map](https://github.com/pingcap/tidb-map/blob/master/maps/contribution-map.md#tidb-is-an-open-source-distributed-htap-database-compatible-with-the-mysql-protocol) -Contributions are welcomed and greatly appreciated. See [Contribution to TiDB](https://pingcap.github.io/tidb-dev-guide/contribute-to-tidb/introduction.html) for details on typical contribution workflows. For more contributing information, click on the contributor icon above. +Contributions are welcomed and greatly appreciated. All the contributors are welcomed to claim your reward by filing this [form](https://forms.pingcap.com/f/tidb-contribution-swag). See [Contribution to TiDB](https://pingcap.github.io/tidb-dev-guide/contribute-to-tidb/introduction.html) for details on typical contribution workflows. For more contributing information, click on the contributor icon above. ## Adopters diff --git a/WORKSPACE b/WORKSPACE new file mode 100644 index 0000000000000..3553ec948fe50 --- /dev/null +++ b/WORKSPACE @@ -0,0 +1,54 @@ +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") + +http_archive( + name = "io_bazel_rules_go", + sha256 = "685052b498b6ddfe562ca7a97736741d87916fe536623afb7da2824c0211c369", + urls = [ + "https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.33.0/rules_go-v0.33.0.zip", + "https://github.com/bazelbuild/rules_go/releases/download/v0.33.0/rules_go-v0.33.0.zip", + ], +) + +http_archive( + name = "bazel_gazelle", + sha256 = "de69a09dc70417580aabf20a28619bb3ef60d038470c7cf8442fafcf627c21cb", + urls = [ + "https://mirror.bazel.build/github.com/bazelbuild/bazel-gazelle/releases/download/v0.24.0/bazel-gazelle-v0.24.0.tar.gz", + "https://github.com/bazelbuild/bazel-gazelle/releases/download/v0.24.0/bazel-gazelle-v0.24.0.tar.gz", + ], +) + +load("@io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies") +load("//:DEPS.bzl", "go_deps") +load("//build:lint.bzl", "nogo_deps") + +# gazelle:repository_macro DEPS.bzl%go_deps +go_deps() + +nogo_deps() + +load("@bazel_gazelle//:deps.bzl", "gazelle_dependencies", "go_repository") + +go_rules_dependencies() + +go_register_toolchains( + nogo = "@//build:tidb_nogo", + version = "1.18.3", +) + +gazelle_dependencies() + +http_archive( + name = "com_google_protobuf", + sha256 = "bc3dbf1f09dba1b2eb3f2f70352ee97b9049066c9040ce0c9b67fb3294e91e4b", + strip_prefix = "protobuf-3.15.5", + # latest, as of 2021-03-08 + urls = [ + "https://github.com/protocolbuffers/protobuf/archive/v3.15.5.tar.gz", + "https://mirror.bazel.build/github.com/protocolbuffers/protobuf/archive/v3.15.5.tar.gz", + ], +) + +load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps") + +protobuf_deps() diff --git a/bindinfo/BUILD.bazel b/bindinfo/BUILD.bazel new file mode 100644 index 0000000000000..22cb9e355d99e --- /dev/null +++ b/bindinfo/BUILD.bazel @@ -0,0 +1,79 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "bindinfo", + srcs = [ + "bind_cache.go", + "bind_record.go", + "handle.go", + "session_handle.go", + "stat.go", + ], + importpath = "github.com/pingcap/tidb/bindinfo", + visibility = ["//visibility:public"], + deps = [ + "//metrics", + "//parser", + "//parser/ast", + "//parser/format", + "//parser/mysql", + "//parser/terror", + "//sessionctx", + "//sessionctx/stmtctx", + "//sessionctx/variable", + "//types", + "//types/parser_driver", + "//util/chunk", + "//util/hack", + "//util/hint", + "//util/kvcache", + "//util/logutil", + "//util/mathutil", + "//util/memory", + "//util/parser", + "//util/sqlexec", + "//util/stmtsummary", + "//util/table-filter", + "//util/timeutil", + "@org_golang_x_exp//maps", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "bindinfo_test", + srcs = [ + "bind_cache_test.go", + "bind_test.go", + "capture_test.go", + "handle_test.go", + "main_test.go", + "optimize_test.go", + "session_handle_test.go", + "temptable_test.go", + ], + embed = [":bindinfo"], + deps = [ + "//config", + "//domain", + "//errno", + "//metrics", + "//parser", + "//parser/auth", + "//parser/model", + "//parser/terror", + "//planner/core", + "//session/txninfo", + "//sessionctx/variable", + "//testkit", + "//testkit/testsetup", + "//util", + "//util/hack", + "//util/parser", + "//util/stmtsummary", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_prometheus_client_model//go", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/bindinfo/bind_cache.go b/bindinfo/bind_cache.go index f1f58f43dae4a..8ce69deedd840 100644 --- a/bindinfo/bind_cache.go +++ b/bindinfo/bind_cache.go @@ -153,6 +153,7 @@ func (c *bindCache) GetAllBindRecords() []*BindRecord { c.lock.Lock() defer c.lock.Unlock() values := c.cache.Values() + //nolint: prealloc var bindRecords []*BindRecord for _, vals := range values { bindRecords = append(bindRecords, vals.([]*BindRecord)...) diff --git a/br/cmd/br/BUILD.bazel b/br/cmd/br/BUILD.bazel new file mode 100644 index 0000000000000..2958366d93c4f --- /dev/null +++ b/br/cmd/br/BUILD.bazel @@ -0,0 +1,57 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library", "go_test") + +go_library( + name = "br_lib", + srcs = [ + "backup.go", + "cmd.go", + "debug.go", + "main.go", + "restore.go", + "stream.go", + ], + importpath = "github.com/pingcap/tidb/br/cmd/br", + visibility = ["//visibility:private"], + deps = [ + "//br/pkg/errors", + "//br/pkg/gluetidb", + "//br/pkg/gluetikv", + "//br/pkg/logutil", + "//br/pkg/metautil", + "//br/pkg/mock/mockid", + "//br/pkg/redact", + "//br/pkg/restore", + "//br/pkg/rtree", + "//br/pkg/summary", + "//br/pkg/task", + "//br/pkg/trace", + "//br/pkg/utils", + "//br/pkg/version/build", + "//config", + "//ddl", + "//parser/model", + "//session", + "//util", + "//util/logutil", + "@com_github_gogo_protobuf//proto", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_kvproto//pkg/brpb", + "@com_github_pingcap_kvproto//pkg/import_sstpb", + "@com_github_pingcap_log//:log", + "@com_github_spf13_cobra//:cobra", + "@com_sourcegraph_sourcegraph_appdash//:appdash", + "@org_uber_go_zap//:zap", + ], +) + +go_binary( + name = "br", + embed = [":br_lib"], + visibility = ["//visibility:public"], +) + +go_test( + name = "br_test", + srcs = ["main_test.go"], + embed = [":br_lib"], +) diff --git a/br/cmd/tidb-lightning-ctl/BUILD.bazel b/br/cmd/tidb-lightning-ctl/BUILD.bazel new file mode 100644 index 0000000000000..33aa0bdfa37e0 --- /dev/null +++ b/br/cmd/tidb-lightning-ctl/BUILD.bazel @@ -0,0 +1,31 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library", "go_test") + +go_library( + name = "tidb-lightning-ctl_lib", + srcs = ["main.go"], + importpath = "github.com/pingcap/tidb/br/cmd/tidb-lightning-ctl", + visibility = ["//visibility:private"], + deps = [ + "//br/pkg/lightning", + "//br/pkg/lightning/backend", + "//br/pkg/lightning/backend/local", + "//br/pkg/lightning/checkpoints", + "//br/pkg/lightning/common", + "//br/pkg/lightning/config", + "//br/pkg/lightning/restore", + "//br/pkg/lightning/tikv", + "@com_github_pingcap_errors//:errors", + ], +) + +go_binary( + name = "tidb-lightning-ctl", + embed = [":tidb-lightning-ctl_lib"], + visibility = ["//visibility:public"], +) + +go_test( + name = "tidb-lightning-ctl_test", + srcs = ["main_test.go"], + embed = [":tidb-lightning-ctl_lib"], +) diff --git a/br/cmd/tidb-lightning-ctl/main.go b/br/cmd/tidb-lightning-ctl/main.go index 77dd52541470c..08f0c080963f3 100644 --- a/br/cmd/tidb-lightning-ctl/main.go +++ b/br/cmd/tidb-lightning-ctl/main.go @@ -262,7 +262,7 @@ func checkpointDump(ctx context.Context, cfg *config.Config, dumpFolder string) } func getLocalStoringTables(ctx context.Context, cfg *config.Config) (err2 error) { - //nolint:prealloc // This is a placeholder. + //nolint: prealloc var tables []string defer func() { if err2 == nil { diff --git a/br/cmd/tidb-lightning/BUILD.bazel b/br/cmd/tidb-lightning/BUILD.bazel new file mode 100644 index 0000000000000..6098f1db43f84 --- /dev/null +++ b/br/cmd/tidb-lightning/BUILD.bazel @@ -0,0 +1,28 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library", "go_test") + +go_library( + name = "tidb-lightning_lib", + srcs = ["main.go"], + importpath = "github.com/pingcap/tidb/br/cmd/tidb-lightning", + visibility = ["//visibility:private"], + deps = [ + "//br/pkg/lightning", + "//br/pkg/lightning/common", + "//br/pkg/lightning/config", + "//br/pkg/lightning/log", + "//br/pkg/lightning/web", + "@org_uber_go_zap//:zap", + ], +) + +go_binary( + name = "tidb-lightning", + embed = [":tidb-lightning_lib"], + visibility = ["//visibility:public"], +) + +go_test( + name = "tidb-lightning_test", + srcs = ["main_test.go"], + embed = [":tidb-lightning_lib"], +) diff --git a/br/pkg/backup/BUILD.bazel b/br/pkg/backup/BUILD.bazel new file mode 100644 index 0000000000000..14f4d1a87c6f9 --- /dev/null +++ b/br/pkg/backup/BUILD.bazel @@ -0,0 +1,94 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "backup", + srcs = [ + "check.go", + "client.go", + "metrics.go", + "push.go", + "schema.go", + ], + importpath = "github.com/pingcap/tidb/br/pkg/backup", + visibility = ["//visibility:public"], + deps = [ + "//br/pkg/checksum", + "//br/pkg/conn", + "//br/pkg/errors", + "//br/pkg/glue", + "//br/pkg/logutil", + "//br/pkg/metautil", + "//br/pkg/redact", + "//br/pkg/rtree", + "//br/pkg/storage", + "//br/pkg/summary", + "//br/pkg/utils", + "//ddl", + "//distsql", + "//kv", + "//meta", + "//meta/autoid", + "//parser/model", + "//statistics/handle", + "//util", + "//util/codec", + "//util/ranger", + "//util/table-filter", + "@com_github_google_btree//:btree", + "@com_github_opentracing_opentracing_go//:opentracing-go", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_pingcap_kvproto//pkg/brpb", + "@com_github_pingcap_kvproto//pkg/errorpb", + "@com_github_pingcap_kvproto//pkg/kvrpcpb", + "@com_github_pingcap_kvproto//pkg/metapb", + "@com_github_pingcap_log//:log", + "@com_github_prometheus_client_golang//prometheus", + "@com_github_tikv_client_go_v2//oracle", + "@com_github_tikv_client_go_v2//tikv", + "@com_github_tikv_client_go_v2//txnkv/txnlock", + "@com_github_tikv_pd_client//:client", + "@org_golang_google_grpc//codes", + "@org_golang_google_grpc//status", + "@org_golang_x_sync//errgroup", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "backup_test", + srcs = [ + "client_test.go", + "main_test.go", + "schema_test.go", + ], + embed = [":backup"], + deps = [ + "//br/pkg/conn", + "//br/pkg/metautil", + "//br/pkg/mock", + "//br/pkg/pdutil", + "//br/pkg/storage", + "//br/pkg/utils", + "//kv", + "//parser/model", + "//sessionctx/variable", + "//tablecodec", + "//testkit", + "//testkit/testsetup", + "//types", + "//util/codec", + "//util/table-filter", + "@com_github_golang_protobuf//proto", + "@com_github_pingcap_kvproto//pkg/brpb", + "@com_github_pingcap_kvproto//pkg/encryptionpb", + "@com_github_pingcap_kvproto//pkg/errorpb", + "@com_github_stretchr_testify//require", + "@com_github_tikv_client_go_v2//oracle", + "@com_github_tikv_client_go_v2//testutils", + "@com_github_tikv_client_go_v2//tikv", + "@com_github_tikv_client_go_v2//txnkv/txnlock", + "@com_github_tikv_pd_client//:client", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/br/pkg/backup/client.go b/br/pkg/backup/client.go index df27a4848bdd0..22a47de065a71 100644 --- a/br/pkg/backup/client.go +++ b/br/pkg/backup/client.go @@ -534,7 +534,9 @@ func (bc *Client) BackupRanges( progressCallBack func(ProgressUnit), ) error { init := time.Now() - defer log.Info("Backup Ranges", zap.Duration("take", time.Since(init))) + defer func() { + log.Info("Backup Ranges", zap.Duration("take", time.Since(init))) + }() if span := opentracing.SpanFromContext(ctx); span != nil && span.Tracer() != nil { span1 := span.Tracer().StartSpan("Client.BackupRanges", opentracing.ChildOf(span.Context())) diff --git a/br/pkg/checksum/BUILD.bazel b/br/pkg/checksum/BUILD.bazel new file mode 100644 index 0000000000000..db1bf73ea87bd --- /dev/null +++ b/br/pkg/checksum/BUILD.bazel @@ -0,0 +1,50 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "checksum", + srcs = [ + "executor.go", + "validate.go", + ], + importpath = "github.com/pingcap/tidb/br/pkg/checksum", + visibility = ["//visibility:public"], + deps = [ + "//br/pkg/errors", + "//br/pkg/metautil", + "//br/pkg/storage", + "//br/pkg/summary", + "//distsql", + "//kv", + "//parser/model", + "//sessionctx/variable", + "//tablecodec", + "//util/ranger", + "@com_github_gogo_protobuf//proto", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_kvproto//pkg/brpb", + "@com_github_pingcap_log//:log", + "@com_github_pingcap_tipb//go-tipb", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "checksum_test", + srcs = [ + "executor_test.go", + "main_test.go", + ], + embed = [":checksum"], + deps = [ + "//br/pkg/backup", + "//br/pkg/metautil", + "//br/pkg/mock", + "//kv", + "//parser/model", + "//sessionctx/variable", + "//testkit", + "//testkit/testsetup", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/br/pkg/conn/BUILD.bazel b/br/pkg/conn/BUILD.bazel new file mode 100644 index 0000000000000..b61518eb2f44d --- /dev/null +++ b/br/pkg/conn/BUILD.bazel @@ -0,0 +1,58 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "conn", + srcs = ["conn.go"], + importpath = "github.com/pingcap/tidb/br/pkg/conn", + visibility = ["//visibility:public"], + deps = [ + "//br/pkg/errors", + "//br/pkg/glue", + "//br/pkg/logutil", + "//br/pkg/pdutil", + "//br/pkg/utils", + "//br/pkg/version", + "//domain", + "//kv", + "@com_github_docker_go_units//:go-units", + "@com_github_opentracing_opentracing_go//:opentracing-go", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_pingcap_kvproto//pkg/brpb", + "@com_github_pingcap_kvproto//pkg/metapb", + "@com_github_pingcap_log//:log", + "@com_github_tikv_client_go_v2//oracle", + "@com_github_tikv_client_go_v2//tikv", + "@com_github_tikv_client_go_v2//txnkv/txnlock", + "@com_github_tikv_pd_client//:client", + "@org_golang_google_grpc//:grpc", + "@org_golang_google_grpc//backoff", + "@org_golang_google_grpc//codes", + "@org_golang_google_grpc//credentials", + "@org_golang_google_grpc//keepalive", + "@org_golang_google_grpc//status", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "conn_test", + srcs = [ + "conn_test.go", + "main_test.go", + ], + embed = [":conn"], + deps = [ + "//br/pkg/pdutil", + "//br/pkg/utils", + "//testkit/testsetup", + "@com_github_docker_go_units//:go-units", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_pingcap_kvproto//pkg/metapb", + "@com_github_stretchr_testify//require", + "@org_golang_google_grpc//codes", + "@org_golang_google_grpc//status", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/br/pkg/errors/BUILD.bazel b/br/pkg/errors/BUILD.bazel new file mode 100644 index 0000000000000..d07b0c723102a --- /dev/null +++ b/br/pkg/errors/BUILD.bazel @@ -0,0 +1,9 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "errors", + srcs = ["errors.go"], + importpath = "github.com/pingcap/tidb/br/pkg/errors", + visibility = ["//visibility:public"], + deps = ["@com_github_pingcap_errors//:errors"], +) diff --git a/br/pkg/glue/BUILD.bazel b/br/pkg/glue/BUILD.bazel new file mode 100644 index 0000000000000..812b2b2c8b6a7 --- /dev/null +++ b/br/pkg/glue/BUILD.bazel @@ -0,0 +1,32 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "glue", + srcs = [ + "console_glue.go", + "glue.go", + ], + importpath = "github.com/pingcap/tidb/br/pkg/glue", + visibility = ["//visibility:public"], + deps = [ + "//br/pkg/logutil", + "//domain", + "//kv", + "//parser/model", + "@com_github_fatih_color//:color", + "@com_github_pingcap_log//:log", + "@com_github_tikv_pd_client//:client", + "@org_golang_x_term//:term", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "glue_test", + srcs = ["console_glue_test.go"], + deps = [ + ":glue", + "@com_github_fatih_color//:color", + "@com_github_stretchr_testify//require", + ], +) diff --git a/br/pkg/gluetidb/BUILD.bazel b/br/pkg/gluetidb/BUILD.bazel new file mode 100644 index 0000000000000..5340729c1d548 --- /dev/null +++ b/br/pkg/gluetidb/BUILD.bazel @@ -0,0 +1,27 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "gluetidb", + srcs = ["glue.go"], + importpath = "github.com/pingcap/tidb/br/pkg/gluetidb", + visibility = ["//visibility:public"], + deps = [ + "//br/pkg/glue", + "//br/pkg/gluetikv", + "//br/pkg/logutil", + "//config", + "//ddl", + "//domain", + "//executor", + "//kv", + "//meta/autoid", + "//parser/model", + "//parser/mysql", + "//session", + "//sessionctx", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_log//:log", + "@com_github_tikv_pd_client//:client", + "@org_uber_go_zap//:zap", + ], +) diff --git a/br/pkg/gluetikv/BUILD.bazel b/br/pkg/gluetikv/BUILD.bazel new file mode 100644 index 0000000000000..7d8c6118604e4 --- /dev/null +++ b/br/pkg/gluetikv/BUILD.bazel @@ -0,0 +1,26 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "gluetikv", + srcs = ["glue.go"], + importpath = "github.com/pingcap/tidb/br/pkg/gluetikv", + visibility = ["//visibility:public"], + deps = [ + "//br/pkg/glue", + "//br/pkg/summary", + "//br/pkg/utils", + "//br/pkg/version/build", + "//config", + "//domain", + "//kv", + "//store/driver", + "@com_github_tikv_pd_client//:client", + ], +) + +go_test( + name = "gluetikv_test", + srcs = ["glue_test.go"], + embed = [":gluetikv"], + deps = ["@com_github_stretchr_testify//require"], +) diff --git a/br/pkg/httputil/BUILD.bazel b/br/pkg/httputil/BUILD.bazel new file mode 100644 index 0000000000000..2520f0b97a5ab --- /dev/null +++ b/br/pkg/httputil/BUILD.bazel @@ -0,0 +1,8 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "httputil", + srcs = ["http.go"], + importpath = "github.com/pingcap/tidb/br/pkg/httputil", + visibility = ["//visibility:public"], +) diff --git a/br/pkg/lightning/BUILD.bazel b/br/pkg/lightning/BUILD.bazel new file mode 100644 index 0000000000000..1cafc9ec5fbef --- /dev/null +++ b/br/pkg/lightning/BUILD.bazel @@ -0,0 +1,61 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "lightning", + srcs = [ + "lightning.go", + "run_options.go", + "sigusr1_other.go", + "sigusr1_unix.go", + ], + importpath = "github.com/pingcap/tidb/br/pkg/lightning", + visibility = ["//visibility:public"], + deps = [ + "//br/pkg/lightning/backend/local", + "//br/pkg/lightning/checkpoints", + "//br/pkg/lightning/common", + "//br/pkg/lightning/config", + "//br/pkg/lightning/glue", + "//br/pkg/lightning/log", + "//br/pkg/lightning/metric", + "//br/pkg/lightning/mydump", + "//br/pkg/lightning/restore", + "//br/pkg/lightning/tikv", + "//br/pkg/lightning/web", + "//br/pkg/redact", + "//br/pkg/storage", + "//br/pkg/utils", + "//br/pkg/version/build", + "//util/promutil", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_pingcap_kvproto//pkg/import_sstpb", + "@com_github_prometheus_client_golang//prometheus", + "@com_github_prometheus_client_golang//prometheus/collectors", + "@com_github_prometheus_client_golang//prometheus/promhttp", + "@com_github_shurcool_httpgzip//:httpgzip", + "@org_uber_go_zap//:zap", + "@org_uber_go_zap//zapcore", + ], +) + +go_test( + name = "lightning_test", + srcs = [ + "lightning_serial_test.go", + "lightning_server_serial_test.go", + "main_test.go", + ], + embed = [":lightning"], + deps = [ + "//br/pkg/lightning/checkpoints", + "//br/pkg/lightning/config", + "//br/pkg/lightning/glue", + "//br/pkg/lightning/log", + "//br/pkg/lightning/mydump", + "//br/pkg/lightning/web", + "@com_github_docker_go_units//:go-units", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_stretchr_testify//require", + ], +) diff --git a/br/pkg/lightning/backend/BUILD.bazel b/br/pkg/lightning/backend/BUILD.bazel new file mode 100644 index 0000000000000..87239db5e1442 --- /dev/null +++ b/br/pkg/lightning/backend/BUILD.bazel @@ -0,0 +1,40 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "backend", + srcs = ["backend.go"], + importpath = "github.com/pingcap/tidb/br/pkg/lightning/backend", + visibility = ["//visibility:public"], + deps = [ + "//br/pkg/lightning/backend/kv", + "//br/pkg/lightning/checkpoints", + "//br/pkg/lightning/common", + "//br/pkg/lightning/config", + "//br/pkg/lightning/log", + "//br/pkg/lightning/metric", + "//br/pkg/lightning/mydump", + "//parser/model", + "//table", + "@com_github_google_uuid//:uuid", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "backend_test", + srcs = ["backend_test.go"], + deps = [ + ":backend", + "//br/pkg/lightning/backend/kv", + "//br/pkg/mock", + "//parser/mysql", + "@com_github_go_sql_driver_mysql//:mysql", + "@com_github_golang_mock//gomock", + "@com_github_google_uuid//:uuid", + "@com_github_pingcap_errors//:errors", + "@com_github_stretchr_testify//require", + "@com_github_tikv_client_go_v2//oracle", + ], +) diff --git a/br/pkg/lightning/backend/backend.go b/br/pkg/lightning/backend/backend.go index e090cc053dc37..fcfbb60a5aec7 100644 --- a/br/pkg/lightning/backend/backend.go +++ b/br/pkg/lightning/backend/backend.go @@ -69,8 +69,8 @@ func makeTag(tableName string, engineID int32) string { return fmt.Sprintf("%s:%d", tableName, engineID) } -func makeLogger(tag string, engineUUID uuid.UUID) log.Logger { - return log.With( +func makeLogger(logger log.Logger, tag string, engineUUID uuid.UUID) log.Logger { + return logger.With( zap.String("engineTag", tag), zap.Stringer("engineUUID", engineUUID), ) @@ -143,7 +143,7 @@ type AbstractBackend interface { ShouldPostProcess() bool // NewEncoder creates an encoder of a TiDB table. - NewEncoder(tbl table.Table, options *kv.SessionOptions) (kv.Encoder, error) + NewEncoder(ctx context.Context, tbl table.Table, options *kv.SessionOptions) (kv.Encoder, error) OpenEngine(ctx context.Context, config *EngineConfig, engineUUID uuid.UUID) error @@ -260,8 +260,8 @@ func (be Backend) MakeEmptyRows() kv.Rows { return be.abstract.MakeEmptyRows() } -func (be Backend) NewEncoder(tbl table.Table, options *kv.SessionOptions) (kv.Encoder, error) { - return be.abstract.NewEncoder(tbl, options) +func (be Backend) NewEncoder(ctx context.Context, tbl table.Table, options *kv.SessionOptions) (kv.Encoder, error) { + return be.abstract.NewEncoder(ctx, tbl, options) } func (be Backend) ShouldPostProcess() bool { @@ -321,7 +321,7 @@ func (be Backend) UnsafeImportAndReset(ctx context.Context, engineUUID uuid.UUID closedEngine := ClosedEngine{ engine: engine{ backend: be.abstract, - logger: makeLogger("", engineUUID), + logger: makeLogger(log.FromContext(ctx), "", engineUUID), uuid: engineUUID, }, } @@ -334,23 +334,29 @@ func (be Backend) UnsafeImportAndReset(ctx context.Context, engineUUID uuid.UUID // OpenEngine opens an engine with the given table name and engine ID. func (be Backend) OpenEngine(ctx context.Context, config *EngineConfig, tableName string, engineID int32) (*OpenedEngine, error) { tag, engineUUID := MakeUUID(tableName, engineID) - logger := makeLogger(tag, engineUUID) + logger := makeLogger(log.FromContext(ctx), tag, engineUUID) if err := be.abstract.OpenEngine(ctx, config, engineUUID); err != nil { return nil, err } - openCounter := metric.ImporterEngineCounter.WithLabelValues("open") - openCounter.Inc() + if m, ok := metric.FromContext(ctx); ok { + openCounter := m.ImporterEngineCounter.WithLabelValues("open") + openCounter.Inc() + } logger.Info("open engine") failpoint.Inject("FailIfEngineCountExceeds", func(val failpoint.Value) { - closedCounter := metric.ImporterEngineCounter.WithLabelValues("closed") - openCount := metric.ReadCounter(openCounter) - closedCount := metric.ReadCounter(closedCounter) - if injectValue := val.(int); openCount-closedCount > float64(injectValue) { - panic(fmt.Sprintf("forcing failure due to FailIfEngineCountExceeds: %v - %v >= %d", openCount, closedCount, injectValue)) + if m, ok := metric.FromContext(ctx); ok { + closedCounter := m.ImporterEngineCounter.WithLabelValues("closed") + openCounter := m.ImporterEngineCounter.WithLabelValues("open") + openCount := metric.ReadCounter(openCounter) + + closedCount := metric.ReadCounter(closedCounter) + if injectValue := val.(int); openCount-closedCount > float64(injectValue) { + panic(fmt.Sprintf("forcing failure due to FailIfEngineCountExceeds: %v - %v >= %d", openCount, closedCount, injectValue)) + } } }) @@ -380,7 +386,9 @@ func (be Backend) ResolveDuplicateRows(ctx context.Context, tbl table.Table, tab func (engine *OpenedEngine) Close(ctx context.Context, cfg *EngineConfig) (*ClosedEngine, error) { closedEngine, err := engine.unsafeClose(ctx, cfg) if err == nil { - metric.ImporterEngineCounter.WithLabelValues("closed").Inc() + if m, ok := metric.FromContext(ctx); ok { + m.ImporterEngineCounter.WithLabelValues("closed").Inc() + } } return closedEngine, err } @@ -429,7 +437,7 @@ func (be Backend) UnsafeCloseEngine(ctx context.Context, cfg *EngineConfig, tabl func (be Backend) UnsafeCloseEngineWithUUID(ctx context.Context, cfg *EngineConfig, tag string, engineUUID uuid.UUID) (*ClosedEngine, error) { return engine{ backend: be.abstract, - logger: makeLogger(tag, engineUUID), + logger: makeLogger(log.FromContext(ctx), tag, engineUUID), uuid: engineUUID, }.unsafeClose(ctx, cfg) } diff --git a/br/pkg/lightning/backend/backend_test.go b/br/pkg/lightning/backend/backend_test.go index d388e74533833..73adc91deff9f 100644 --- a/br/pkg/lightning/backend/backend_test.go +++ b/br/pkg/lightning/backend/backend_test.go @@ -326,9 +326,9 @@ func TestNewEncoder(t *testing.T) { encoder := mock.NewMockEncoder(s.controller) options := &kv.SessionOptions{SQLMode: mysql.ModeANSIQuotes, Timestamp: 1234567890} - s.mockBackend.EXPECT().NewEncoder(nil, options).Return(encoder, nil) + s.mockBackend.EXPECT().NewEncoder(nil, nil, options).Return(encoder, nil) - realEncoder, err := s.mockBackend.NewEncoder(nil, options) + realEncoder, err := s.mockBackend.NewEncoder(nil, nil, options) require.Equal(t, realEncoder, encoder) require.NoError(t, err) } diff --git a/br/pkg/lightning/backend/importer/BUILD.bazel b/br/pkg/lightning/backend/importer/BUILD.bazel new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/br/pkg/lightning/backend/kv/BUILD.bazel b/br/pkg/lightning/backend/kv/BUILD.bazel new file mode 100644 index 0000000000000..bbf86ff484d9e --- /dev/null +++ b/br/pkg/lightning/backend/kv/BUILD.bazel @@ -0,0 +1,73 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "kv", + srcs = [ + "allocator.go", + "kv2sql.go", + "session.go", + "sql2kv.go", + "types.go", + ], + importpath = "github.com/pingcap/tidb/br/pkg/lightning/backend/kv", + visibility = ["//visibility:public"], + deps = [ + "//br/pkg/lightning/common", + "//br/pkg/lightning/log", + "//br/pkg/lightning/manual", + "//br/pkg/lightning/metric", + "//br/pkg/lightning/verification", + "//br/pkg/logutil", + "//br/pkg/redact", + "//br/pkg/utils", + "//expression", + "//kv", + "//meta/autoid", + "//parser/model", + "//parser/mysql", + "//planner/core", + "//sessionctx", + "//sessionctx/variable", + "//table", + "//table/tables", + "//tablecodec", + "//types", + "//util/chunk", + "//util/mathutil", + "//util/topsql/stmtstats", + "@com_github_docker_go_units//:go-units", + "@com_github_pingcap_errors//:errors", + "@org_uber_go_zap//:zap", + "@org_uber_go_zap//zapcore", + ], +) + +go_test( + name = "kv_test", + srcs = [ + "session_test.go", + "sql2kv_test.go", + ], + embed = [":kv"], + deps = [ + "//br/pkg/lightning/common", + "//br/pkg/lightning/log", + "//br/pkg/lightning/verification", + "//ddl", + "//kv", + "//meta/autoid", + "//parser", + "//parser/ast", + "//parser/model", + "//parser/mysql", + "//sessionctx", + "//table", + "//table/tables", + "//tablecodec", + "//types", + "//util/mock", + "@com_github_stretchr_testify//require", + "@org_uber_go_zap//:zap", + "@org_uber_go_zap//zapcore", + ], +) diff --git a/br/pkg/lightning/backend/kv/kv2sql.go b/br/pkg/lightning/backend/kv/kv2sql.go index 47b9aa5393b2d..1a436bbe822ea 100644 --- a/br/pkg/lightning/backend/kv/kv2sql.go +++ b/br/pkg/lightning/backend/kv/kv2sql.go @@ -17,6 +17,7 @@ package kv import ( "fmt" + "github.com/pingcap/tidb/br/pkg/lightning/log" "github.com/pingcap/tidb/kv" "github.com/pingcap/tidb/parser/model" "github.com/pingcap/tidb/table" @@ -104,8 +105,13 @@ func (t *TableKVDecoder) IterRawIndexKeys(h kv.Handle, rawRow []byte, fn func([] return nil } -func NewTableKVDecoder(tbl table.Table, tableName string, options *SessionOptions) (*TableKVDecoder, error) { - se := newSession(options) +func NewTableKVDecoder( + tbl table.Table, + tableName string, + options *SessionOptions, + logger log.Logger, +) (*TableKVDecoder, error) { + se := newSession(options, logger) cols := tbl.Cols() // Set CommonAddRecordCtx to session to reuse the slices and BufStore in AddRecord recordCtx := tables.NewCommonAddRecordCtx(len(cols)) diff --git a/br/pkg/lightning/backend/kv/session.go b/br/pkg/lightning/backend/kv/session.go index 0e2751135c061..c5b623b31fd24 100644 --- a/br/pkg/lightning/backend/kv/session.go +++ b/br/pkg/lightning/backend/kv/session.go @@ -246,11 +246,11 @@ type SessionOptions struct { } // NewSession creates a new trimmed down Session matching the options. -func NewSession(options *SessionOptions) sessionctx.Context { - return newSession(options) +func NewSession(options *SessionOptions, logger log.Logger) sessionctx.Context { + return newSession(options, logger) } -func newSession(options *SessionOptions) *session { +func newSession(options *SessionOptions, logger log.Logger) *session { sqlMode := options.SQLMode vars := variable.NewSessionVars() vars.SkipUTF8Check = true @@ -265,7 +265,7 @@ func newSession(options *SessionOptions) *session { if options.SysVars != nil { for k, v := range options.SysVars { if err := vars.SetSystemVar(k, v); err != nil { - log.L().DPanic("new session: failed to set system var", + logger.DPanic("new session: failed to set system var", log.ShortError(err), zap.String("key", k)) } @@ -273,7 +273,7 @@ func newSession(options *SessionOptions) *session { } vars.StmtCtx.TimeZone = vars.Location() if err := vars.SetSystemVar("timestamp", strconv.FormatInt(options.Timestamp, 10)); err != nil { - log.L().Warn("new session: failed to set timestamp", + logger.Warn("new session: failed to set timestamp", log.ShortError(err)) } vars.TxnCtx = nil diff --git a/br/pkg/lightning/backend/kv/session_test.go b/br/pkg/lightning/backend/kv/session_test.go index 9703390afb2ec..a37f48c190ed8 100644 --- a/br/pkg/lightning/backend/kv/session_test.go +++ b/br/pkg/lightning/backend/kv/session_test.go @@ -17,12 +17,13 @@ package kv import ( "testing" + "github.com/pingcap/tidb/br/pkg/lightning/log" "github.com/pingcap/tidb/parser/mysql" "github.com/stretchr/testify/require" ) func TestSession(t *testing.T) { - session := newSession(&SessionOptions{SQLMode: mysql.ModeNone, Timestamp: 1234567890}) + session := newSession(&SessionOptions{SQLMode: mysql.ModeNone, Timestamp: 1234567890}, log.L()) _, err := session.Txn(true) require.NoError(t, err) } diff --git a/br/pkg/lightning/backend/kv/sql2kv.go b/br/pkg/lightning/backend/kv/sql2kv.go index 4dc80e0c17ce2..bd13f27e38954 100644 --- a/br/pkg/lightning/backend/kv/sql2kv.go +++ b/br/pkg/lightning/backend/kv/sql2kv.go @@ -63,13 +63,21 @@ type tableKVEncoder struct { genCols []genCol // convert auto id for shard rowid or auto random id base on row id generated by lightning autoIDFn autoIDConverter + metrics *metric.Metrics } -func NewTableKVEncoder(tbl table.Table, options *SessionOptions) (Encoder, error) { - metric.KvEncoderCounter.WithLabelValues("open").Inc() +func NewTableKVEncoder( + tbl table.Table, + options *SessionOptions, + metrics *metric.Metrics, + logger log.Logger, +) (Encoder, error) { + if metrics != nil { + metrics.KvEncoderCounter.WithLabelValues("open").Inc() + } meta := tbl.Meta() cols := tbl.Cols() - se := newSession(options) + se := newSession(options, logger) // Set CommonAddRecordCtx to session to reuse the slices and BufStore in AddRecord recordCtx := tables.NewCommonAddRecordCtx(len(cols)) tables.SetAddRecordCtx(se, recordCtx) @@ -108,6 +116,7 @@ func NewTableKVEncoder(tbl table.Table, options *SessionOptions) (Encoder, error se: se, genCols: genCols, autoIDFn: autoIDFn, + metrics: metrics, }, nil } @@ -188,7 +197,9 @@ func collectGeneratedColumns(se *session, meta *model.TableInfo, cols []*table.C func (kvcodec *tableKVEncoder) Close() { kvcodec.se.Close() - metric.KvEncoderCounter.WithLabelValues("closed").Inc() + if kvcodec.metrics != nil { + kvcodec.metrics.KvEncoderCounter.WithLabelValues("close").Inc() + } } // RowArrayMarshaler wraps a slice of types.Datum for logging the content into zap. @@ -261,7 +272,7 @@ func logKVConvertFailed(logger log.Logger, row []types.Datum, j int, colInfo *mo log.ShortError(err), ) - log.L().Error("failed to covert kv value", logutil.RedactAny("origVal", original.GetValue()), + logger.Error("failed to convert kv value", logutil.RedactAny("origVal", original.GetValue()), zap.Stringer("fieldType", &colInfo.FieldType), zap.String("column", colInfo.Name.O), zap.Int("columnID", j+1)) return errors.Annotatef( @@ -346,7 +357,7 @@ func (kvcodec *tableKVEncoder) Encode( var value types.Datum var err error - //nolint:prealloc // This is a placeholder. + //nolint: prealloc var record []types.Datum if kvcodec.recordCache != nil { @@ -439,6 +450,49 @@ func isPKCol(colInfo *model.ColumnInfo) bool { return mysql.HasPriKeyFlag(colInfo.GetFlag()) } +func isRowIDOverflow(meta *model.ColumnInfo, rowID int64) bool { + isUnsigned := mysql.HasUnsignedFlag(meta.GetFlag()) + switch meta.GetType() { + // MEDIUM INT + case mysql.TypeInt24: + if !isUnsigned { + return rowID > mysql.MaxInt24 + } + return rowID > mysql.MaxUint24 + // INT + case mysql.TypeLong: + if !isUnsigned { + return rowID > math.MaxInt32 + } + return rowID > math.MaxUint32 + // SMALLINT + case mysql.TypeShort: + if !isUnsigned { + return rowID > math.MaxInt16 + } + return rowID > math.MaxUint16 + // TINYINT + case mysql.TypeTiny: + if !isUnsigned { + return rowID > math.MaxInt8 + } + return rowID > math.MaxUint8 + // FLOAT + case mysql.TypeFloat: + if !isUnsigned { + return float32(rowID) > math.MaxFloat32 + } + return float64(rowID) > math.MaxFloat32*2 + // DOUBLE + case mysql.TypeDouble: + if !isUnsigned { + return float64(rowID) > math.MaxFloat64 + } + // impossible for rowID exceeding MaxFloat64 + } + return false +} + func (kvcodec *tableKVEncoder) getActualDatum(rowID int64, colIndex int, inputDatum *types.Datum) (types.Datum, error) { var ( value types.Datum @@ -466,6 +520,11 @@ func (kvcodec *tableKVEncoder) getActualDatum(rowID int64, colIndex int, inputDa // handle special values switch { case isAutoIncCol(col.ToInfo()): + // rowID is going to auto-filled the omitted column, + // which should be checked before restore + if isRowIDOverflow(col.ToInfo(), rowID) { + return value, errors.Errorf("PK %d is out of range", rowID) + } // we still need a conversion, e.g. to catch overflow with a TINYINT column. value, err = table.CastValue(kvcodec.se, types.NewIntDatum(rowID), col.ToInfo(), false, false) case isTableAutoRandom(tblMeta) && isPKCol(col.ToInfo()): diff --git a/br/pkg/lightning/backend/kv/sql2kv_test.go b/br/pkg/lightning/backend/kv/sql2kv_test.go index a202b39bf56fb..b604942e38756 100644 --- a/br/pkg/lightning/backend/kv/sql2kv_test.go +++ b/br/pkg/lightning/backend/kv/sql2kv_test.go @@ -89,7 +89,7 @@ func TestEncode(t *testing.T) { strictMode, err := NewTableKVEncoder(tbl, &SessionOptions{ SQLMode: mysql.ModeStrictAllTables, Timestamp: 1234567890, - }) + }, nil, logger) require.NoError(t, err) pairs, err := strictMode.Encode(logger, rows, 1, []int{0, 1}, "1.csv", 1234) require.Regexp(t, "failed to cast value as tinyint\\(4\\) for column `c1` \\(#1\\):.*overflows tinyint", err) @@ -121,7 +121,7 @@ func TestEncode(t *testing.T) { mockMode, err := NewTableKVEncoder(mockTbl, &SessionOptions{ SQLMode: mysql.ModeStrictAllTables, Timestamp: 1234567891, - }) + }, nil, logger) require.NoError(t, err) _, err = mockMode.Encode(logger, rowsWithPk2, 2, []int{0, 1}, "1.csv", 1234) require.EqualError(t, err, "mock error") @@ -131,7 +131,7 @@ func TestEncode(t *testing.T) { SQLMode: mysql.ModeNone, Timestamp: 1234567892, SysVars: map[string]string{"tidb_row_format_version": "1"}, - }) + }, nil, logger) require.NoError(t, err) pairs, err = noneMode.Encode(logger, rows, 1, []int{0, 1}, "1.csv", 1234) require.NoError(t, err) @@ -153,7 +153,7 @@ func TestDecode(t *testing.T) { decoder, err := NewTableKVDecoder(tbl, "`test`.`c1`", &SessionOptions{ SQLMode: mysql.ModeStrictAllTables, Timestamp: 1234567890, - }) + }, log.L()) require.NoError(t, err) require.NotNil(t, decoder) require.Equal(t, decoder.Name(), "`test`.`c1`") @@ -208,7 +208,7 @@ func TestDecodeIndex(t *testing.T) { strictMode, err := NewTableKVEncoder(tbl, &SessionOptions{ SQLMode: mysql.ModeStrictAllTables, Timestamp: 1234567890, - }) + }, nil, log.L()) require.NoError(t, err) pairs, err := strictMode.Encode(logger, rows, 1, []int{0, 1, -1}, "1.csv", 123) data := pairs.(*KvPairs) @@ -217,7 +217,7 @@ func TestDecodeIndex(t *testing.T) { decoder, err := NewTableKVDecoder(tbl, "`test`.``", &SessionOptions{ SQLMode: mysql.ModeStrictAllTables, Timestamp: 1234567890, - }) + }, log.L()) require.NoError(t, err) h1, err := decoder.DecodeHandleFromRowKey(data.pairs[0].Key) require.NoError(t, err) @@ -247,7 +247,7 @@ func TestEncodeRowFormatV2(t *testing.T) { SQLMode: mysql.ModeNone, Timestamp: 1234567892, SysVars: map[string]string{"tidb_row_format_version": "2"}, - }) + }, nil, log.L()) require.NoError(t, err) pairs, err := noneMode.Encode(logger, rows, 1, []int{0, 1}, "1.csv", 1234) require.NoError(t, err) @@ -295,7 +295,7 @@ func TestEncodeTimestamp(t *testing.T) { "tidb_row_format_version": "1", "time_zone": "+08:00", }, - }) + }, nil, log.L()) require.NoError(t, err) pairs, err := encoder.Encode(logger, nil, 70, []int{-1, 1}, "1.csv", 1234) require.NoError(t, err) @@ -320,7 +320,7 @@ func TestEncodeDoubleAutoIncrement(t *testing.T) { SysVars: map[string]string{ "tidb_row_format_version": "2", }, - }) + }, nil, log.L()) require.NoError(t, err) strDatumForID := types.NewStringDatum("1") @@ -386,7 +386,7 @@ func TestEncodeMissingAutoValue(t *testing.T) { SysVars: map[string]string{ "tidb_row_format_version": "2", }, - }) + }, nil, log.L()) require.NoError(t, err) realRowID := encoder.(*tableKVEncoder).autoIDFn(rowID) @@ -447,7 +447,7 @@ func TestDefaultAutoRandoms(t *testing.T) { Timestamp: 1234567893, SysVars: map[string]string{"tidb_row_format_version": "2"}, AutoRandomSeed: 456, - }) + }, nil, log.L()) require.NoError(t, err) logger := log.Logger{Logger: zap.NewNop()} pairs, err := encoder.Encode(logger, []types.Datum{types.NewStringDatum("")}, 70, []int{-1, 0}, "1.csv", 1234) @@ -482,7 +482,7 @@ func TestShardRowId(t *testing.T) { Timestamp: 1234567893, SysVars: map[string]string{"tidb_row_format_version": "2"}, AutoRandomSeed: 456, - }) + }, nil, log.L()) require.NoError(t, err) logger := log.Logger{Logger: zap.NewNop()} keyMap := make(map[int64]struct{}, 16) @@ -636,7 +636,7 @@ func SetUpTest(b *testing.B) *benchSQL2KVSuite { // Construct the corresponding KV encoder. tbl, err := tables.TableFromMeta(NewPanickingAllocators(0), tableInfo) require.NoError(b, err) - encoder, err := NewTableKVEncoder(tbl, &SessionOptions{SysVars: map[string]string{"tidb_row_format_version": "2"}}) + encoder, err := NewTableKVEncoder(tbl, &SessionOptions{SysVars: map[string]string{"tidb_row_format_version": "2"}}, nil, log.L()) require.NoError(b, err) logger := log.Logger{Logger: zap.NewNop()} diff --git a/br/pkg/lightning/backend/local/BUILD.bazel b/br/pkg/lightning/backend/local/BUILD.bazel new file mode 100644 index 0000000000000..4b3102aca7f34 --- /dev/null +++ b/br/pkg/lightning/backend/local/BUILD.bazel @@ -0,0 +1,130 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "local", + srcs = [ + "duplicate.go", + "engine.go", + "iterator.go", + "key_adapter.go", + "local.go", + "local_freebsd.go", + "local_unix.go", + "local_unix_generic.go", + "local_windows.go", + "localhelper.go", + ], + importpath = "github.com/pingcap/tidb/br/pkg/lightning/backend/local", + visibility = ["//visibility:public"], + deps = [ + "//br/pkg/lightning/backend", + "//br/pkg/lightning/backend/kv", + "//br/pkg/lightning/checkpoints", + "//br/pkg/lightning/common", + "//br/pkg/lightning/config", + "//br/pkg/lightning/errormanager", + "//br/pkg/lightning/glue", + "//br/pkg/lightning/log", + "//br/pkg/lightning/manual", + "//br/pkg/lightning/metric", + "//br/pkg/lightning/tikv", + "//br/pkg/lightning/worker", + "//br/pkg/logutil", + "//br/pkg/membuf", + "//br/pkg/pdutil", + "//br/pkg/restore", + "//br/pkg/utils", + "//br/pkg/version", + "//distsql", + "//infoschema", + "//kv", + "//parser/model", + "//parser/mysql", + "//table", + "//tablecodec", + "//util/codec", + "//util/hack", + "//util/mathutil", + "//util/ranger", + "@com_github_cockroachdb_pebble//:pebble", + "@com_github_cockroachdb_pebble//sstable", + "@com_github_coreos_go_semver//semver", + "@com_github_docker_go_units//:go-units", + "@com_github_google_btree//:btree", + "@com_github_google_uuid//:uuid", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_pingcap_kvproto//pkg/errorpb", + "@com_github_pingcap_kvproto//pkg/import_sstpb", + "@com_github_pingcap_kvproto//pkg/kvrpcpb", + "@com_github_pingcap_kvproto//pkg/metapb", + "@com_github_pingcap_kvproto//pkg/pdpb", + "@com_github_tikv_client_go_v2//error", + "@com_github_tikv_client_go_v2//oracle", + "@com_github_tikv_client_go_v2//tikv", + "@com_github_tikv_pd_client//:client", + "@org_golang_google_grpc//:grpc", + "@org_golang_google_grpc//backoff", + "@org_golang_google_grpc//codes", + "@org_golang_google_grpc//credentials", + "@org_golang_google_grpc//keepalive", + "@org_golang_google_grpc//status", + "@org_golang_x_sync//errgroup", + "@org_golang_x_time//rate", + "@org_uber_go_atomic//:atomic", + "@org_uber_go_multierr//:multierr", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "local_test", + srcs = [ + "engine_test.go", + "iterator_test.go", + "key_adapter_test.go", + "local_test.go", + "localhelper_test.go", + ], + embed = [":local"], + deps = [ + "//br/pkg/lightning/backend", + "//br/pkg/lightning/backend/kv", + "//br/pkg/lightning/common", + "//br/pkg/lightning/glue", + "//br/pkg/lightning/log", + "//br/pkg/lightning/mydump", + "//br/pkg/membuf", + "//br/pkg/mock", + "//br/pkg/pdutil", + "//br/pkg/restore", + "//br/pkg/utils", + "//br/pkg/version", + "//kv", + "//parser/mysql", + "//sessionctx/stmtctx", + "//store/pdtypes", + "//tablecodec", + "//types", + "//util/codec", + "//util/hack", + "@com_github_cockroachdb_pebble//:pebble", + "@com_github_cockroachdb_pebble//sstable", + "@com_github_coreos_go_semver//semver", + "@com_github_docker_go_units//:go-units", + "@com_github_golang_mock//gomock", + "@com_github_google_uuid//:uuid", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_pingcap_kvproto//pkg/errorpb", + "@com_github_pingcap_kvproto//pkg/import_sstpb", + "@com_github_pingcap_kvproto//pkg/metapb", + "@com_github_pingcap_kvproto//pkg/pdpb", + "@com_github_stretchr_testify//require", + "@com_github_tikv_pd_client//:client", + "@org_golang_google_grpc//:grpc", + "@org_golang_google_grpc//codes", + "@org_golang_google_grpc//status", + "@org_uber_go_atomic//:atomic", + ], +) diff --git a/br/pkg/lightning/backend/local/duplicate.go b/br/pkg/lightning/backend/local/duplicate.go index 983ae33fcfd68..be446f81b9ba4 100644 --- a/br/pkg/lightning/backend/local/duplicate.go +++ b/br/pkg/lightning/backend/local/duplicate.go @@ -223,6 +223,7 @@ func tableHandleKeyRanges(tableInfo *model.TableInfo) ([]tidbkv.KeyRange, error) // tableIndexKeyRanges returns all key ranges associated with the tableInfo and indexInfo. func tableIndexKeyRanges(tableInfo *model.TableInfo, indexInfo *model.IndexInfo) ([]tidbkv.KeyRange, error) { tableIDs := physicalTableIDs(tableInfo) + //nolint: prealloc var keyRanges []tidbkv.KeyRange for _, tid := range tableIDs { partitionKeysRanges, err := distsql.IndexRangesToKVRanges(nil, tid, indexInfo.ID, ranger.FullRange(), nil) @@ -411,12 +412,13 @@ func NewDuplicateManager( sessOpts *kv.SessionOptions, concurrency int, hasDupe *atomic.Bool, + logger log.Logger, ) (*DuplicateManager, error) { - decoder, err := kv.NewTableKVDecoder(tbl, tableName, sessOpts) + logger = logger.With(zap.String("tableName", tableName)) + decoder, err := kv.NewTableKVDecoder(tbl, tableName, sessOpts, logger) if err != nil { return nil, errors.Trace(err) } - logger := log.With(zap.String("tableName", tableName)) return &DuplicateManager{ tbl: tbl, tableName: tableName, @@ -605,6 +607,7 @@ func (m *DuplicateManager) buildLocalDupTasks(dupDB *pebble.DB, keyAdapter KeyAd if err != nil { return nil, errors.Trace(err) } + //nolint: prealloc var newTasks []dupTask for _, task := range tasks { // FIXME: Do not hardcode sizeLimit and keysLimit. @@ -705,10 +708,11 @@ func (m *DuplicateManager) processRemoteDupTaskOnce( regionPool *utils.WorkerPool, remainKeyRanges *pendingKeyRanges, ) (madeProgress bool, err error) { - var ( - regions []*restore.RegionInfo - keyRanges []tidbkv.KeyRange - ) + //nolint: prealloc + var regions []*restore.RegionInfo + //nolint: prealloc + var keyRanges []tidbkv.KeyRange + for _, kr := range remainKeyRanges.list() { subRegions, subKeyRanges, err := m.splitKeyRangeByRegions(ctx, kr) if err != nil { diff --git a/br/pkg/lightning/backend/local/engine.go b/br/pkg/lightning/backend/local/engine.go index 82ebc4c4c3e65..04036e57b16ac 100644 --- a/br/pkg/lightning/backend/local/engine.go +++ b/br/pkg/lightning/backend/local/engine.go @@ -33,6 +33,7 @@ import ( "github.com/google/btree" "github.com/google/uuid" "github.com/pingcap/errors" + "github.com/pingcap/failpoint" "github.com/pingcap/tidb/br/pkg/lightning/backend" "github.com/pingcap/tidb/br/pkg/lightning/backend/kv" "github.com/pingcap/tidb/br/pkg/lightning/checkpoints" @@ -134,6 +135,8 @@ type Engine struct { duplicateDetection bool duplicateDB *pebble.DB errorMgr *errormanager.ErrorManager + + logger log.Logger } func (e *Engine) setError(err error) { @@ -144,7 +147,7 @@ func (e *Engine) setError(err error) { } func (e *Engine) Close() error { - log.L().Debug("closing local engine", zap.Stringer("engine", e.UUID), zap.Stack("stack")) + e.logger.Debug("closing local engine", zap.Stringer("engine", e.UUID), zap.Stack("stack")) if e.db == nil { return nil } @@ -773,7 +776,7 @@ func (e *Engine) ingestSSTs(metas []*sstMeta) error { totalCount += m.totalCount fileSize += m.fileSize } - log.L().Info("write data to local DB", + e.logger.Info("write data to local DB", zap.Int64("size", totalSize), zap.Int64("kvs", totalCount), zap.Int("files", len(metas)), @@ -860,7 +863,7 @@ func saveEngineMetaToDB(meta *engineMeta, db *pebble.DB) error { // saveEngineMeta saves the metadata about the DB into the DB itself. // This method should be followed by a Flush to ensure the data is actually synchronized func (e *Engine) saveEngineMeta() error { - log.L().Debug("save engine meta", zap.Stringer("uuid", e.UUID), zap.Int64("count", e.Length.Load()), + e.logger.Debug("save engine meta", zap.Stringer("uuid", e.UUID), zap.Int64("count", e.Length.Load()), zap.Int64("size", e.TotalSize.Load())) return errors.Trace(saveEngineMetaToDB(&e.engineMeta, e.db)) } @@ -869,7 +872,7 @@ func (e *Engine) loadEngineMeta() error { jsonBytes, closer, err := e.db.Get(engineMetaKey) if err != nil { if err == pebble.ErrNotFound { - log.L().Debug("local db missing engine meta", zap.Stringer("uuid", e.UUID), log.ShortError(err)) + e.logger.Debug("local db missing engine meta", zap.Stringer("uuid", e.UUID), log.ShortError(err)) return nil } return err @@ -877,10 +880,10 @@ func (e *Engine) loadEngineMeta() error { defer closer.Close() if err = json.Unmarshal(jsonBytes, &e.engineMeta); err != nil { - log.L().Warn("local db failed to deserialize meta", zap.Stringer("uuid", e.UUID), zap.ByteString("content", jsonBytes), zap.Error(err)) + e.logger.Warn("local db failed to deserialize meta", zap.Stringer("uuid", e.UUID), zap.ByteString("content", jsonBytes), zap.Error(err)) return err } - log.L().Debug("load engine meta", zap.Stringer("uuid", e.UUID), zap.Int64("count", e.Length.Load()), + e.logger.Debug("load engine meta", zap.Stringer("uuid", e.UUID), zap.Int64("count", e.Length.Load()), zap.Int64("size", e.TotalSize.Load())) return nil } @@ -960,7 +963,7 @@ func (e *Engine) newKVIter(ctx context.Context, opts *pebble.IterOptions) Iter { if !e.duplicateDetection { return pebbleIter{Iterator: e.db.NewIter(opts)} } - logger := log.With( + 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)) @@ -1000,6 +1003,21 @@ type Writer struct { batchSize int64 lastMetaSeq int32 + prevRowID int64 // only used for appendRowsSorted +} + +func (w *Writer) flushAndNewWriter() error { + var err error + err = w.flush(context.Background()) + if err != nil { + return errors.Trace(err) + } + newWriter, err := w.createSSTWriter() + if err != nil { + return errors.Trace(err) + } + w.writer = newWriter + return nil } func (w *Writer) appendRowsSorted(kvs []common.KvPair) error { @@ -1010,6 +1028,17 @@ func (w *Writer) appendRowsSorted(kvs []common.KvPair) error { } w.writer = writer } + if len(kvs) == 0 { + return nil + } + if w.prevRowID != 0 && kvs[0].RowID > w.prevRowID+1 { + // rowID leap. probably re-alloc id + // should write to different sst + err := w.flushAndNewWriter() + if err != nil { + return err + } + } keyAdapter := w.engine.keyAdapter totalKeySize := 0 @@ -1034,7 +1063,26 @@ func (w *Writer) appendRowsSorted(kvs []common.KvPair) error { } kvs = newKvs } - return w.writer.writeKVs(kvs) + startIdx := 0 + w.prevRowID = kvs[len(kvs)-1].RowID + for i := 1; i < len(kvs); i++ { + if kvs[i].RowID > kvs[i-1].RowID+1 { + // leap id + err := w.writer.writeKVs(kvs[startIdx:i]) + if err != nil { + return err + } + err = w.flushAndNewWriter() + if err != nil { + return err + } + startIdx = i + } + } + if startIdx < len(kvs) { + return w.writer.writeKVs(kvs[startIdx:]) + } + return nil } func (w *Writer) appendRowsUnsorted(ctx context.Context, kvs []common.KvPair) error { @@ -1101,6 +1149,9 @@ func (w *Writer) AppendRows(ctx context.Context, tableName string, columnNames [ } func (w *Writer) flush(ctx context.Context) error { + failpoint.Inject("MockFlushWriter", func() { + failpoint.Return(nil) + }) w.Lock() defer w.Unlock() if w.batchCount == 0 { @@ -1198,7 +1249,7 @@ func (w *Writer) createSSTWriter() (*sstWriter, error) { if err != nil { return nil, err } - sw := &sstWriter{sstMeta: &sstMeta{path: path}, writer: writer} + sw := &sstWriter{sstMeta: &sstMeta{path: path}, writer: writer, logger: w.engine.logger} return sw, nil } @@ -1207,6 +1258,7 @@ var errorUnorderedSSTInsertion = errors.New("inserting KVs into SST without orde type sstWriter struct { *sstMeta writer *sstable.Writer + logger log.Logger } func newSSTWriter(path string) (*sstable.Writer, error) { @@ -1240,7 +1292,7 @@ func (sw *sstWriter) writeKVs(kvs []common.KvPair) error { var lastKey []byte for _, p := range kvs { if bytes.Equal(p.Key, lastKey) { - log.L().Warn("duplicated key found, skip write", logutil.Key("key", p.Key)) + sw.logger.Warn("duplicated key found, skip write", logutil.Key("key", p.Key)) continue } internalKey.UserKey = p.Key @@ -1418,7 +1470,7 @@ func (i dbSSTIngester) mergeSSTs(metas []*sstMeta, dir string) (*sstMeta, error) lastKey := make([]byte, 0) for { if bytes.Equal(lastKey, key) { - log.L().Warn("duplicated key found, skipped", zap.Binary("key", lastKey)) + i.e.logger.Warn("duplicated key found, skipped", zap.Binary("key", lastKey)) newMeta.totalCount-- newMeta.totalSize -= int64(len(key) + len(val)) @@ -1451,7 +1503,7 @@ func (i dbSSTIngester) mergeSSTs(metas []*sstMeta, dir string) (*sstMeta, error) newMeta.fileSize = int64(meta.Size) dur := time.Since(start) - log.L().Info("compact sst", zap.Int("fileCount", len(metas)), zap.Int64("size", newMeta.totalSize), + i.e.logger.Info("compact sst", zap.Int("fileCount", len(metas)), zap.Int64("size", newMeta.totalSize), zap.Int64("count", newMeta.totalCount), zap.Duration("cost", dur), zap.String("file", name)) // async clean raw SSTs. @@ -1460,7 +1512,7 @@ func (i dbSSTIngester) mergeSSTs(metas []*sstMeta, dir string) (*sstMeta, error) for _, m := range metas { totalSize += m.fileSize if err := os.Remove(m.path); err != nil { - log.L().Warn("async cleanup sst file failed", zap.Error(err)) + i.e.logger.Warn("async cleanup sst file failed", zap.Error(err)) } } // decrease the pending size after clean up diff --git a/br/pkg/lightning/backend/local/engine_test.go b/br/pkg/lightning/backend/local/engine_test.go index d78aa29ee1c36..13c890c028297 100644 --- a/br/pkg/lightning/backend/local/engine_test.go +++ b/br/pkg/lightning/backend/local/engine_test.go @@ -26,9 +26,12 @@ import ( "github.com/cockroachdb/pebble" "github.com/cockroachdb/pebble/sstable" "github.com/google/uuid" + "github.com/pingcap/tidb/br/pkg/lightning/log" "github.com/stretchr/testify/require" + "github.com/pingcap/failpoint" "github.com/pingcap/tidb/br/pkg/lightning/backend" + "github.com/pingcap/tidb/br/pkg/lightning/common" ) func TestIngestSSTWithClosedEngine(t *testing.T) { @@ -57,6 +60,7 @@ func TestIngestSSTWithClosedEngine(t *testing.T) { cancel: cancel, sstMetasChan: make(chan metaOrFlush, 64), keyAdapter: noopKeyAdapter{}, + logger: log.L(), } f.sstIngester = dbSSTIngester{e: f} sstPath := path.Join(tmpPath, uuid.New().String()+".sst") @@ -83,3 +87,112 @@ func TestIngestSSTWithClosedEngine(t *testing.T) { }, }), errorEngineClosed) } + +func TestAutoSplitSST(t *testing.T) { + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/br/pkg/lightning/backend/local/MockFlushWriter", "return(true)")) + defer func() { + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/br/pkg/lightning/backend/local/MockFlushWriter")) + }() + var err error + dir := os.TempDir() + w := &Writer{ + engine: &Engine{ + sstDir: dir, + keyAdapter: noopKeyAdapter{}, + logger: log.L(), + }, + isKVSorted: true, + isWriteBatchSorted: true, + } + w.engine.closed.Store(false) + w.writer, err = w.createSSTWriter() + require.Nil(t, err) + kvs := []common.KvPair{ + { + Key: []byte("1"), + Val: []byte("val1"), + RowID: 1, + }, + { + Key: []byte("2"), + Val: []byte("val1"), + RowID: 2, + }, + } + prevWriter := w.writer + err = w.appendRowsSorted(kvs) + require.Nil(t, err) + require.True(t, prevWriter == w.writer) + kvs = []common.KvPair{ + { + Key: []byte("10"), + Val: []byte("val10"), + RowID: 10, + }, + { + Key: []byte("11"), + Val: []byte("val11"), + RowID: 11, + }, + } + err = w.appendRowsSorted(kvs) + require.Nil(t, err) + require.False(t, prevWriter == w.writer) // id leap, should flush and create + prevWriter = w.writer + kvs = []common.KvPair{ + { + Key: []byte("12"), + Val: []byte("val12"), + RowID: 10, + }, + { + Key: []byte("13"), + Val: []byte("val13"), + RowID: 11, + }, + { + Key: []byte("15"), + Val: []byte("val15"), + RowID: 15, + }, + } + err = w.appendRowsSorted(kvs) + require.Nil(t, err) + require.False(t, prevWriter == w.writer) // id leap, should flush and create + prevWriter = w.writer + kvs = []common.KvPair{ + { + Key: []byte("16"), + Val: []byte("val16"), + RowID: 16, + }, + { + Key: []byte("17"), + Val: []byte("val17"), + RowID: 17, + }, + { + Key: []byte("19"), + Val: []byte("val19"), + RowID: 19, + }, + { + Key: []byte("20"), + Val: []byte("val20"), + RowID: 20, + }, + { + Key: []byte("22"), + Val: []byte("val22"), + RowID: 22, + }, + { + Key: []byte("23"), + Val: []byte("val23"), + RowID: 22, + }, + } + err = w.appendRowsSorted(kvs) + require.Nil(t, err) + require.False(t, prevWriter == w.writer) // id leap, should flush and create +} diff --git a/br/pkg/lightning/backend/local/local.go b/br/pkg/lightning/backend/local/local.go index 0d19c6887c4f8..76bdba192bd99 100644 --- a/br/pkg/lightning/backend/local/local.go +++ b/br/pkg/lightning/backend/local/local.go @@ -232,7 +232,10 @@ type local struct { errorMgr *errormanager.ErrorManager importClientFactory ImportClientFactory - bufferPool *membuf.Pool + bufferPool *membuf.Pool + metrics *metric.Metrics + writeLimiter StoreWriteLimiter + logger log.Logger } func openDuplicateDB(storeDir string) (*pebble.DB, error) { @@ -307,6 +310,12 @@ func NewLocalBackend( if duplicateDetection { keyAdapter = dupDetectKeyAdapter{} } + var writeLimiter StoreWriteLimiter + if cfg.TikvImporter.StoreWriteBWLimit > 0 { + writeLimiter = newStoreWriteLimiter(int(cfg.TikvImporter.StoreWriteBWLimit)) + } else { + writeLimiter = noopStoreWriteLimiter{} + } local := &local{ engines: sync.Map{}, pdCtl: pdCtl, @@ -333,6 +342,11 @@ func NewLocalBackend( errorMgr: errorMgr, importClientFactory: importClientFactory, bufferPool: membuf.NewPool(membuf.WithAllocator(manual.Allocator{})), + writeLimiter: writeLimiter, + logger: log.FromContext(ctx), + } + if m, ok := metric.FromContext(ctx); ok { + local.metrics = m } if err = local.checkMultiIngestSupport(ctx); err != nil { return backend.MakeBackend(nil), common.ErrCheckMultiIngest.Wrap(err).GenWithStackByArgs() @@ -372,7 +386,7 @@ func (local *local) checkMultiIngestSupport(ctx context.Context) error { client, err1 := local.getImportClient(ctx, s.Id) if err1 != nil { err = err1 - log.L().Warn("get import client failed", zap.Error(err), zap.String("store", s.Address)) + log.FromContext(ctx).Warn("get import client failed", zap.Error(err), zap.String("store", s.Address)) continue } _, err = client.MultiIngest(ctx, &sst.MultiIngestRequest{}) @@ -381,12 +395,12 @@ func (local *local) checkMultiIngestSupport(ctx context.Context) error { } if st, ok := status.FromError(err); ok { if st.Code() == codes.Unimplemented { - log.L().Info("multi ingest not support", zap.Any("unsupported store", s)) + log.FromContext(ctx).Info("multi ingest not support", zap.Any("unsupported store", s)) local.supportMultiIngest = false return nil } } - log.L().Warn("check multi ingest support failed", zap.Error(err), zap.String("store", s.Address), + log.FromContext(ctx).Warn("check multi ingest support failed", zap.Error(err), zap.String("store", s.Address), zap.Int("retry", i)) } if err != nil { @@ -395,14 +409,14 @@ func (local *local) checkMultiIngestSupport(ctx context.Context) error { if hasTiFlash { return errors.Trace(err) } - log.L().Warn("check multi failed all retry, fallback to false", log.ShortError(err)) + log.FromContext(ctx).Warn("check multi failed all retry, fallback to false", log.ShortError(err)) local.supportMultiIngest = false return nil } } local.supportMultiIngest = true - log.L().Info("multi ingest support") + log.FromContext(ctx).Info("multi ingest support") return nil } @@ -467,6 +481,7 @@ func (local *local) Close() { engine.Close() engine.unlock() } + local.importClientFactory.Close() local.bufferPool.Destroy() @@ -476,22 +491,22 @@ func (local *local) Close() { hasDuplicates := iter.First() allIsWell := true if err := iter.Error(); err != nil { - log.L().Warn("iterate duplicate db failed", zap.Error(err)) + local.logger.Warn("iterate duplicate db failed", zap.Error(err)) allIsWell = false } if err := iter.Close(); err != nil { - log.L().Warn("close duplicate db iter failed", zap.Error(err)) + local.logger.Warn("close duplicate db iter failed", zap.Error(err)) allIsWell = false } if err := local.duplicateDB.Close(); err != nil { - log.L().Warn("close duplicate db failed", zap.Error(err)) + local.logger.Warn("close duplicate db failed", zap.Error(err)) allIsWell = false } // If checkpoint is disabled, or we don't detect any duplicate, then this duplicate // db dir will be useless, so we clean up this dir. if allIsWell && (!local.checkpointEnabled || !hasDuplicates) { if err := os.RemoveAll(filepath.Join(local.localStoreDir, duplicateDBName)); err != nil { - log.L().Warn("remove duplicate db file failed", zap.Error(err)) + local.logger.Warn("remove duplicate db file failed", zap.Error(err)) } } local.duplicateDB = nil @@ -502,7 +517,7 @@ func (local *local) Close() { if !local.checkpointEnabled || common.IsEmptyDir(local.localStoreDir) { err := os.RemoveAll(local.localStoreDir) if err != nil { - log.L().Warn("remove local db file failed", zap.Error(err)) + local.logger.Warn("remove local db file failed", zap.Error(err)) } } @@ -614,6 +629,7 @@ func (local *local) OpenEngine(ctx context.Context, cfg *backend.EngineConfig, e duplicateDB: local.duplicateDB, errorMgr: local.errorMgr, keyAdapter: local.keyAdapter, + logger: log.FromContext(ctx), }) engine := e.(*Engine) engine.db = db @@ -662,6 +678,7 @@ func (local *local) CloseEngine(ctx context.Context, cfg *backend.EngineConfig, duplicateDetection: local.duplicateDetection, duplicateDB: local.duplicateDB, errorMgr: local.errorMgr, + logger: log.FromContext(ctx), } engine.sstIngester = dbSSTIngester{e: engine} if err = engine.loadEngineMeta(); err != nil { @@ -738,7 +755,7 @@ func (local *local) WriteToTiKV( break } if e != nil { - log.L().Error("failed to get StoreInfo from pd http api", zap.Error(e)) + log.FromContext(ctx).Error("failed to get StoreInfo from pd http api", zap.Error(e)) } } } @@ -755,7 +772,7 @@ func (local *local) WriteToTiKV( return nil, Range{}, stats, errors.Annotate(iter.Error(), "failed to read the first key") } if !iter.Valid() { - log.L().Info("keys within region is empty, skip ingest", logutil.Key("start", start), + log.FromContext(ctx).Info("keys within region is empty, skip ingest", logutil.Key("start", start), logutil.Key("regionStart", region.Region.StartKey), logutil.Key("end", end), logutil.Key("regionEnd", region.Region.EndKey)) return nil, regionRange, stats, nil @@ -780,6 +797,7 @@ func (local *local) WriteToTiKV( leaderID := region.Leader.GetId() clients := make([]sst.ImportSST_WriteClient, 0, len(region.Region.GetPeers())) + storeIDs := make([]uint64, 0, len(region.Region.GetPeers())) requests := make([]*sst.WriteRequest, 0, len(region.Region.GetPeers())) for _, peer := range region.Region.GetPeers() { cli, err := local.getImportClient(ctx, peer.StoreId) @@ -808,6 +826,7 @@ func (local *local) WriteToTiKV( } clients = append(clients, wstream) requests = append(requests, req) + storeIDs = append(storeIDs, peer.StoreId) } bytesBuf := local.bufferPool.NewBuffer() @@ -815,43 +834,57 @@ func (local *local) WriteToTiKV( pairs := make([]*sst.Pair, 0, local.batchWriteKVPairs) count := 0 size := int64(0) + totalSize := int64(0) totalCount := int64(0) - firstLoop := true // if region-split-size <= 96MiB, we bump the threshold a bit to avoid too many retry split // because the range-properties is not 100% accurate regionMaxSize := regionSplitSize if regionSplitSize <= int64(config.SplitRegionSize) { regionMaxSize = regionSplitSize * 4 / 3 } + // Set a lower flush limit to make the speed of write more smooth. + flushLimit := int64(local.writeLimiter.Limit() / 10) + + flushKVs := func() error { + for i := range clients { + if err := local.writeLimiter.WaitN(ctx, storeIDs[i], int(size)); err != nil { + return errors.Trace(err) + } + requests[i].Chunk.(*sst.WriteRequest_Batch).Batch.Pairs = pairs[:count] + if err := clients[i].Send(requests[i]); err != nil { + return errors.Trace(err) + } + } + return nil + } for iter.First(); iter.Valid(); iter.Next() { - size += int64(len(iter.Key()) + len(iter.Value())) + kvSize := int64(len(iter.Key()) + len(iter.Value())) // here we reuse the `*sst.Pair`s to optimize object allocation - if firstLoop { + if count < len(pairs) { + pairs[count].Key = bytesBuf.AddBytes(iter.Key()) + pairs[count].Value = bytesBuf.AddBytes(iter.Value()) + } else { pair := &sst.Pair{ Key: bytesBuf.AddBytes(iter.Key()), Value: bytesBuf.AddBytes(iter.Value()), } pairs = append(pairs, pair) - } else { - pairs[count].Key = bytesBuf.AddBytes(iter.Key()) - pairs[count].Value = bytesBuf.AddBytes(iter.Value()) } count++ totalCount++ + size += kvSize + totalSize += kvSize - if count >= local.batchWriteKVPairs { - for i := range clients { - requests[i].Chunk.(*sst.WriteRequest_Batch).Batch.Pairs = pairs[:count] - if err := clients[i].Send(requests[i]); err != nil { - return nil, Range{}, stats, errors.Trace(err) - } + if count >= local.batchWriteKVPairs || size >= flushLimit { + if err := flushKVs(); err != nil { + return nil, Range{}, stats, err } count = 0 + size = 0 bytesBuf.Reset() - firstLoop = false } - if size >= regionMaxSize || totalCount >= regionSplitKeys { + if totalSize >= regionMaxSize || totalCount >= regionSplitKeys { break } } @@ -861,12 +894,12 @@ func (local *local) WriteToTiKV( } if count > 0 { - for i := range clients { - requests[i].Chunk.(*sst.WriteRequest_Batch).Batch.Pairs = pairs[:count] - if err := clients[i].Send(requests[i]); err != nil { - return nil, Range{}, stats, errors.Trace(err) - } + if err := flushKVs(); err != nil { + return nil, Range{}, stats, err } + count = 0 + size = 0 + bytesBuf.Reset() } var leaderPeerMetas []*sst.SSTMeta @@ -880,20 +913,20 @@ func (local *local) WriteToTiKV( } if leaderID == region.Region.Peers[i].GetId() { leaderPeerMetas = resp.Metas - log.L().Debug("get metas after write kv stream to tikv", zap.Reflect("metas", leaderPeerMetas)) + log.FromContext(ctx).Debug("get metas after write kv stream to tikv", zap.Reflect("metas", leaderPeerMetas)) } } // if there is not leader currently, we should directly return an error if len(leaderPeerMetas) == 0 { - log.L().Warn("write to tikv no leader", logutil.Region(region.Region), logutil.Leader(region.Leader), + log.FromContext(ctx).Warn("write to tikv no leader", logutil.Region(region.Region), logutil.Leader(region.Leader), zap.Uint64("leader_id", leaderID), logutil.SSTMeta(meta), zap.Int64("kv_pairs", totalCount), zap.Int64("total_bytes", size)) return nil, Range{}, stats, errors.Errorf("write to tikv with no leader returned, region '%d', leader: %d", region.Region.Id, leaderID) } - log.L().Debug("write to kv", zap.Reflect("region", region), zap.Uint64("leader", leaderID), + log.FromContext(ctx).Debug("write to kv", zap.Reflect("region", region), zap.Uint64("leader", leaderID), zap.Reflect("meta", meta), zap.Reflect("return metas", leaderPeerMetas), zap.Int64("kv_pairs", totalCount), zap.Int64("total_bytes", size), zap.Int64("buf_size", bytesBuf.TotalSize()), @@ -903,13 +936,13 @@ func (local *local) WriteToTiKV( if iter.Valid() && iter.Next() { firstKey := append([]byte{}, iter.Key()...) finishedRange = Range{start: regionRange.start, end: firstKey} - log.L().Info("write to tikv partial finish", zap.Int64("count", totalCount), + log.FromContext(ctx).Info("write to tikv partial finish", zap.Int64("count", totalCount), zap.Int64("size", size), logutil.Key("startKey", regionRange.start), logutil.Key("endKey", regionRange.end), logutil.Key("remainStart", firstKey), logutil.Key("remainEnd", regionRange.end), logutil.Region(region.Region), logutil.Leader(region.Leader)) } stats.count = totalCount - stats.totalBytes = size + stats.totalBytes = totalSize return leaderPeerMetas, finishedRange, stats, nil } @@ -1019,7 +1052,7 @@ func (local *local) readAndSplitIntoRange(ctx context.Context, engine *Engine, r return ranges, nil } - logger := log.With(zap.Stringer("engine", engine.UUID)) + logger := log.FromContext(ctx).With(zap.Stringer("engine", engine.UUID)) sizeProps, err := getSizeProperties(logger, engine.db, local.keyAdapter) if err != nil { return nil, errors.Trace(err) @@ -1056,7 +1089,7 @@ func (local *local) writeAndIngestByRange( return errors.Annotate(iter.Error(), "failed to read the first key") } if !hasKey { - log.L().Info("There is no pairs in iterator", + log.FromContext(ctxt).Info("There is no pairs in iterator", logutil.Key("start", start), logutil.Key("end", end)) engine.finishedRanges.add(Range{start: start, end: end}) @@ -1087,14 +1120,14 @@ WriteAndIngest: endKey := codec.EncodeBytes([]byte{}, nextKey(pairEnd)) regions, err = split.PaginateScanRegion(ctx, local.splitCli, startKey, endKey, scanRegionLimit) if err != nil || len(regions) == 0 { - log.L().Warn("scan region failed", log.ShortError(err), zap.Int("region_len", len(regions)), + log.FromContext(ctx).Warn("scan region failed", log.ShortError(err), zap.Int("region_len", len(regions)), logutil.Key("startKey", startKey), logutil.Key("endKey", endKey), zap.Int("retry", retry)) retry++ continue WriteAndIngest } for _, region := range regions { - log.L().Debug("get region", zap.Int("retry", retry), zap.Binary("startKey", startKey), + log.FromContext(ctx).Debug("get region", zap.Int("retry", retry), zap.Binary("startKey", startKey), zap.Binary("endKey", endKey), zap.Uint64("id", region.Region.GetId()), zap.Stringer("epoch", region.Region.GetRegionEpoch()), zap.Binary("start", region.Region.GetStartKey()), zap.Binary("end", region.Region.GetEndKey()), zap.Reflect("peers", region.Region.GetPeers())) @@ -1113,7 +1146,7 @@ WriteAndIngest: } else { retry++ } - log.L().Info("retry write and ingest kv pairs", logutil.Key("startKey", pairStart), + log.FromContext(ctx).Info("retry write and ingest kv pairs", logutil.Key("startKey", pairStart), logutil.Key("endKey", end), log.ShortError(err), zap.Int("retry", retry)) continue WriteAndIngest } @@ -1154,7 +1187,7 @@ loopWrite: return err } - log.L().Warn("write to tikv failed", log.ShortError(err), zap.Int("retry", i)) + log.FromContext(ctx).Warn("write to tikv failed", log.ShortError(err), zap.Int("retry", i)) continue loopWrite } @@ -1173,7 +1206,7 @@ loopWrite: ingestMetas := metas[start:end] errCnt := 0 for errCnt < maxRetryTimes { - log.L().Debug("ingest meta", zap.Reflect("meta", ingestMetas)) + log.FromContext(ctx).Debug("ingest meta", zap.Reflect("meta", ingestMetas)) var resp *sst.IngestResponse failpoint.Inject("FailIngestMeta", func(val failpoint.Value) { // only inject the error once @@ -1207,7 +1240,7 @@ loopWrite: if common.IsContextCanceledError(err) { return err } - log.L().Warn("ingest failed", log.ShortError(err), logutil.SSTMetas(ingestMetas), + log.FromContext(ctx).Warn("ingest failed", log.ShortError(err), logutil.SSTMetas(ingestMetas), logutil.Region(region.Region), logutil.Leader(region.Leader)) errCnt++ continue @@ -1225,7 +1258,7 @@ loopWrite: } switch retryTy { case retryNone: - log.L().Warn("ingest failed noretry", log.ShortError(err), logutil.SSTMetas(ingestMetas), + log.FromContext(ctx).Warn("ingest failed noretry", log.ShortError(err), logutil.SSTMetas(ingestMetas), logutil.Region(region.Region), logutil.Leader(region.Leader)) // met non-retryable error retry whole Write procedure return err @@ -1240,14 +1273,16 @@ loopWrite: } if err != nil { - log.L().Warn("write and ingest region, will retry import full range", log.ShortError(err), + log.FromContext(ctx).Warn("write and ingest region, will retry import full range", log.ShortError(err), logutil.Region(region.Region), logutil.Key("start", start), logutil.Key("end", end)) } else { engine.importedKVSize.Add(rangeStats.totalBytes) engine.importedKVCount.Add(rangeStats.count) engine.finishedRanges.add(finishedRange) - metric.BytesCounter.WithLabelValues(metric.BytesStateImported).Add(float64(rangeStats.totalBytes)) + if local.metrics != nil { + local.metrics.BytesCounter.WithLabelValues(metric.BytesStateImported).Add(float64(rangeStats.totalBytes)) + } } return errors.Trace(err) } @@ -1258,10 +1293,10 @@ loopWrite: func (local *local) writeAndIngestByRanges(ctx context.Context, engine *Engine, ranges []Range, regionSplitSize int64, regionSplitKeys int64) error { if engine.Length.Load() == 0 { // engine is empty, this is likes because it's a index engine but the table contains no index - log.L().Info("engine contains no data", zap.Stringer("uuid", engine.UUID)) + log.FromContext(ctx).Info("engine contains no data", zap.Stringer("uuid", engine.UUID)) return nil } - log.L().Debug("the ranges Length write to tikv", zap.Int("Length", len(ranges))) + log.FromContext(ctx).Debug("the ranges Length write to tikv", zap.Int("Length", len(ranges))) var allErrLock sync.Mutex var allErr error @@ -1294,7 +1329,7 @@ func (local *local) writeAndIngestByRanges(ctx context.Context, engine *Engine, if !common.IsRetryableError(err) { break } - log.L().Warn("write and ingest by range failed", + log.FromContext(ctx).Warn("write and ingest by range failed", zap.Int("retry time", i+1), log.ShortError(err)) backOffTime *= 2 if backOffTime > maxRetryBackoffTime { @@ -1336,7 +1371,7 @@ func (local *local) ImportEngine(ctx context.Context, engineUUID uuid.UUID, regi lfTotalSize := lf.TotalSize.Load() lfLength := lf.Length.Load() if lfTotalSize == 0 { - log.L().Info("engine contains no kv, skip import", zap.Stringer("engine", engineUUID)) + log.FromContext(ctx).Info("engine contains no kv, skip import", zap.Stringer("engine", engineUUID)) return nil } kvRegionSplitSize, kvRegionSplitKeys, err := getRegionSplitSizeKeys(ctx, local.pdCtl.GetPDClient(), local.tls) @@ -1348,7 +1383,7 @@ func (local *local) ImportEngine(ctx context.Context, engineUUID uuid.UUID, regi regionSplitKeys = kvRegionSplitKeys } } else { - log.L().Warn("fail to get region split keys and size", zap.Error(err)) + log.FromContext(ctx).Warn("fail to get region split keys and size", zap.Error(err)) } // split sorted file into range by 96MB size per file @@ -1357,14 +1392,14 @@ func (local *local) ImportEngine(ctx context.Context, engineUUID uuid.UUID, regi return err } - log.L().Info("start import engine", zap.Stringer("uuid", engineUUID), + log.FromContext(ctx).Info("start import engine", zap.Stringer("uuid", engineUUID), zap.Int("ranges", len(ranges)), zap.Int64("count", lfLength), zap.Int64("size", lfTotalSize)) for { unfinishedRanges := lf.unfinishedRanges(ranges) if len(unfinishedRanges) == 0 { break } - log.L().Info("import engine unfinished ranges", zap.Int("count", len(unfinishedRanges))) + log.FromContext(ctx).Info("import engine unfinished ranges", zap.Int("count", len(unfinishedRanges))) // if all the kv can fit in one region, skip split regions. TiDB will split one region for // the table when table is created. @@ -1376,37 +1411,37 @@ func (local *local) ImportEngine(ctx context.Context, engineUUID uuid.UUID, regi break } - log.L().Warn("split and scatter failed in retry", zap.Stringer("uuid", engineUUID), + log.FromContext(ctx).Warn("split and scatter failed in retry", zap.Stringer("uuid", engineUUID), log.ShortError(err), zap.Int("retry", i)) } if err != nil { - log.L().Error("split & scatter ranges failed", zap.Stringer("uuid", engineUUID), log.ShortError(err)) + log.FromContext(ctx).Error("split & scatter ranges failed", zap.Stringer("uuid", engineUUID), log.ShortError(err)) return err } // start to write to kv and ingest err = local.writeAndIngestByRanges(ctx, lf, unfinishedRanges, regionSplitSize, regionSplitKeys) if err != nil { - log.L().Error("write and ingest engine failed", log.ShortError(err)) + log.FromContext(ctx).Error("write and ingest engine failed", log.ShortError(err)) return err } } - log.L().Info("import engine success", zap.Stringer("uuid", engineUUID), + log.FromContext(ctx).Info("import engine success", zap.Stringer("uuid", engineUUID), zap.Int64("size", lfTotalSize), zap.Int64("kvs", lfLength), zap.Int64("importedSize", lf.importedKVSize.Load()), zap.Int64("importedCount", lf.importedKVCount.Load())) return nil } func (local *local) CollectLocalDuplicateRows(ctx context.Context, tbl table.Table, tableName string, opts *kv.SessionOptions) (hasDupe bool, err error) { - logger := log.With(zap.String("table", tableName)).Begin(zap.InfoLevel, "[detect-dupe] collect local duplicate keys") + logger := log.FromContext(ctx).With(zap.String("table", tableName)).Begin(zap.InfoLevel, "[detect-dupe] collect local duplicate keys") defer func() { logger.End(zap.ErrorLevel, err) }() atomicHasDupe := atomic.NewBool(false) duplicateManager, err := NewDuplicateManager(tbl, tableName, local.splitCli, local.tikvCli, - local.errorMgr, opts, local.dupeConcurrency, atomicHasDupe) + local.errorMgr, opts, local.dupeConcurrency, atomicHasDupe, log.FromContext(ctx)) if err != nil { return false, errors.Trace(err) } @@ -1417,14 +1452,14 @@ func (local *local) CollectLocalDuplicateRows(ctx context.Context, tbl table.Tab } func (local *local) CollectRemoteDuplicateRows(ctx context.Context, tbl table.Table, tableName string, opts *kv.SessionOptions) (hasDupe bool, err error) { - logger := log.With(zap.String("table", tableName)).Begin(zap.InfoLevel, "[detect-dupe] collect remote duplicate keys") + logger := log.FromContext(ctx).With(zap.String("table", tableName)).Begin(zap.InfoLevel, "[detect-dupe] collect remote duplicate keys") defer func() { logger.End(zap.ErrorLevel, err) }() atomicHasDupe := atomic.NewBool(false) duplicateManager, err := NewDuplicateManager(tbl, tableName, local.splitCli, local.tikvCli, - local.errorMgr, opts, local.dupeConcurrency, atomicHasDupe) + local.errorMgr, opts, local.dupeConcurrency, atomicHasDupe, log.FromContext(ctx)) if err != nil { return false, errors.Trace(err) } @@ -1435,7 +1470,7 @@ func (local *local) CollectRemoteDuplicateRows(ctx context.Context, tbl table.Ta } func (local *local) ResolveDuplicateRows(ctx context.Context, tbl table.Table, tableName string, algorithm config.DuplicateResolutionAlgorithm) (err error) { - logger := log.With(zap.String("table", tableName)).Begin(zap.InfoLevel, "[resolve-dupe] resolve duplicate rows") + logger := log.FromContext(ctx).With(zap.String("table", tableName)).Begin(zap.InfoLevel, "[resolve-dupe] resolve duplicate rows") defer func() { logger.End(zap.ErrorLevel, err) }() @@ -1453,7 +1488,7 @@ func (local *local) ResolveDuplicateRows(ctx context.Context, tbl table.Table, t // TODO: reuse the *kv.SessionOptions from NewEncoder for picking the correct time zone. decoder, err := kv.NewTableKVDecoder(tbl, tableName, &kv.SessionOptions{ SQLMode: mysql.ModeStrictAllTables, - }) + }, log.FromContext(ctx)) if err != nil { return err } @@ -1535,7 +1570,7 @@ func (local *local) ResetEngine(ctx context.Context, engineUUID uuid.UUID) error // the only way to reset the engine + reclaim the space is to delete and reopen it 🤷 localEngine := local.lockEngine(engineUUID, importMutexStateClose) if localEngine == nil { - log.L().Warn("could not find engine in cleanupEngine", zap.Stringer("uuid", engineUUID)) + log.FromContext(ctx).Warn("could not find engine in cleanupEngine", zap.Stringer("uuid", engineUUID)) return nil } defer localEngine.unlock() @@ -1568,7 +1603,7 @@ func (local *local) CleanupEngine(ctx context.Context, engineUUID uuid.UUID) err localEngine := local.lockEngine(engineUUID, importMutexStateClose) // release this engine after import success if localEngine == nil { - log.L().Warn("could not find engine in cleanupEngine", zap.Stringer("uuid", engineUUID)) + log.FromContext(ctx).Warn("could not find engine in cleanupEngine", zap.Stringer("uuid", engineUUID)) return nil } defer localEngine.unlock() @@ -1645,7 +1680,7 @@ func checkTiFlashVersion(ctx context.Context, g glue.Glue, checkCtx *backend.Che return nil } - res, err := g.GetSQLExecutor().QueryStringsWithLog(ctx, tiFlashReplicaQuery, "fetch tiflash replica info", log.L()) + res, err := g.GetSQLExecutor().QueryStringsWithLog(ctx, tiFlashReplicaQuery, "fetch tiflash replica info", log.FromContext(ctx)) if err != nil { return errors.Annotate(err, "fetch tiflash replica info failed") } @@ -1684,8 +1719,8 @@ func (local *local) MakeEmptyRows() kv.Rows { return kv.MakeRowsFromKvPairs(nil) } -func (local *local) NewEncoder(tbl table.Table, options *kv.SessionOptions) (kv.Encoder, error) { - return kv.NewTableKVEncoder(tbl, options) +func (local *local) NewEncoder(ctx context.Context, tbl table.Table, options *kv.SessionOptions) (kv.Encoder, error) { + return kv.NewTableKVEncoder(tbl, options, local.metrics, log.FromContext(ctx)) } func engineSSTDir(storeDir string, engineUUID uuid.UUID) string { @@ -1737,7 +1772,7 @@ func (local *local) isIngestRetryable( if newRegion != nil { return newRegion, nil } - log.L().Warn("get region by key return nil, will retry", logutil.Region(region.Region), logutil.Leader(region.Leader), + log.FromContext(ctx).Warn("get region by key return nil, will retry", logutil.Region(region.Region), logutil.Leader(region.Leader), zap.Int("retry", i)) select { case <-ctx.Done(): @@ -1889,7 +1924,7 @@ func getRegionSplitSizeKeys(ctx context.Context, cli pd.Client, tls *common.TLS) if err == nil { return regionSplitSize, regionSplitKeys, nil } - log.L().Warn("get region split size and keys failed", zap.Error(err), zap.String("store", serverInfo.StatusAddr)) + log.FromContext(ctx).Warn("get region split size and keys failed", zap.Error(err), zap.String("store", serverInfo.StatusAddr)) } return 0, 0, errors.New("get region split size and keys failed") } diff --git a/br/pkg/lightning/backend/local/local_test.go b/br/pkg/lightning/backend/local/local_test.go index 0711bfb1fc463..13112051e59d6 100644 --- a/br/pkg/lightning/backend/local/local_test.go +++ b/br/pkg/lightning/backend/local/local_test.go @@ -41,6 +41,7 @@ import ( "github.com/pingcap/tidb/br/pkg/lightning/backend" "github.com/pingcap/tidb/br/pkg/lightning/backend/kv" "github.com/pingcap/tidb/br/pkg/lightning/common" + "github.com/pingcap/tidb/br/pkg/lightning/log" "github.com/pingcap/tidb/br/pkg/lightning/mydump" "github.com/pingcap/tidb/br/pkg/membuf" "github.com/pingcap/tidb/br/pkg/mock" @@ -331,6 +332,7 @@ func testLocalWriter(t *testing.T, needSort bool, partitialSort bool) { cancel: cancel, sstMetasChan: make(chan metaOrFlush, 64), keyAdapter: noopKeyAdapter{}, + logger: log.L(), } f.sstIngester = dbSSTIngester{e: f} f.wg.Add(1) @@ -438,6 +440,7 @@ func (c *mockSplitClient) GetRegion(ctx context.Context, key []byte) (*restore.R func TestIsIngestRetryable(t *testing.T) { local := &local{ splitCli: &mockSplitClient{}, + logger: log.L(), } resp := &sst.IngestResponse{ @@ -567,6 +570,7 @@ func TestLocalIngestLoop(t *testing.T) { CompactThreshold: 100, CompactConcurrency: 4, }, + logger: log.L(), } f.sstIngester = testIngester{} f.wg.Add(1) @@ -784,6 +788,7 @@ func testMergeSSTs(t *testing.T, kvs [][]common.KvPair, meta *sstMeta) { CompactThreshold: 100, CompactConcurrency: 4, }, + logger: log.L(), } createSSTWriter := func() (*sstWriter, error) { @@ -1182,6 +1187,7 @@ func TestMultiIngest(t *testing.T) { return importCli }, }, + logger: log.L(), } err := local.checkMultiIngestSupport(context.Background()) if err != nil { diff --git a/br/pkg/lightning/backend/local/localhelper.go b/br/pkg/lightning/backend/local/localhelper.go index 98413b20e71e0..9839e3592d195 100644 --- a/br/pkg/lightning/backend/local/localhelper.go +++ b/br/pkg/lightning/backend/local/localhelper.go @@ -18,6 +18,7 @@ import ( "bytes" "context" "database/sql" + "math" "regexp" "runtime" "sort" @@ -40,6 +41,7 @@ import ( "go.uber.org/multierr" "go.uber.org/zap" "golang.org/x/sync/errgroup" + "golang.org/x/time/rate" ) const ( @@ -109,7 +111,7 @@ func (local *local) SplitAndScatterRegionByRanges( waitTime := splitRegionBaseBackOffTime skippedKeys := 0 for i := 0; i < splitRetryTimes; i++ { - log.L().Info("split and scatter region", + log.FromContext(ctx).Info("split and scatter region", logutil.Key("minKey", minKey), logutil.Key("maxKey", maxKey), zap.Int("retry", i), @@ -128,15 +130,15 @@ func (local *local) SplitAndScatterRegionByRanges( } var regions []*split.RegionInfo regions, err = split.PaginateScanRegion(ctx, local.splitCli, minKey, maxKey, 128) - log.L().Info("paginate scan regions", zap.Int("count", len(regions)), + log.FromContext(ctx).Info("paginate scan regions", zap.Int("count", len(regions)), logutil.Key("start", minKey), logutil.Key("end", maxKey)) if err != nil { - log.L().Warn("paginate scan region failed", logutil.Key("minKey", minKey), logutil.Key("maxKey", maxKey), + log.FromContext(ctx).Warn("paginate scan region failed", logutil.Key("minKey", minKey), logutil.Key("maxKey", maxKey), log.ShortError(err), zap.Int("retry", i)) continue } - log.L().Info("paginate scan region finished", logutil.Key("minKey", minKey), logutil.Key("maxKey", maxKey), + log.FromContext(ctx).Info("paginate scan region finished", logutil.Key("minKey", minKey), logutil.Key("maxKey", maxKey), zap.Int("regions", len(regions))) if !needSplit { @@ -154,7 +156,7 @@ func (local *local) SplitAndScatterRegionByRanges( return beforeEnd(startKey, regions[i].Region.EndKey) }) if idx < 0 || idx >= len(regions) { - log.L().Error("target region not found", logutil.Key("start_key", startKey), + log.FromContext(ctx).Error("target region not found", logutil.Key("start_key", startKey), logutil.RegionBy("first_region", regions[0].Region), logutil.RegionBy("last_region", regions[len(regions)-1].Region)) return errors.New("target region not found") @@ -165,7 +167,7 @@ func (local *local) SplitAndScatterRegionByRanges( } ranges = needSplitRanges if len(ranges) == 0 { - log.L().Info("no ranges need to be split, skipped.") + log.FromContext(ctx).Info("no ranges need to be split, skipped.") return nil } @@ -173,7 +175,7 @@ func (local *local) SplitAndScatterRegionByRanges( if tableInfo != nil { tableRegionStats, err = fetchTableRegionSizeStats(ctx, db, tableInfo.ID) if err != nil { - log.L().Warn("fetch table region size statistics failed", + log.FromContext(ctx).Warn("fetch table region size statistics failed", zap.String("table", tableInfo.Name), zap.Error(err)) tableRegionStats = make(map[uint64]int64) } @@ -189,16 +191,16 @@ func (local *local) SplitAndScatterRegionByRanges( firstKeyEnc := codec.EncodeBytes([]byte{}, retryKeys[0]) lastKeyEnc := codec.EncodeBytes([]byte{}, retryKeys[len(retryKeys)-1]) if bytes.Compare(firstKeyEnc, regions[0].Region.StartKey) < 0 || !beforeEnd(lastKeyEnc, regions[len(regions)-1].Region.EndKey) { - log.L().Warn("no valid key for split region", + log.FromContext(ctx).Warn("no valid key for split region", logutil.Key("firstKey", firstKeyEnc), logutil.Key("lastKey", lastKeyEnc), logutil.Key("firstRegionStart", regions[0].Region.StartKey), logutil.Key("lastRegionEnd", regions[len(regions)-1].Region.EndKey)) return errors.New("check split keys failed") } - splitKeyMap = getSplitKeys(retryKeys, regions) + splitKeyMap = getSplitKeys(retryKeys, regions, log.FromContext(ctx)) retryKeys = retryKeys[:0] } else { - splitKeyMap = getSplitKeysByRanges(ranges, regions) + splitKeyMap = getSplitKeysByRanges(ranges, regions, log.FromContext(ctx)) } type splitInfo struct { @@ -231,7 +233,7 @@ func (local *local) SplitAndScatterRegionByRanges( splitRegionStart := codec.EncodeBytes([]byte{}, keys[startIdx]) splitRegionEnd := codec.EncodeBytes([]byte{}, keys[endIdx-1]) if bytes.Compare(splitRegionStart, splitRegion.Region.StartKey) < 0 || !beforeEnd(splitRegionEnd, splitRegion.Region.EndKey) { - log.L().Fatal("no valid key in region", + log.FromContext(ctx).Fatal("no valid key in region", logutil.Key("startKey", splitRegionStart), logutil.Key("endKey", splitRegionEnd), logutil.Key("regionStart", splitRegion.Region.StartKey), logutil.Key("regionEnd", splitRegion.Region.EndKey), logutil.Region(splitRegion.Region), logutil.Leader(splitRegion.Leader)) @@ -240,7 +242,7 @@ func (local *local) SplitAndScatterRegionByRanges( if err1 != nil { if strings.Contains(err1.Error(), "no valid key") { for _, key := range keys { - log.L().Warn("no valid key", + log.FromContext(ctx).Warn("no valid key", logutil.Key("startKey", region.Region.StartKey), logutil.Key("endKey", region.Region.EndKey), logutil.Key("key", codec.EncodeBytes([]byte{}, key))) @@ -250,7 +252,7 @@ func (local *local) SplitAndScatterRegionByRanges( // do not retry on context.Canceled error return err1 } - log.L().Warn("split regions", log.ShortError(err1), zap.Int("retry time", i), + log.FromContext(ctx).Warn("split regions", log.ShortError(err1), zap.Int("retry time", i), zap.Uint64("region_id", region.Region.Id)) syncLock.Lock() @@ -260,7 +262,7 @@ func (local *local) SplitAndScatterRegionByRanges( syncLock.Unlock() break } else { - log.L().Info("batch split region", zap.Uint64("region_id", splitRegion.Region.Id), + log.FromContext(ctx).Info("batch split region", zap.Uint64("region_id", splitRegion.Region.Id), zap.Int("keys", endIdx-startIdx), zap.Binary("firstKey", keys[startIdx]), zap.Binary("end", keys[endIdx-1])) sort.Slice(newRegions, func(i, j int) bool { @@ -292,7 +294,7 @@ func (local *local) SplitAndScatterRegionByRanges( // we can skip split it again. regionSize, ok := tableRegionStats[regionID] if !ok { - log.L().Warn("region stats not found", zap.Uint64("region", regionID)) + log.FromContext(ctx).Warn("region stats not found", zap.Uint64("region", regionID)) } if len(keys) == 1 && regionSize < regionSplitSize { skippedKeys++ @@ -339,11 +341,11 @@ func (local *local) SplitAndScatterRegionByRanges( scatterCount++ } if scatterCount == len(scatterRegions) { - log.L().Info("waiting for scattering regions done", + log.FromContext(ctx).Info("waiting for scattering regions done", zap.Int("skipped_keys", skippedKeys), zap.Int("regions", len(scatterRegions)), zap.Duration("take", time.Since(startTime))) } else { - log.L().Info("waiting for scattering regions timeout", + log.FromContext(ctx).Info("waiting for scattering regions timeout", zap.Int("skipped_keys", skippedKeys), zap.Int("scatterCount", scatterCount), zap.Int("regions", len(scatterRegions)), @@ -355,7 +357,7 @@ func (local *local) SplitAndScatterRegionByRanges( func fetchTableRegionSizeStats(ctx context.Context, db *sql.DB, tableID int64) (map[uint64]int64, error) { exec := &common.SQLWithRetry{ DB: db, - Logger: log.L(), + Logger: log.FromContext(ctx), } stats := make(map[uint64]int64) @@ -404,7 +406,7 @@ func (local *local) BatchSplitRegions(ctx context.Context, region *split.RegionI } // the scatter operation likely fails because region replicate not finish yet // pack them to one log to avoid printing a lot warn logs. - log.L().Warn("scatter region failed", zap.Int("regionCount", len(newRegions)), + log.FromContext(ctx).Warn("scatter region failed", zap.Int("regionCount", len(newRegions)), zap.Int("failedCount", len(retryRegions)), zap.Error(failedErr), zap.Int("retry", i)) scatterRegions = retryRegions retryRegions = make([]*split.RegionInfo, 0) @@ -431,7 +433,7 @@ func (local *local) waitForSplit(ctx context.Context, regionID uint64) { for i := 0; i < split.SplitCheckMaxRetryTimes; i++ { ok, err := local.hasRegion(ctx, regionID) if err != nil { - log.L().Info("wait for split failed", log.ShortError(err)) + log.FromContext(ctx).Info("wait for split failed", log.ShortError(err)) return } if ok { @@ -453,10 +455,10 @@ func (local *local) waitForScatterRegion(ctx context.Context, regionInfo *split. } if err != nil { if !common.IsRetryableError(err) { - log.L().Warn("wait for scatter region encountered non-retryable error", logutil.Region(regionInfo.Region), zap.Error(err)) + log.FromContext(ctx).Warn("wait for scatter region encountered non-retryable error", logutil.Region(regionInfo.Region), zap.Error(err)) return } - log.L().Warn("wait for scatter region encountered error, will retry again", logutil.Region(regionInfo.Region), zap.Error(err)) + log.FromContext(ctx).Warn("wait for scatter region encountered error, will retry again", logutil.Region(regionInfo.Region), zap.Error(err)) } select { case <-time.After(time.Second): @@ -495,13 +497,13 @@ func (local *local) checkScatterRegionFinishedOrReScatter(ctx context.Context, r case pdpb.OperatorStatus_SUCCESS: return true, nil default: - log.L().Warn("scatter-region operator status is abnormal, will scatter region again", + log.FromContext(ctx).Warn("scatter-region operator status is abnormal, will scatter region again", logutil.Region(regionInfo.Region), zap.Stringer("status", resp.GetStatus())) return false, local.splitCli.ScatterRegion(ctx, regionInfo) } } -func getSplitKeysByRanges(ranges []Range, regions []*split.RegionInfo) map[uint64][][]byte { +func getSplitKeysByRanges(ranges []Range, regions []*split.RegionInfo, logger log.Logger) map[uint64][][]byte { checkKeys := make([][]byte, 0) var lastEnd []byte for _, rg := range ranges { @@ -511,19 +513,19 @@ func getSplitKeysByRanges(ranges []Range, regions []*split.RegionInfo) map[uint6 checkKeys = append(checkKeys, rg.end) lastEnd = rg.end } - return getSplitKeys(checkKeys, regions) + return getSplitKeys(checkKeys, regions, logger) } -func getSplitKeys(checkKeys [][]byte, regions []*split.RegionInfo) map[uint64][][]byte { +func getSplitKeys(checkKeys [][]byte, regions []*split.RegionInfo, logger log.Logger) map[uint64][][]byte { splitKeyMap := make(map[uint64][][]byte) for _, key := range checkKeys { - if region := needSplit(key, regions); region != nil { + if region := needSplit(key, regions, logger); region != nil { splitKeys, ok := splitKeyMap[region.Region.GetId()] if !ok { splitKeys = make([][]byte, 0, 1) } splitKeyMap[region.Region.GetId()] = append(splitKeys, key) - log.L().Debug("get key for split region", + logger.Debug("get key for split region", zap.Binary("key", key), zap.Binary("startKey", region.Region.StartKey), zap.Binary("endKey", region.Region.EndKey)) @@ -533,7 +535,7 @@ func getSplitKeys(checkKeys [][]byte, regions []*split.RegionInfo) map[uint64][] } // needSplit checks whether a key is necessary to split, if true returns the split region -func needSplit(key []byte, regions []*split.RegionInfo) *split.RegionInfo { +func needSplit(key []byte, regions []*split.RegionInfo, logger log.Logger) *split.RegionInfo { // If splitKey is the max key. if len(key) == 0 { return nil @@ -546,7 +548,7 @@ func needSplit(key []byte, regions []*split.RegionInfo) *split.RegionInfo { if idx < len(regions) { // If splitKey is in a region if bytes.Compare(splitKey, regions[idx].Region.GetStartKey()) > 0 && beforeEnd(splitKey, regions[idx].Region.GetEndKey()) { - log.L().Debug("need split", + logger.Debug("need split", zap.Binary("splitKey", key), zap.Binary("encodedKey", splitKey), zap.Binary("region start", regions[idx].Region.GetStartKey()), @@ -592,3 +594,75 @@ func intersectRange(region *metapb.Region, rg Range) Range { return Range{start: startKey, end: endKey} } + +type StoreWriteLimiter interface { + WaitN(ctx context.Context, storeID uint64, n int) error + Limit() int +} + +type storeWriteLimiter struct { + rwm sync.RWMutex + limiters map[uint64]*rate.Limiter + limit int + burst int +} + +func newStoreWriteLimiter(limit int) *storeWriteLimiter { + var burst int + // Allow burst of at most 20% of the limit. + if limit <= math.MaxInt-limit/5 { + burst = limit + limit/5 + } else { + // If overflowed, set burst to math.MaxInt. + burst = math.MaxInt + } + return &storeWriteLimiter{ + limiters: make(map[uint64]*rate.Limiter), + limit: limit, + burst: burst, + } +} + +func (s *storeWriteLimiter) WaitN(ctx context.Context, storeID uint64, n int) error { + limiter := s.getLimiter(storeID) + // The original WaitN doesn't allow n > burst, + // so we call WaitN with burst multiple times. + for n > limiter.Burst() { + if err := limiter.WaitN(ctx, limiter.Burst()); err != nil { + return err + } + n -= limiter.Burst() + } + return limiter.WaitN(ctx, n) +} + +func (s *storeWriteLimiter) Limit() int { + return s.limit +} + +func (s *storeWriteLimiter) getLimiter(storeID uint64) *rate.Limiter { + s.rwm.RLock() + limiter, ok := s.limiters[storeID] + s.rwm.RUnlock() + if ok { + return limiter + } + s.rwm.Lock() + defer s.rwm.Unlock() + limiter, ok = s.limiters[storeID] + if !ok { + limiter = rate.NewLimiter(rate.Limit(s.limit), s.burst) + s.limiters[storeID] = limiter + } + return limiter +} + +type noopStoreWriteLimiter struct{} + +func (noopStoreWriteLimiter) WaitN(ctx context.Context, storeID uint64, n int) error { + return nil +} + +func (noopStoreWriteLimiter) Limit() int { + return math.MaxInt +} diff --git a/br/pkg/lightning/backend/local/localhelper_test.go b/br/pkg/lightning/backend/local/localhelper_test.go index 48ce64da5e3b6..8d3d367443ac8 100644 --- a/br/pkg/lightning/backend/local/localhelper_test.go +++ b/br/pkg/lightning/backend/local/localhelper_test.go @@ -29,6 +29,7 @@ import ( "github.com/pingcap/kvproto/pkg/metapb" "github.com/pingcap/kvproto/pkg/pdpb" "github.com/pingcap/tidb/br/pkg/lightning/glue" + "github.com/pingcap/tidb/br/pkg/lightning/log" "github.com/pingcap/tidb/br/pkg/restore" "github.com/pingcap/tidb/kv" "github.com/pingcap/tidb/parser/mysql" @@ -418,6 +419,7 @@ func doTestBatchSplitRegionByRanges(ctx context.Context, t *testing.T, hook clie local := &local{ splitCli: client, g: glue.NewExternalTiDBGlue(nil, mysql.ModeNone), + logger: log.L(), } // current region ranges: [, aay), [aay, bba), [bba, bbh), [bbh, cca), [cca, ) @@ -586,6 +588,7 @@ func TestSplitAndScatterRegionInBatches(t *testing.T) { local := &local{ splitCli: client, g: glue.NewExternalTiDBGlue(nil, mysql.ModeNone), + logger: log.L(), } ctx, cancel := context.WithCancel(context.Background()) @@ -672,6 +675,7 @@ func doTestBatchSplitByRangesWithClusteredIndex(t *testing.T, hook clientHook) { local := &local{ splitCli: client, g: glue.NewExternalTiDBGlue(nil, mysql.ModeNone), + logger: log.L(), } ctx := context.Background() @@ -762,7 +766,7 @@ func TestNeedSplit(t *testing.T) { for hdl, idx := range checkMap { checkKey := tablecodec.EncodeRowKeyWithHandle(tableID, kv.IntHandle(hdl)) - res := needSplit(checkKey, regions) + res := needSplit(checkKey, regions, log.L()) if idx < 0 { require.Nil(t, res) } else { @@ -770,3 +774,46 @@ func TestNeedSplit(t *testing.T) { } } } + +func TestStoreWriteLimiter(t *testing.T) { + // Test create store write limiter with limit math.MaxInt. + limiter := newStoreWriteLimiter(math.MaxInt) + err := limiter.WaitN(context.Background(), 1, 1024) + require.NoError(t, err) + + // Test WaitN exceeds the burst. + limiter = newStoreWriteLimiter(100) + start := time.Now() + // 120 is the initial burst, 150 is the number of new tokens. + err = limiter.WaitN(context.Background(), 1, 120+120) + require.NoError(t, err) + require.Greater(t, time.Since(start), time.Second) + + // Test WaitN with different store id. + limiter = newStoreWriteLimiter(100) + var wg sync.WaitGroup + ctx, cancel := context.WithTimeout(context.Background(), time.Second*2) + defer cancel() + for i := 0; i < 10; i++ { + wg.Add(1) + go func(storeID uint64) { + defer wg.Done() + start = time.Now() + var gotTokens int + for { + n := rand.Intn(50) + if limiter.WaitN(ctx, storeID, n) != nil { + break + } + gotTokens += n + } + elapsed := time.Since(start) + maxTokens := 120 + int(float64(elapsed)/float64(time.Second)*100) + // In theory, gotTokens should be less than or equal to maxTokens. + // But we allow a little of error to avoid the test being flaky. + require.LessOrEqual(t, gotTokens, maxTokens+1) + + }(uint64(i)) + } + wg.Wait() +} diff --git a/br/pkg/lightning/backend/noop/BUILD.bazel b/br/pkg/lightning/backend/noop/BUILD.bazel new file mode 100644 index 0000000000000..a38fcd8195761 --- /dev/null +++ b/br/pkg/lightning/backend/noop/BUILD.bazel @@ -0,0 +1,19 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "noop", + srcs = ["noop.go"], + importpath = "github.com/pingcap/tidb/br/pkg/lightning/backend/noop", + visibility = ["//visibility:public"], + deps = [ + "//br/pkg/lightning/backend", + "//br/pkg/lightning/backend/kv", + "//br/pkg/lightning/config", + "//br/pkg/lightning/log", + "//br/pkg/lightning/verification", + "//parser/model", + "//table", + "//types", + "@com_github_google_uuid//:uuid", + ], +) diff --git a/br/pkg/lightning/backend/noop/noop.go b/br/pkg/lightning/backend/noop/noop.go index 2ac3e2b346dbb..93332e41b7074 100644 --- a/br/pkg/lightning/backend/noop/noop.go +++ b/br/pkg/lightning/backend/noop/noop.go @@ -67,7 +67,7 @@ func (b noopBackend) ShouldPostProcess() bool { } // NewEncoder creates an encoder of a TiDB table. -func (b noopBackend) NewEncoder(tbl table.Table, options *kv.SessionOptions) (kv.Encoder, error) { +func (b noopBackend) NewEncoder(ctx context.Context, tbl table.Table, options *kv.SessionOptions) (kv.Encoder, error) { return noopEncoder{}, nil } diff --git a/br/pkg/lightning/backend/tidb/BUILD.bazel b/br/pkg/lightning/backend/tidb/BUILD.bazel new file mode 100644 index 0000000000000..9dd8a9a876c14 --- /dev/null +++ b/br/pkg/lightning/backend/tidb/BUILD.bazel @@ -0,0 +1,54 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "tidb", + srcs = ["tidb.go"], + importpath = "github.com/pingcap/tidb/br/pkg/lightning/backend/tidb", + visibility = ["//visibility:public"], + deps = [ + "//br/pkg/lightning/backend", + "//br/pkg/lightning/backend/kv", + "//br/pkg/lightning/common", + "//br/pkg/lightning/config", + "//br/pkg/lightning/errormanager", + "//br/pkg/lightning/log", + "//br/pkg/lightning/verification", + "//br/pkg/redact", + "//br/pkg/utils", + "//br/pkg/version", + "//parser/model", + "//parser/mysql", + "//sessionctx", + "//table", + "//types", + "@com_github_google_uuid//:uuid", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@org_uber_go_zap//:zap", + "@org_uber_go_zap//zapcore", + ], +) + +go_test( + name = "tidb_test", + srcs = ["tidb_test.go"], + deps = [ + ":tidb", + "//br/pkg/lightning/backend", + "//br/pkg/lightning/backend/kv", + "//br/pkg/lightning/common", + "//br/pkg/lightning/config", + "//br/pkg/lightning/errormanager", + "//br/pkg/lightning/log", + "//br/pkg/lightning/verification", + "//parser/charset", + "//parser/model", + "//parser/mysql", + "//table", + "//table/tables", + "//types", + "@com_github_data_dog_go_sqlmock//:go-sqlmock", + "@com_github_stretchr_testify//require", + "@org_uber_go_atomic//:atomic", + ], +) diff --git a/br/pkg/lightning/backend/tidb/tidb.go b/br/pkg/lightning/backend/tidb/tidb.go index 9ae70e7afef1d..1a9d100d39bd5 100644 --- a/br/pkg/lightning/backend/tidb/tidb.go +++ b/br/pkg/lightning/backend/tidb/tidb.go @@ -100,11 +100,11 @@ type tidbBackend struct { // // The backend does not take ownership of `db`. Caller should close `db` // manually after the backend expired. -func NewTiDBBackend(db *sql.DB, onDuplicate string, errorMgr *errormanager.ErrorManager) backend.Backend { +func NewTiDBBackend(ctx context.Context, db *sql.DB, onDuplicate string, errorMgr *errormanager.ErrorManager) backend.Backend { switch onDuplicate { case config.ReplaceOnDup, config.IgnoreOnDup, config.ErrorOnDup: default: - log.L().Warn("unsupported action on duplicate, overwrite with `replace`") + log.FromContext(ctx).Warn("unsupported action on duplicate, overwrite with `replace`") onDuplicate = config.ReplaceOnDup } return backend.MakeBackend(&tidbBackend{db: db, onDuplicate: onDuplicate, errorMgr: errorMgr}) @@ -354,12 +354,12 @@ func (enc *tidbEncoder) Encode(logger log.Logger, row []types.Datum, _ int64, co } // EncodeRowForRecord encodes a row to a string compatible with INSERT statements. -func EncodeRowForRecord(encTable table.Table, sqlMode mysql.SQLMode, row []types.Datum, columnPermutation []int) string { +func EncodeRowForRecord(ctx context.Context, encTable table.Table, sqlMode mysql.SQLMode, row []types.Datum, columnPermutation []int) string { enc := tidbEncoder{ tbl: encTable, mode: sqlMode, } - resRow, err := enc.Encode(log.L(), row, 0, columnPermutation, "", 0) + resRow, err := enc.Encode(log.FromContext(ctx), row, 0, columnPermutation, "", 0) if err != nil { // if encode can't succeed, fallback to record the raw input strings // ignore the error since it can only happen if the datum type is unknown, this can't happen here. @@ -394,12 +394,12 @@ func (be *tidbBackend) ShouldPostProcess() bool { } func (be *tidbBackend) CheckRequirements(ctx context.Context, _ *backend.CheckCtx) error { - log.L().Info("skipping check requirements for tidb backend") + log.FromContext(ctx).Info("skipping check requirements for tidb backend") return nil } -func (be *tidbBackend) NewEncoder(tbl table.Table, options *kv.SessionOptions) (kv.Encoder, error) { - se := kv.NewSession(options) +func (be *tidbBackend) NewEncoder(ctx context.Context, tbl table.Table, options *kv.SessionOptions) (kv.Encoder, error) { + se := kv.NewSession(options, log.FromContext(ctx)) if options.SQLMode.HasStrictMode() { se.GetSessionVars().SkipUTF8Check = false se.GetSessionVars().SkipASCIICheck = false @@ -554,7 +554,7 @@ func (be *tidbBackend) execStmts(ctx context.Context, stmtTasks []stmtTask, tabl _, err := be.db.ExecContext(ctx, stmt) if err != nil { if !common.IsContextCanceledError(err) { - log.L().Error("execute statement failed", + log.FromContext(ctx).Error("execute statement failed", zap.Array("rows", stmtTask.rows), zap.String("stmt", redact.String(stmt)), zap.Error(err)) } // It's batch mode, just return the error. @@ -566,7 +566,7 @@ func (be *tidbBackend) execStmts(ctx context.Context, stmtTasks []stmtTask, tabl continue } firstRow := stmtTask.rows[0] - err = be.errorMgr.RecordTypeError(ctx, log.L(), tableName, firstRow.path, firstRow.offset, firstRow.insertStmt, err) + err = be.errorMgr.RecordTypeError(ctx, log.FromContext(ctx), tableName, firstRow.path, firstRow.offset, firstRow.insertStmt, err) if err == nil { // max-error not yet reached (error consumed by errorMgr), proceed to next stmtTask. break @@ -587,7 +587,7 @@ func (be *tidbBackend) execStmts(ctx context.Context, stmtTasks []stmtTask, tabl func (be *tidbBackend) FetchRemoteTableModels(ctx context.Context, schemaName string) (tables []*model.TableInfo, err error) { s := common.SQLWithRetry{ DB: be.db, - Logger: log.L(), + Logger: log.FromContext(ctx), } err = s.Transact(ctx, "fetch table columns", func(c context.Context, tx *sql.Tx) error { @@ -649,8 +649,8 @@ func (be *tidbBackend) FetchRemoteTableModels(ctx context.Context, schemaName st }) curColOffset++ } - if rows.Err() != nil { - return rows.Err() + if err := rows.Err(); err != nil { + return err } // shard_row_id/auto random is only available after tidb v4.0.0 // `show table next_row_id` is also not available before tidb v4.0.0 @@ -777,8 +777,8 @@ func FetchTableAutoIDInfos(ctx context.Context, exec utils.QueryExecutor, tableN if err := rows.Close(); err != nil { return nil, errors.Trace(err) } - if rows.Err() != nil { - return nil, errors.Trace(rows.Err()) + if err := rows.Err(); err != nil { + return nil, errors.Trace(err) } return autoIDInfos, nil } diff --git a/br/pkg/lightning/backend/tidb/tidb_test.go b/br/pkg/lightning/backend/tidb/tidb_test.go index b7de642a26746..097c51dfdfe5f 100644 --- a/br/pkg/lightning/backend/tidb/tidb_test.go +++ b/br/pkg/lightning/backend/tidb/tidb_test.go @@ -63,7 +63,7 @@ func createMysqlSuite(t *testing.T) *mysqlSuite { tblInfo := &model.TableInfo{ID: 1, Columns: cols, PKIsHandle: false, State: model.StatePublic} tbl, err := tables.TableFromMeta(kv.NewPanickingAllocators(0), tblInfo) require.NoError(t, err) - backend := tidb.NewTiDBBackend(db, config.ReplaceOnDup, errormanager.New(nil, config.NewConfig())) + backend := tidb.NewTiDBBackend(context.Background(), db, config.ReplaceOnDup, errormanager.New(nil, config.NewConfig(), log.L())) return &mysqlSuite{dbHandle: db, mockDB: mock, backend: backend, tbl: tbl} } @@ -99,7 +99,7 @@ func TestWriteRowsReplaceOnDup(t *testing.T) { // skip column a,c due to ignore-columns perms[0] = -1 perms[2] = -1 - encoder, err := s.backend.NewEncoder(s.tbl, &kv.SessionOptions{SQLMode: 0, Timestamp: 1234567890}) + encoder, err := s.backend.NewEncoder(context.Background(), s.tbl, &kv.SessionOptions{SQLMode: 0, Timestamp: 1234567890}) require.NoError(t, err) row, err := encoder.Encode(logger, []types.Datum{ types.NewUintDatum(18446744073709551615), @@ -140,7 +140,7 @@ func TestWriteRowsIgnoreOnDup(t *testing.T) { ctx := context.Background() logger := log.L() - ignoreBackend := tidb.NewTiDBBackend(s.dbHandle, config.IgnoreOnDup, errormanager.New(nil, config.NewConfig())) + ignoreBackend := tidb.NewTiDBBackend(ctx, s.dbHandle, config.IgnoreOnDup, errormanager.New(nil, config.NewConfig(), logger)) engine, err := ignoreBackend.OpenEngine(ctx, &backend.EngineConfig{}, "`foo`.`bar`", 1) require.NoError(t, err) @@ -149,7 +149,7 @@ func TestWriteRowsIgnoreOnDup(t *testing.T) { indexRows := ignoreBackend.MakeEmptyRows() indexChecksum := verification.MakeKVChecksum(0, 0, 0) - encoder, err := ignoreBackend.NewEncoder(s.tbl, &kv.SessionOptions{}) + encoder, err := ignoreBackend.NewEncoder(ctx, s.tbl, &kv.SessionOptions{}) require.NoError(t, err) row, err := encoder.Encode(logger, []types.Datum{ types.NewIntDatum(1), @@ -165,7 +165,7 @@ func TestWriteRowsIgnoreOnDup(t *testing.T) { require.NoError(t, err) // test encode rows with _tidb_rowid - encoder, err = ignoreBackend.NewEncoder(s.tbl, &kv.SessionOptions{}) + encoder, err = ignoreBackend.NewEncoder(ctx, s.tbl, &kv.SessionOptions{}) require.NoError(t, err) rowWithID, err := encoder.Encode(logger, []types.Datum{ types.NewIntDatum(1), @@ -186,7 +186,7 @@ func TestWriteRowsErrorOnDup(t *testing.T) { ctx := context.Background() logger := log.L() - ignoreBackend := tidb.NewTiDBBackend(s.dbHandle, config.ErrorOnDup, errormanager.New(nil, config.NewConfig())) + ignoreBackend := tidb.NewTiDBBackend(ctx, s.dbHandle, config.ErrorOnDup, errormanager.New(nil, config.NewConfig(), logger)) engine, err := ignoreBackend.OpenEngine(ctx, &backend.EngineConfig{}, "`foo`.`bar`", 1) require.NoError(t, err) @@ -195,7 +195,7 @@ func TestWriteRowsErrorOnDup(t *testing.T) { indexRows := ignoreBackend.MakeEmptyRows() indexChecksum := verification.MakeKVChecksum(0, 0, 0) - encoder, err := ignoreBackend.NewEncoder(s.tbl, &kv.SessionOptions{}) + encoder, err := ignoreBackend.NewEncoder(ctx, s.tbl, &kv.SessionOptions{}) require.NoError(t, err) row, err := encoder.Encode(logger, []types.Datum{ types.NewIntDatum(1), @@ -228,8 +228,10 @@ func testStrictMode(t *testing.T) { tbl, err := tables.TableFromMeta(kv.NewPanickingAllocators(0), tblInfo) require.NoError(t, err) - bk := tidb.NewTiDBBackend(s.dbHandle, config.ErrorOnDup, errormanager.New(nil, config.NewConfig())) - encoder, err := bk.NewEncoder(tbl, &kv.SessionOptions{SQLMode: mysql.ModeStrictAllTables}) + ctx := context.Background() + + bk := tidb.NewTiDBBackend(ctx, s.dbHandle, config.ErrorOnDup, errormanager.New(nil, config.NewConfig(), log.L())) + encoder, err := bk.NewEncoder(ctx, tbl, &kv.SessionOptions{SQLMode: mysql.ModeStrictAllTables}) require.NoError(t, err) logger := log.L() @@ -245,7 +247,7 @@ func testStrictMode(t *testing.T) { require.Regexp(t, `incorrect utf8 value .* for column s0$`, err.Error()) // oepn a new encode because column count changed. - encoder, err = bk.NewEncoder(tbl, &kv.SessionOptions{SQLMode: mysql.ModeStrictAllTables}) + encoder, err = bk.NewEncoder(ctx, tbl, &kv.SessionOptions{SQLMode: mysql.ModeStrictAllTables}) require.NoError(t, err) _, err = encoder.Encode(logger, []types.Datum{ types.NewStringDatum(""), @@ -267,7 +269,7 @@ func TestFetchRemoteTableModels_3_x(t *testing.T) { AddRow("t", "id", "int(10)", "", "auto_increment")) s.mockDB.ExpectCommit() - bk := tidb.NewTiDBBackend(s.dbHandle, config.ErrorOnDup, errormanager.New(nil, config.NewConfig())) + bk := tidb.NewTiDBBackend(context.Background(), s.dbHandle, config.ErrorOnDup, errormanager.New(nil, config.NewConfig(), log.L())) tableInfos, err := bk.FetchRemoteTableModels(context.Background(), "test") require.NoError(t, err) ft := types.FieldType{} @@ -304,7 +306,7 @@ func TestFetchRemoteTableModels_4_0(t *testing.T) { AddRow("test", "t", "id", int64(1))) s.mockDB.ExpectCommit() - bk := tidb.NewTiDBBackend(s.dbHandle, config.ErrorOnDup, errormanager.New(nil, config.NewConfig())) + bk := tidb.NewTiDBBackend(context.Background(), s.dbHandle, config.ErrorOnDup, errormanager.New(nil, config.NewConfig(), log.L())) tableInfos, err := bk.FetchRemoteTableModels(context.Background(), "test") require.NoError(t, err) ft := types.FieldType{} @@ -341,7 +343,7 @@ func TestFetchRemoteTableModels_4_x_auto_increment(t *testing.T) { AddRow("test", "t", "id", int64(1), "AUTO_INCREMENT")) s.mockDB.ExpectCommit() - bk := tidb.NewTiDBBackend(s.dbHandle, config.ErrorOnDup, errormanager.New(nil, config.NewConfig())) + bk := tidb.NewTiDBBackend(context.Background(), s.dbHandle, config.ErrorOnDup, errormanager.New(nil, config.NewConfig(), log.L())) tableInfos, err := bk.FetchRemoteTableModels(context.Background(), "test") require.NoError(t, err) ft := types.FieldType{} @@ -378,7 +380,7 @@ func TestFetchRemoteTableModels_4_x_auto_random(t *testing.T) { AddRow("test", "t", "id", int64(1), "AUTO_RANDOM")) s.mockDB.ExpectCommit() - bk := tidb.NewTiDBBackend(s.dbHandle, config.ErrorOnDup, errormanager.New(nil, config.NewConfig())) + bk := tidb.NewTiDBBackend(context.Background(), s.dbHandle, config.ErrorOnDup, errormanager.New(nil, config.NewConfig(), log.L())) tableInfos, err := bk.FetchRemoteTableModels(context.Background(), "test") require.NoError(t, err) ft := types.FieldType{} @@ -413,8 +415,8 @@ func TestWriteRowsErrorNoRetry(t *testing.T) { WillReturnError(nonRetryableError) // disable error record, should not expect retry statements one by one. - ignoreBackend := tidb.NewTiDBBackend(s.dbHandle, config.ErrorOnDup, - errormanager.New(s.dbHandle, &config.Config{}), + ignoreBackend := tidb.NewTiDBBackend(context.Background(), s.dbHandle, config.ErrorOnDup, + errormanager.New(s.dbHandle, &config.Config{}, log.L()), ) dataRows := encodeRowsTiDB(t, ignoreBackend, s.tbl) ctx := context.Background() @@ -473,7 +475,7 @@ func TestWriteRowsErrorDowngradingAll(t *testing.T) { WillReturnResult(driver.ResultNoRows) // disable error record, should not expect retry statements one by one. - ignoreBackend := tidb.NewTiDBBackend(s.dbHandle, config.ErrorOnDup, + ignoreBackend := tidb.NewTiDBBackend(context.Background(), s.dbHandle, config.ErrorOnDup, errormanager.New(s.dbHandle, &config.Config{ App: config.Lightning{ TaskInfoSchemaName: "tidb_lightning_errors", @@ -481,7 +483,7 @@ func TestWriteRowsErrorDowngradingAll(t *testing.T) { Type: *atomic.NewInt64(10), }, }, - }), + }, log.L()), ) dataRows := encodeRowsTiDB(t, ignoreBackend, s.tbl) ctx := context.Background() @@ -528,7 +530,7 @@ func TestWriteRowsErrorDowngradingExceedThreshold(t *testing.T) { ExpectExec("\\QINSERT INTO `foo`.`bar`(`a`) VALUES(4)\\E"). WillReturnError(nonRetryableError) - ignoreBackend := tidb.NewTiDBBackend(s.dbHandle, config.ErrorOnDup, + ignoreBackend := tidb.NewTiDBBackend(context.Background(), s.dbHandle, config.ErrorOnDup, errormanager.New(s.dbHandle, &config.Config{ App: config.Lightning{ TaskInfoSchemaName: "tidb_lightning_errors", @@ -536,7 +538,7 @@ func TestWriteRowsErrorDowngradingExceedThreshold(t *testing.T) { Type: *atomic.NewInt64(3), }, }, - }), + }, log.L()), ) dataRows := encodeRowsTiDB(t, ignoreBackend, s.tbl) ctx := context.Background() @@ -558,7 +560,7 @@ func encodeRowsTiDB(t *testing.T, b backend.Backend, tbl table.Table) kv.Rows { indexChecksum := verification.MakeKVChecksum(0, 0, 0) logger := log.L() - encoder, err := b.NewEncoder(tbl, &kv.SessionOptions{}) + encoder, err := b.NewEncoder(context.Background(), tbl, &kv.SessionOptions{}) require.NoError(t, err) row, err := encoder.Encode(logger, []types.Datum{ types.NewIntDatum(1), @@ -609,7 +611,7 @@ func TestEncodeRowForRecord(t *testing.T) { s := createMysqlSuite(t) // for a correct row, the will encode a correct result - row := tidb.EncodeRowForRecord(s.tbl, mysql.ModeStrictTransTables, []types.Datum{ + row := tidb.EncodeRowForRecord(context.Background(), s.tbl, mysql.ModeStrictTransTables, []types.Datum{ types.NewIntDatum(5), types.NewStringDatum("test test"), types.NewBinaryLiteralDatum(types.NewBinaryLiteralFromUint(0xabcdef, 6)), @@ -618,7 +620,7 @@ func TestEncodeRowForRecord(t *testing.T) { // the following row will result in column count mismatch error, there for encode // result will fallback to a "," separated string list. - row = tidb.EncodeRowForRecord(s.tbl, mysql.ModeStrictTransTables, []types.Datum{ + row = tidb.EncodeRowForRecord(context.Background(), s.tbl, mysql.ModeStrictTransTables, []types.Datum{ types.NewIntDatum(5), types.NewStringDatum("test test"), types.NewBinaryLiteralDatum(types.NewBinaryLiteralFromUint(0xabcdef, 6)), diff --git a/br/pkg/lightning/checkpoints/BUILD.bazel b/br/pkg/lightning/checkpoints/BUILD.bazel new file mode 100644 index 0000000000000..241ec95201e76 --- /dev/null +++ b/br/pkg/lightning/checkpoints/BUILD.bazel @@ -0,0 +1,54 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "checkpoints", + srcs = [ + "checkpoints.go", + "glue_checkpoint.go", + "tidb.go", + ], + importpath = "github.com/pingcap/tidb/br/pkg/lightning/checkpoints", + visibility = ["//visibility:public"], + deps = [ + "//br/pkg/lightning/checkpoints/checkpointspb", + "//br/pkg/lightning/common", + "//br/pkg/lightning/config", + "//br/pkg/lightning/log", + "//br/pkg/lightning/mydump", + "//br/pkg/lightning/verification", + "//br/pkg/storage", + "//br/pkg/version/build", + "//parser/ast", + "//parser/model", + "//types", + "//util/chunk", + "//util/mathutil", + "//util/sqlexec", + "@com_github_joho_sqltocsv//:sqltocsv", + "@com_github_pingcap_errors//:errors", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "checkpoints_test", + srcs = [ + "checkpoints_file_test.go", + "checkpoints_sql_test.go", + "checkpoints_test.go", + "main_test.go", + ], + embed = [":checkpoints"], + deps = [ + "//br/pkg/lightning/checkpoints/checkpointspb", + "//br/pkg/lightning/config", + "//br/pkg/lightning/mydump", + "//br/pkg/lightning/verification", + "//br/pkg/version/build", + "//testkit/testsetup", + "@com_github_data_dog_go_sqlmock//:go-sqlmock", + "@com_github_pingcap_errors//:errors", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/br/pkg/lightning/checkpoints/checkpoints.go b/br/pkg/lightning/checkpoints/checkpoints.go index 36cefed180ae3..30ab72b0298f0 100644 --- a/br/pkg/lightning/checkpoints/checkpoints.go +++ b/br/pkg/lightning/checkpoints/checkpoints.go @@ -493,7 +493,7 @@ type DB interface { // It assumes the entire table has not been imported before and will fill in // default values for the column permutations and checksums. InsertEngineCheckpoints(ctx context.Context, tableName string, checkpoints map[int32]*EngineCheckpoint) error - Update(checkpointDiffs map[string]*TableCheckpointDiff) error + Update(taskCtx context.Context, checkpointDiffs map[string]*TableCheckpointDiff) error RemoveCheckpoint(ctx context.Context, tableName string) error // MoveCheckpoints renames the checkpoint schema to include a suffix @@ -608,7 +608,7 @@ func (*NullCheckpointsDB) InsertEngineCheckpoints(_ context.Context, _ string, _ return nil } -func (*NullCheckpointsDB) Update(map[string]*TableCheckpointDiff) error { +func (*NullCheckpointsDB) Update(context.Context, map[string]*TableCheckpointDiff) error { return nil } @@ -621,7 +621,7 @@ func NewMySQLCheckpointsDB(ctx context.Context, db *sql.DB, schemaName string) ( schema := common.EscapeIdentifier(schemaName) sql := common.SQLWithRetry{ DB: db, - Logger: log.With(zap.String("schema", schemaName)), + Logger: log.FromContext(ctx).With(zap.String("schema", schemaName)), HideQueryLog: true, } err := sql.Exec(ctx, "create checkpoints database", fmt.Sprintf(CreateDBTemplate, schema)) @@ -658,7 +658,7 @@ func NewMySQLCheckpointsDB(ctx context.Context, db *sql.DB, schemaName string) ( func (cpdb *MySQLCheckpointsDB) Initialize(ctx context.Context, cfg *config.Config, dbInfo map[string]*TidbDBInfo) error { // We can have at most 65535 placeholders https://stackoverflow.com/q/4922345/ // Since this step is not performance critical, we just insert the rows one-by-one. - s := common.SQLWithRetry{DB: cpdb.db, Logger: log.L()} + s := common.SQLWithRetry{DB: cpdb.db, Logger: log.FromContext(ctx)} err := s.Transact(ctx, "insert checkpoints", func(c context.Context, tx *sql.Tx) error { taskStmt, err := tx.PrepareContext(c, fmt.Sprintf(InitTaskTemplate, cpdb.schema, CheckpointTableNameTask)) if err != nil { @@ -706,7 +706,7 @@ func (cpdb *MySQLCheckpointsDB) Initialize(ctx context.Context, cfg *config.Conf func (cpdb *MySQLCheckpointsDB) TaskCheckpoint(ctx context.Context) (*TaskCheckpoint, error) { s := common.SQLWithRetry{ DB: cpdb.db, - Logger: log.L(), + Logger: log.FromContext(ctx), } taskQuery := fmt.Sprintf(ReadTaskTemplate, cpdb.schema, CheckpointTableNameTask) @@ -735,7 +735,7 @@ func (cpdb *MySQLCheckpointsDB) Get(ctx context.Context, tableName string) (*Tab s := common.SQLWithRetry{ DB: cpdb.db, - Logger: log.With(zap.String("table", tableName)), + Logger: log.FromContext(ctx).With(zap.String("table", tableName)), } err := s.Transact(ctx, "read checkpoint", func(c context.Context, tx *sql.Tx) error { // 1. Populate the engines. @@ -824,7 +824,7 @@ func (cpdb *MySQLCheckpointsDB) Get(ctx context.Context, tableName string) (*Tab func (cpdb *MySQLCheckpointsDB) InsertEngineCheckpoints(ctx context.Context, tableName string, checkpoints map[int32]*EngineCheckpoint) error { s := common.SQLWithRetry{ DB: cpdb.db, - Logger: log.With(zap.String("table", tableName)), + Logger: log.FromContext(ctx).With(zap.String("table", tableName)), } err := s.Transact(ctx, "update engine checkpoints", func(c context.Context, tx *sql.Tx) error { engineStmt, err := tx.PrepareContext(c, fmt.Sprintf(ReplaceEngineTemplate, cpdb.schema, CheckpointTableNameEngine)) @@ -870,15 +870,15 @@ func (cpdb *MySQLCheckpointsDB) InsertEngineCheckpoints(ctx context.Context, tab return nil } -func (cpdb *MySQLCheckpointsDB) Update(checkpointDiffs map[string]*TableCheckpointDiff) error { +func (cpdb *MySQLCheckpointsDB) Update(taskCtx context.Context, checkpointDiffs map[string]*TableCheckpointDiff) error { chunkQuery := fmt.Sprintf(UpdateChunkTemplate, cpdb.schema, CheckpointTableNameChunk) rebaseQuery := fmt.Sprintf(UpdateTableRebaseTemplate, cpdb.schema, CheckpointTableNameTable) tableStatusQuery := fmt.Sprintf(UpdateTableStatusTemplate, cpdb.schema, CheckpointTableNameTable) tableChecksumQuery := fmt.Sprintf(UpdateTableChecksumTemplate, cpdb.schema, CheckpointTableNameTable) engineStatusQuery := fmt.Sprintf(UpdateEngineTemplate, cpdb.schema, CheckpointTableNameEngine) - s := common.SQLWithRetry{DB: cpdb.db, Logger: log.L()} - return s.Transact(context.Background(), "update checkpoints", func(c context.Context, tx *sql.Tx) error { + s := common.SQLWithRetry{DB: cpdb.db, Logger: log.FromContext(taskCtx)} + return s.Transact(taskCtx, "update checkpoints", func(c context.Context, tx *sql.Tx) error { chunkStmt, e := tx.PrepareContext(c, chunkQuery) if e != nil { return errors.Trace(e) @@ -981,7 +981,7 @@ func newFileCheckpointsDB( return nil, errors.Trace(err) } if !exist { - log.L().Info("open checkpoint file failed, going to create a new one", + log.FromContext(ctx).Info("open checkpoint file failed, going to create a new one", zap.String("path", path), log.ShortError(err), ) @@ -993,7 +993,7 @@ func newFileCheckpointsDB( } err = cpdb.checkpoints.Unmarshal(content) if err != nil { - log.L().Error("checkpoint file is broken", zap.String("path", path), zap.Error(err)) + log.FromContext(ctx).Error("checkpoint file is broken", zap.String("path", path), zap.Error(err)) } // FIXME: patch for empty map may need initialize manually, because currently // FIXME: a map of zero size -> marshall -> unmarshall -> become nil, see checkpoint_test.go @@ -1253,7 +1253,7 @@ func (cpdb *FileCheckpointsDB) InsertEngineCheckpoints(_ context.Context, tableN return errors.Trace(cpdb.save()) } -func (cpdb *FileCheckpointsDB) Update(checkpointDiffs map[string]*TableCheckpointDiff) error { +func (cpdb *FileCheckpointsDB) Update(_ context.Context, checkpointDiffs map[string]*TableCheckpointDiff) error { cpdb.lock.Lock() defer cpdb.lock.Unlock() @@ -1330,7 +1330,7 @@ func (*NullCheckpointsDB) DumpChunks(context.Context, io.Writer) error { func (cpdb *MySQLCheckpointsDB) RemoveCheckpoint(ctx context.Context, tableName string) error { s := common.SQLWithRetry{ DB: cpdb.db, - Logger: log.With(zap.String("table", tableName)), + Logger: log.FromContext(ctx).With(zap.String("table", tableName)), } if tableName == allTables { @@ -1362,7 +1362,7 @@ func (cpdb *MySQLCheckpointsDB) MoveCheckpoints(ctx context.Context, taskID int6 newSchema := fmt.Sprintf("`%s.%d.bak`", cpdb.schema[1:len(cpdb.schema)-1], taskID) s := common.SQLWithRetry{ DB: cpdb.db, - Logger: log.With(zap.Int64("taskID", taskID)), + Logger: log.FromContext(ctx).With(zap.Int64("taskID", taskID)), } createSchemaQuery := "CREATE SCHEMA IF NOT EXISTS " + newSchema @@ -1402,7 +1402,7 @@ func (cpdb *MySQLCheckpointsDB) GetLocalStoringTables(ctx context.Context) (map[ CheckpointStatusMaxInvalid, CheckpointStatusIndexImported, CheckpointStatusMaxInvalid, CheckpointStatusImported) - err := common.Retry("get local storing tables", log.L(), func() error { + err := common.Retry("get local storing tables", log.FromContext(ctx), func() error { targetTables = make(map[string][]int32) rows, err := cpdb.db.QueryContext(ctx, query) // #nosec G201 if err != nil { @@ -1453,7 +1453,7 @@ func (cpdb *MySQLCheckpointsDB) IgnoreErrorCheckpoint(ctx context.Context, table s := common.SQLWithRetry{ DB: cpdb.db, - Logger: log.With(zap.String("table", tableName)), + Logger: log.FromContext(ctx).With(zap.String("table", tableName)), } err := s.Transact(ctx, "ignore error checkpoints", func(c context.Context, tx *sql.Tx) error { if _, e := tx.ExecContext(c, engineQuery, tableName); e != nil { @@ -1510,7 +1510,7 @@ func (cpdb *MySQLCheckpointsDB) DestroyErrorCheckpoint(ctx context.Context, tabl s := common.SQLWithRetry{ DB: cpdb.db, - Logger: log.With(zap.String("table", tableName)), + Logger: log.FromContext(ctx).With(zap.String("table", tableName)), } err := s.Transact(ctx, "destroy error checkpoints", func(c context.Context, tx *sql.Tx) error { // Obtain the list of tables diff --git a/br/pkg/lightning/checkpoints/checkpoints_file_test.go b/br/pkg/lightning/checkpoints/checkpoints_file_test.go index 5911b9952a1c2..824434cb78f82 100644 --- a/br/pkg/lightning/checkpoints/checkpoints_file_test.go +++ b/br/pkg/lightning/checkpoints/checkpoints_file_test.go @@ -119,7 +119,7 @@ func newFileCheckpointsDB(t *testing.T) (*checkpoints.FileCheckpointsDB, func()) } ccm.MergeInto(cpd) - cpdb.Update(map[string]*checkpoints.TableCheckpointDiff{"`db1`.`t2`": cpd}) + cpdb.Update(ctx, map[string]*checkpoints.TableCheckpointDiff{"`db1`.`t2`": cpd}) return cpdb, func() { err := cpdb.Close() require.NoError(t, err) @@ -135,7 +135,7 @@ func setInvalidStatus(cpdb *checkpoints.FileCheckpointsDB) { scm.SetInvalid() scm.MergeInto(cpd) - cpdb.Update(map[string]*checkpoints.TableCheckpointDiff{ + cpdb.Update(context.Background(), map[string]*checkpoints.TableCheckpointDiff{ "`db1`.`t2`": cpd, "`db2`.`t3`": cpd, }) diff --git a/br/pkg/lightning/checkpoints/checkpoints_sql_test.go b/br/pkg/lightning/checkpoints/checkpoints_sql_test.go index 85a23f379fec9..a0f59ab771915 100644 --- a/br/pkg/lightning/checkpoints/checkpoints_sql_test.go +++ b/br/pkg/lightning/checkpoints/checkpoints_sql_test.go @@ -221,7 +221,7 @@ func TestNormalOperations(t *testing.T) { s.mock.ExpectCommit() s.mock.MatchExpectationsInOrder(false) - cpdb.Update(map[string]*checkpoints.TableCheckpointDiff{"`db1`.`t2`": cpd}) + cpdb.Update(ctx, map[string]*checkpoints.TableCheckpointDiff{"`db1`.`t2`": cpd}) s.mock.MatchExpectationsInOrder(true) require.Nil(t, s.mock.ExpectationsWereMet()) diff --git a/br/pkg/lightning/checkpoints/checkpointspb/BUILD.bazel b/br/pkg/lightning/checkpoints/checkpointspb/BUILD.bazel new file mode 100644 index 0000000000000..92bdf9dbcf654 --- /dev/null +++ b/br/pkg/lightning/checkpoints/checkpointspb/BUILD.bazel @@ -0,0 +1,12 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "checkpointspb", + srcs = ["file_checkpoints.pb.go"], + importpath = "github.com/pingcap/tidb/br/pkg/lightning/checkpoints/checkpointspb", + visibility = ["//visibility:public"], + deps = [ + "@com_github_gogo_protobuf//gogoproto", + "@com_github_gogo_protobuf//proto", + ], +) diff --git a/br/pkg/lightning/checkpoints/glue_checkpoint.go b/br/pkg/lightning/checkpoints/glue_checkpoint.go index 30b540426f2a7..b0f5278c7e89a 100644 --- a/br/pkg/lightning/checkpoints/glue_checkpoint.go +++ b/br/pkg/lightning/checkpoints/glue_checkpoint.go @@ -59,9 +59,9 @@ var _ DB = (*GlueCheckpointsDB)(nil) // dropPreparedStmt drops the statement and when meet an error, // print an error message. -func dropPreparedStmt(session Session, stmtID uint32) { +func dropPreparedStmt(ctx context.Context, session Session, stmtID uint32) { if err := session.DropPreparedStmt(stmtID); err != nil { - log.L().Error("failed to drop prepared statement", log.ShortError(err)) + log.FromContext(ctx).Error("failed to drop prepared statement", log.ShortError(err)) } } @@ -69,7 +69,7 @@ func NewGlueCheckpointsDB(ctx context.Context, se Session, f func() (Session, er var escapedSchemaName strings.Builder common.WriteMySQLIdentifier(&escapedSchemaName, schemaName) schema := escapedSchemaName.String() - logger := log.With(zap.String("schema", schemaName)) + logger := log.FromContext(ctx).With(zap.String("schema", schemaName)) sql := fmt.Sprintf(CreateDBTemplate, schema) err := common.Retry("create checkpoints database", logger, func() error { @@ -123,7 +123,7 @@ func NewGlueCheckpointsDB(ctx context.Context, se Session, f func() (Session, er } func (g GlueCheckpointsDB) Initialize(ctx context.Context, cfg *config.Config, dbInfo map[string]*TidbDBInfo) error { - logger := log.L() + logger := log.FromContext(ctx) se, err := g.getSessionFunc() if err != nil { return errors.Trace(err) @@ -135,7 +135,7 @@ func (g GlueCheckpointsDB) Initialize(ctx context.Context, cfg *config.Config, d if err != nil { return errors.Trace(err) } - defer dropPreparedStmt(s, stmtID) + defer dropPreparedStmt(ctx, s, stmtID) _, err = s.ExecutePreparedStmt(c, stmtID, []types.Datum{ types.NewIntDatum(cfg.TaskID), types.NewStringDatum(cfg.Mydumper.SourceDir), @@ -155,7 +155,7 @@ func (g GlueCheckpointsDB) Initialize(ctx context.Context, cfg *config.Config, d if err != nil { return errors.Trace(err) } - defer dropPreparedStmt(s, stmtID2) + defer dropPreparedStmt(ctx, s, stmtID2) for _, db := range dbInfo { for _, table := range db.Tables { @@ -177,7 +177,7 @@ func (g GlueCheckpointsDB) Initialize(ctx context.Context, cfg *config.Config, d } func (g GlueCheckpointsDB) TaskCheckpoint(ctx context.Context) (*TaskCheckpoint, error) { - logger := log.L() + logger := log.FromContext(ctx) sql := fmt.Sprintf(ReadTaskTemplate, g.schema, CheckpointTableNameTask) se, err := g.getSessionFunc() if err != nil { @@ -225,7 +225,7 @@ func (g GlueCheckpointsDB) Get(ctx context.Context, tableName string) (*TableChe cp := &TableCheckpoint{ Engines: map[int32]*EngineCheckpoint{}, } - logger := log.With(zap.String("table", tableName)) + logger := log.FromContext(ctx).With(zap.String("table", tableName)) se, err := g.getSessionFunc() if err != nil { return nil, errors.Trace(err) @@ -351,7 +351,7 @@ func (g GlueCheckpointsDB) Close() error { } func (g GlueCheckpointsDB) InsertEngineCheckpoints(ctx context.Context, tableName string, checkpointMap map[int32]*EngineCheckpoint) error { - logger := log.With(zap.String("table", tableName)) + logger := log.FromContext(ctx).With(zap.String("table", tableName)) se, err := g.getSessionFunc() if err != nil { return errors.Trace(err) @@ -363,13 +363,13 @@ func (g GlueCheckpointsDB) InsertEngineCheckpoints(ctx context.Context, tableNam if err != nil { return errors.Trace(err) } - defer dropPreparedStmt(s, engineStmt) + defer dropPreparedStmt(ctx, s, engineStmt) chunkStmt, _, _, err := s.PrepareStmt(fmt.Sprintf(ReplaceChunkTemplate, g.schema, CheckpointTableNameChunk)) if err != nil { return errors.Trace(err) } - defer dropPreparedStmt(s, chunkStmt) + defer dropPreparedStmt(ctx, s, chunkStmt) for engineID, engine := range checkpointMap { _, err := s.ExecutePreparedStmt(c, engineStmt, []types.Datum{ @@ -411,11 +411,11 @@ func (g GlueCheckpointsDB) InsertEngineCheckpoints(ctx context.Context, tableNam return errors.Trace(err) } -func (g GlueCheckpointsDB) Update(checkpointDiffs map[string]*TableCheckpointDiff) error { - logger := log.L() +func (g GlueCheckpointsDB) Update(ctx context.Context, checkpointDiffs map[string]*TableCheckpointDiff) error { + logger := log.FromContext(ctx) se, err := g.getSessionFunc() if err != nil { - log.L().Error("can't get a session to update GlueCheckpointsDB", zap.Error(errors.Trace(err))) + log.FromContext(ctx).Error("can't get a session to update GlueCheckpointsDB", zap.Error(errors.Trace(err))) return err } defer se.Close() @@ -429,22 +429,22 @@ func (g GlueCheckpointsDB) Update(checkpointDiffs map[string]*TableCheckpointDif if err != nil { return errors.Trace(err) } - defer dropPreparedStmt(s, chunkStmt) + defer dropPreparedStmt(ctx, s, chunkStmt) rebaseStmt, _, _, err := s.PrepareStmt(rebaseQuery) if err != nil { return errors.Trace(err) } - defer dropPreparedStmt(s, rebaseStmt) + defer dropPreparedStmt(ctx, s, rebaseStmt) tableStatusStmt, _, _, err := s.PrepareStmt(tableStatusQuery) if err != nil { return errors.Trace(err) } - defer dropPreparedStmt(s, tableStatusStmt) + defer dropPreparedStmt(ctx, s, tableStatusStmt) engineStatusStmt, _, _, err := s.PrepareStmt(engineStatusQuery) if err != nil { return errors.Trace(err) } - defer dropPreparedStmt(s, engineStatusStmt) + defer dropPreparedStmt(ctx, s, engineStatusStmt) for tableName, cpd := range checkpointDiffs { if cpd.hasStatus { @@ -504,7 +504,7 @@ func (g GlueCheckpointsDB) Update(checkpointDiffs map[string]*TableCheckpointDif } func (g GlueCheckpointsDB) RemoveCheckpoint(ctx context.Context, tableName string) error { - logger := log.With(zap.String("table", tableName)) + logger := log.FromContext(ctx).With(zap.String("table", tableName)) se, err := g.getSessionFunc() if err != nil { return errors.Trace(err) @@ -541,7 +541,7 @@ func (g GlueCheckpointsDB) RemoveCheckpoint(ctx context.Context, tableName strin func (g GlueCheckpointsDB) MoveCheckpoints(ctx context.Context, taskID int64) error { newSchema := fmt.Sprintf("`%s.%d.bak`", g.schema[1:len(g.schema)-1], taskID) - logger := log.With(zap.Int64("taskID", taskID)) + logger := log.FromContext(ctx).With(zap.Int64("taskID", taskID)) se, err := g.getSessionFunc() if err != nil { return errors.Trace(err) @@ -596,7 +596,7 @@ func (g GlueCheckpointsDB) GetLocalStoringTables(ctx context.Context) (map[strin CheckpointStatusMaxInvalid, CheckpointStatusIndexImported, CheckpointStatusMaxInvalid, CheckpointStatusImported) - err = common.Retry("get local storing tables", log.L(), func() error { + err = common.Retry("get local storing tables", log.FromContext(ctx), func() error { targetTables = make(map[string][]int32) rs, err := se.Execute(ctx, query) if err != nil { @@ -622,7 +622,7 @@ func (g GlueCheckpointsDB) GetLocalStoringTables(ctx context.Context) (map[strin } func (g GlueCheckpointsDB) IgnoreErrorCheckpoint(ctx context.Context, tableName string) error { - logger := log.With(zap.String("table", tableName)) + logger := log.FromContext(ctx).With(zap.String("table", tableName)) se, err := g.getSessionFunc() if err != nil { return errors.Trace(err) @@ -658,7 +658,7 @@ func (g GlueCheckpointsDB) IgnoreErrorCheckpoint(ctx context.Context, tableName } func (g GlueCheckpointsDB) DestroyErrorCheckpoint(ctx context.Context, tableName string) ([]DestroyedTableCheckpoint, error) { - logger := log.With(zap.String("table", tableName)) + logger := log.FromContext(ctx).With(zap.String("table", tableName)) se, err := g.getSessionFunc() if err != nil { return nil, errors.Trace(err) diff --git a/br/pkg/lightning/common/BUILD.bazel b/br/pkg/lightning/common/BUILD.bazel new file mode 100644 index 0000000000000..c64a3fdf85654 --- /dev/null +++ b/br/pkg/lightning/common/BUILD.bazel @@ -0,0 +1,69 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "common", + srcs = [ + "conn.go", + "errors.go", + "once_error.go", + "pause.go", + "retry.go", + "security.go", + "storage.go", + "storage_unix.go", + "storage_windows.go", + "util.go", + ], + importpath = "github.com/pingcap/tidb/br/pkg/lightning/common", + visibility = ["//visibility:public"], + deps = [ + "//br/pkg/errors", + "//br/pkg/httputil", + "//br/pkg/lightning/log", + "//br/pkg/utils", + "//errno", + "//parser/model", + "@com_github_go_sql_driver_mysql//:mysql", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_tikv_client_go_v2//config", + "@com_github_tikv_pd_client//:client", + "@org_golang_google_grpc//:grpc", + "@org_golang_google_grpc//codes", + "@org_golang_google_grpc//credentials", + "@org_golang_google_grpc//status", + "@org_golang_x_sys//unix", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "common_test", + srcs = [ + "errors_test.go", + "main_test.go", + "once_error_test.go", + "pause_test.go", + "retry_test.go", + "security_test.go", + "storage_test.go", + "util_test.go", + ], + embed = [":common"], + deps = [ + "//br/pkg/errors", + "//br/pkg/lightning/log", + "//errno", + "//testkit/testsetup", + "@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", + "@org_golang_google_grpc//codes", + "@org_golang_google_grpc//status", + "@org_uber_go_goleak//:goleak", + "@org_uber_go_multierr//:multierr", + ], +) diff --git a/br/pkg/lightning/common/conn.go b/br/pkg/lightning/common/conn.go index eb9b598e64c55..fcf2aaa55fbf3 100644 --- a/br/pkg/lightning/common/conn.go +++ b/br/pkg/lightning/common/conn.go @@ -34,6 +34,7 @@ type ConnPool struct { next int cap int newConn func(ctx context.Context) (*grpc.ClientConn, error) + logger log.Logger } func (p *ConnPool) TakeConns() (conns []*grpc.ClientConn) { @@ -48,7 +49,7 @@ func (p *ConnPool) TakeConns() (conns []*grpc.ClientConn) { func (p *ConnPool) Close() { for _, c := range p.TakeConns() { if err := c.Close(); err != nil { - log.L().Warn("failed to close clientConn", zap.String("target", c.Target()), log.ShortError(err)) + p.logger.Warn("failed to close clientConn", zap.String("target", c.Target()), log.ShortError(err)) } } } @@ -72,13 +73,12 @@ func (p *ConnPool) get(ctx context.Context) (*grpc.ClientConn, error) { } // NewConnPool creates a new connPool by the specified conn factory function and capacity. -func NewConnPool(capacity int, newConn func(ctx context.Context) (*grpc.ClientConn, error)) *ConnPool { +func NewConnPool(capacity int, newConn func(ctx context.Context) (*grpc.ClientConn, error), logger log.Logger) *ConnPool { return &ConnPool{ cap: capacity, conns: make([]*grpc.ClientConn, 0, capacity), newConn: newConn, - - mu: sync.Mutex{}, + logger: logger, } } @@ -100,7 +100,7 @@ func (conns *GRPCConns) GetGrpcConn(ctx context.Context, storeID uint64, tcpConc conns.mu.Lock() defer conns.mu.Unlock() if _, ok := conns.conns[storeID]; !ok { - conns.conns[storeID] = NewConnPool(tcpConcurrency, newConn) + conns.conns[storeID] = NewConnPool(tcpConcurrency, newConn, log.FromContext(ctx)) } return conns.conns[storeID].get(ctx) } diff --git a/br/pkg/lightning/config/BUILD.bazel b/br/pkg/lightning/config/BUILD.bazel new file mode 100644 index 0000000000000..04e5e38403b2b --- /dev/null +++ b/br/pkg/lightning/config/BUILD.bazel @@ -0,0 +1,45 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "config", + srcs = [ + "bytesize.go", + "config.go", + "configlist.go", + "const.go", + "global.go", + ], + importpath = "github.com/pingcap/tidb/br/pkg/lightning/config", + visibility = ["//visibility:public"], + deps = [ + "//br/pkg/lightning/common", + "//br/pkg/lightning/log", + "//br/pkg/version/build", + "//config", + "//parser/mysql", + "//util/table-filter", + "//util/table-router", + "@com_github_burntsushi_toml//:toml", + "@com_github_carlmjohnson_flagext//:flagext", + "@com_github_docker_go_units//:go-units", + "@com_github_go_sql_driver_mysql//:mysql", + "@com_github_pingcap_errors//:errors", + "@org_uber_go_atomic//:atomic", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "config_test", + srcs = [ + "bytesize_test.go", + "config_test.go", + "configlist_test.go", + ], + deps = [ + ":config", + "//parser/mysql", + "@com_github_burntsushi_toml//:toml", + "@com_github_stretchr_testify//require", + ], +) diff --git a/br/pkg/lightning/config/config.go b/br/pkg/lightning/config/config.go index fee2aaf29deb2..b0ffe32fa3cd5 100644 --- a/br/pkg/lightning/config/config.go +++ b/br/pkg/lightning/config/config.go @@ -532,6 +532,7 @@ type TikvImporter struct { EngineMemCacheSize ByteSize `toml:"engine-mem-cache-size" json:"engine-mem-cache-size"` LocalWriterMemCacheSize ByteSize `toml:"local-writer-mem-cache-size" json:"local-writer-mem-cache-size"` + StoreWriteBWLimit ByteSize `toml:"store-write-bwlimit" json:"store-write-bwlimit"` } type Checkpoint struct { diff --git a/br/pkg/lightning/config/config_test.go b/br/pkg/lightning/config/config_test.go index 881f89de3d380..555cbed109f1d 100644 --- a/br/pkg/lightning/config/config_test.go +++ b/br/pkg/lightning/config/config_test.go @@ -517,7 +517,7 @@ func TestInvalidTOML(t *testing.T) { delimiter = '\' backslash-escape = true `)) - require.EqualError(t, err, "Near line 0 (last key parsed ''): bare keys cannot contain '['") + require.EqualError(t, err, "Near line 2 (last key parsed ''): expected '.' or '=', but got '[' instead") } func TestTOMLUnusedKeys(t *testing.T) { diff --git a/br/pkg/lightning/errormanager/BUILD.bazel b/br/pkg/lightning/errormanager/BUILD.bazel new file mode 100644 index 0000000000000..7aea8447865e8 --- /dev/null +++ b/br/pkg/lightning/errormanager/BUILD.bazel @@ -0,0 +1,35 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "errormanager", + srcs = ["errormanager.go"], + importpath = "github.com/pingcap/tidb/br/pkg/lightning/errormanager", + visibility = ["//visibility:public"], + deps = [ + "//br/pkg/lightning/common", + "//br/pkg/lightning/config", + "//br/pkg/lightning/log", + "//br/pkg/redact", + "//br/pkg/utils", + "@com_github_jedib0t_go_pretty_v6//table", + "@com_github_jedib0t_go_pretty_v6//text", + "@com_github_pingcap_errors//:errors", + "@org_golang_x_sync//errgroup", + "@org_uber_go_multierr//:multierr", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "errormanager_test", + srcs = ["errormanager_test.go"], + embed = [":errormanager"], + deps = [ + "//br/pkg/lightning/config", + "//br/pkg/lightning/log", + "//br/pkg/utils", + "@com_github_data_dog_go_sqlmock//:go-sqlmock", + "@com_github_stretchr_testify//require", + "@org_uber_go_atomic//:atomic", + ], +) diff --git a/br/pkg/lightning/errormanager/errormanager.go b/br/pkg/lightning/errormanager/errormanager.go index 965191373688e..b900d19c3a431 100644 --- a/br/pkg/lightning/errormanager/errormanager.go +++ b/br/pkg/lightning/errormanager/errormanager.go @@ -122,6 +122,7 @@ type ErrorManager struct { configError *config.MaxError remainingError config.MaxError dupResolution config.DuplicateResolutionAlgorithm + logger log.Logger } func (em *ErrorManager) TypeErrorsRemain() int64 { @@ -129,12 +130,13 @@ func (em *ErrorManager) TypeErrorsRemain() int64 { } // New creates a new error manager. -func New(db *sql.DB, cfg *config.Config) *ErrorManager { +func New(db *sql.DB, cfg *config.Config, logger log.Logger) *ErrorManager { em := &ErrorManager{ taskID: cfg.TaskID, configError: &cfg.App.MaxError, remainingError: cfg.App.MaxError, dupResolution: cfg.TikvImporter.DuplicateResolution, + logger: logger, } if len(cfg.App.TaskInfoSchemaName) != 0 { em.db = db @@ -151,7 +153,7 @@ func (em *ErrorManager) Init(ctx context.Context) error { exec := common.SQLWithRetry{ DB: em.db, - Logger: log.L(), + Logger: em.logger, } sqls := make([][2]string, 0) @@ -351,6 +353,7 @@ func (em *ErrorManager) ResolveAllConflictKeys( go func() { //nolint:staticcheck + //lint:ignore SA2000 taskWg.Add(1) taskCh <- [2]int64{0, math.MaxInt64} taskWg.Wait() @@ -456,17 +459,17 @@ func (em *ErrorManager) LogErrorDetails() { cnt, errType, em.fmtTableName(tblName)) } if errCnt := em.typeErrors(); errCnt > 0 { - log.L().Warn(fmtErrMsg(errCnt, "data type", typeErrorTableName)) + em.logger.Warn(fmtErrMsg(errCnt, "data type", typeErrorTableName)) } if errCnt := em.syntaxError(); errCnt > 0 { - log.L().Warn(fmtErrMsg(errCnt, "data type", syntaxErrorTableName)) + em.logger.Warn(fmtErrMsg(errCnt, "data type", syntaxErrorTableName)) } if errCnt := em.charsetError(); errCnt > 0 { // TODO: add charset table name - log.L().Warn(fmtErrMsg(errCnt, "data type", "")) + em.logger.Warn(fmtErrMsg(errCnt, "data type", "")) } if errCnt := em.conflictError(); errCnt > 0 { - log.L().Warn(fmtErrMsg(errCnt, "data type", conflictErrorTableName)) + em.logger.Warn(fmtErrMsg(errCnt, "data type", conflictErrorTableName)) } } diff --git a/br/pkg/lightning/errormanager/errormanager_test.go b/br/pkg/lightning/errormanager/errormanager_test.go index 63446cdd4c573..38f81b51f0299 100644 --- a/br/pkg/lightning/errormanager/errormanager_test.go +++ b/br/pkg/lightning/errormanager/errormanager_test.go @@ -25,6 +25,7 @@ import ( "testing" "github.com/DATA-DOG/go-sqlmock" + "github.com/pingcap/tidb/br/pkg/lightning/log" "github.com/stretchr/testify/require" "go.uber.org/atomic" @@ -41,7 +42,7 @@ func TestInit(t *testing.T) { cfg.App.MaxError.Type.Store(10) cfg.App.TaskInfoSchemaName = "lightning_errors" - em := New(db, cfg) + em := New(db, cfg, log.L()) require.Equal(t, cfg.TikvImporter.DuplicateResolution, em.dupResolution) require.Equal(t, cfg.App.MaxError.Type.Load(), em.remainingError.Type.Load()) require.Equal(t, cfg.App.MaxError.Conflict.Load(), em.remainingError.Conflict.Load()) @@ -162,7 +163,7 @@ func TestResolveAllConflictKeys(t *testing.T) { cfg := config.NewConfig() cfg.TikvImporter.DuplicateResolution = config.DupeResAlgRemove cfg.App.TaskInfoSchemaName = "lightning_errors" - em := New(db, cfg) + em := New(db, cfg, log.L()) ctx := context.Background() err = em.Init(ctx) require.NoError(t, err) diff --git a/br/pkg/lightning/glue/BUILD.bazel b/br/pkg/lightning/glue/BUILD.bazel new file mode 100644 index 0000000000000..9b1adc3ef2d67 --- /dev/null +++ b/br/pkg/lightning/glue/BUILD.bazel @@ -0,0 +1,20 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "glue", + srcs = ["glue.go"], + importpath = "github.com/pingcap/tidb/br/pkg/lightning/glue", + visibility = ["//visibility:public"], + deps = [ + "//br/pkg/lightning/checkpoints", + "//br/pkg/lightning/common", + "//br/pkg/lightning/config", + "//br/pkg/lightning/log", + "//parser", + "//parser/ast", + "//parser/model", + "//parser/mysql", + "//types", + "//util/sqlexec", + ], +) diff --git a/br/pkg/lightning/lightning.go b/br/pkg/lightning/lightning.go index 3c6f0256a740c..111b7c93b59b4 100644 --- a/br/pkg/lightning/lightning.go +++ b/br/pkg/lightning/lightning.go @@ -43,6 +43,7 @@ import ( "github.com/pingcap/tidb/br/pkg/lightning/config" "github.com/pingcap/tidb/br/pkg/lightning/glue" "github.com/pingcap/tidb/br/pkg/lightning/log" + "github.com/pingcap/tidb/br/pkg/lightning/metric" "github.com/pingcap/tidb/br/pkg/lightning/mydump" "github.com/pingcap/tidb/br/pkg/lightning/restore" "github.com/pingcap/tidb/br/pkg/lightning/tikv" @@ -51,6 +52,9 @@ import ( "github.com/pingcap/tidb/br/pkg/storage" "github.com/pingcap/tidb/br/pkg/utils" "github.com/pingcap/tidb/br/pkg/version/build" + "github.com/pingcap/tidb/util/promutil" + "github.com/prometheus/client_golang/prometheus" + "github.com/prometheus/client_golang/prometheus/collectors" "github.com/prometheus/client_golang/prometheus/promhttp" "github.com/shurcooL/httpgzip" "go.uber.org/zap" @@ -69,6 +73,9 @@ type Lightning struct { serverLock sync.Mutex status restore.LightningStatus + promFactory promutil.Factory + promRegistry promutil.Registry + cancelLock sync.Mutex curTask *config.Config cancel context.CancelFunc // for per task context, which maybe different from lightning context @@ -94,12 +101,16 @@ func New(globalCfg *config.GlobalConfig) *Lightning { redact.InitRedact(globalCfg.Security.RedactInfoLog) + promFactory := promutil.NewDefaultFactory() + promRegistry := promutil.NewDefaultRegistry() ctx, shutdown := context.WithCancel(context.Background()) return &Lightning{ - globalCfg: globalCfg, - globalTLS: tls, - ctx: ctx, - shutdown: shutdown, + globalCfg: globalCfg, + globalTLS: tls, + ctx: ctx, + shutdown: shutdown, + promFactory: promFactory, + promRegistry: promRegistry, } } @@ -181,7 +192,16 @@ func httpHandleWrapper(h http.HandlerFunc) http.HandlerFunc { func (l *Lightning) goServe(statusAddr string, realAddrWriter io.Writer) error { mux := http.NewServeMux() mux.Handle("/", http.RedirectHandler("/web/", http.StatusFound)) - mux.Handle("/metrics", promhttp.Handler()) + + registry := l.promRegistry + registry.MustRegister(collectors.NewProcessCollector(collectors.ProcessCollectorOpts{})) + registry.MustRegister(collectors.NewGoCollector()) + if gatherer, ok := registry.(prometheus.Gatherer); ok { + handler := promhttp.InstrumentMetricHandler( + registry, promhttp.HandlerFor(gatherer, promhttp.HandlerOpts{}), + ) + mux.Handle("/metrics", handler) + } mux.HandleFunc("/debug/pprof/", pprof.Index) mux.HandleFunc("/debug/pprof/cmdline", pprof.Cmdline) @@ -242,8 +262,13 @@ func (l *Lightning) RunOnce(taskCtx context.Context, taskCfg *config.Config, glu failpoint.Inject("SetTaskID", func(val failpoint.Value) { taskCfg.TaskID = int64(val.(int)) }) - - return l.run(taskCtx, taskCfg, &options{glue: glue}) + o := &options{ + glue: glue, + promFactory: l.promFactory, + promRegistry: l.promRegistry, + logger: log.L(), + } + return l.run(taskCtx, taskCfg, o) } func (l *Lightning) RunServer() error { @@ -260,7 +285,11 @@ func (l *Lightning) RunServer() error { if err != nil { return err } - o := &options{} + o := &options{ + promFactory: l.promFactory, + promRegistry: l.promRegistry, + logger: log.L(), + } err = l.run(context.Background(), task, o) if err != nil && !common.IsContextCanceledError(err) { restore.DeliverPauser.Pause() // force pause the progress on error @@ -280,7 +309,11 @@ func (l *Lightning) RunServer() error { // - WithCheckpointStorage: caller has opened an external storage for lightning and want to save checkpoint // in it. Otherwise, lightning will save checkpoint by the Checkpoint.DSN in config func (l *Lightning) RunOnceWithOptions(taskCtx context.Context, taskCfg *config.Config, opts ...Option) error { - o := &options{} + o := &options{ + promFactory: l.promFactory, + promRegistry: l.promRegistry, + logger: log.L(), + } for _, opt := range opts { opt(o) } @@ -327,11 +360,19 @@ var ( func (l *Lightning) run(taskCtx context.Context, taskCfg *config.Config, o *options) (err error) { build.LogInfo(build.Lightning) - log.L().Info("cfg", zap.Stringer("cfg", taskCfg)) + o.logger.Info("cfg", zap.Stringer("cfg", taskCfg)) utils.LogEnvVariables() - ctx, cancel := context.WithCancel(taskCtx) + metrics := metric.NewMetrics(o.promFactory) + metrics.RegisterTo(o.promRegistry) + defer func() { + metrics.UnregisterFrom(o.promRegistry) + }() + + ctx := metric.NewContext(taskCtx, metrics) + ctx = log.NewContext(ctx, o.logger) + ctx, cancel := context.WithCancel(ctx) l.cancelLock.Lock() l.cancel = cancel l.curTask = taskCfg @@ -420,7 +461,7 @@ func (l *Lightning) run(taskCtx context.Context, taskCfg *config.Config, o *opti return common.NormalizeOrWrapErr(common.ErrStorageUnknown, walkErr) } - loadTask := log.L().Begin(zap.InfoLevel, "load data source") + loadTask := o.logger.Begin(zap.InfoLevel, "load data source") var mdl *mydump.MDLoader mdl, err = mydump.NewMyDumpLoaderWithStore(ctx, taskCfg, s) loadTask.End(zap.ErrorLevel, err) @@ -429,13 +470,13 @@ func (l *Lightning) run(taskCtx context.Context, taskCfg *config.Config, o *opti } err = checkSystemRequirement(taskCfg, mdl.GetDatabases()) if err != nil { - log.L().Error("check system requirements failed", zap.Error(err)) + o.logger.Error("check system requirements failed", zap.Error(err)) return common.ErrSystemRequirementNotMet.Wrap(err).GenWithStackByArgs() } // check table schema conflicts err = checkSchemaConflict(taskCfg, mdl.GetDatabases()) if err != nil { - log.L().Error("checkpoint schema conflicts with data files", zap.Error(err)) + o.logger.Error("checkpoint schema conflicts with data files", zap.Error(err)) return errors.Trace(err) } @@ -456,7 +497,7 @@ func (l *Lightning) run(taskCtx context.Context, taskCfg *config.Config, o *opti procedure, err = restore.NewRestoreController(ctx, taskCfg, param) if err != nil { - log.L().Error("restore failed", log.ShortError(err)) + o.logger.Error("restore failed", log.ShortError(err)) return errors.Trace(err) } defer procedure.Close() @@ -798,7 +839,9 @@ func handleLogLevel(w http.ResponseWriter, req *http.Request) { return } oldLevel := log.SetLevel(zapcore.InfoLevel) - log.L().Info("changed log level", zap.Stringer("old", oldLevel), zap.Stringer("new", logLevel.Level)) + log.L().Info("changed log level. No effects if task has specified its logger", + zap.Stringer("old", oldLevel), + zap.Stringer("new", logLevel.Level)) log.SetLevel(logLevel.Level) w.WriteHeader(http.StatusOK) _, _ = w.Write([]byte("{}")) @@ -904,7 +947,7 @@ func CleanupMetas(ctx context.Context, cfg *config.Config, tableName string) err if err != nil || !exist { return errors.Trace(err) } - return errors.Trace(restore.MaybeCleanupAllMetas(ctx, db, cfg.App.MetaSchemaName, tableMetaExist)) + return errors.Trace(restore.MaybeCleanupAllMetas(ctx, log.L(), db, cfg.App.MetaSchemaName, tableMetaExist)) } func SwitchMode(ctx context.Context, cfg *config.Config, tls *common.TLS, mode string) error { diff --git a/br/pkg/lightning/lightning_serial_test.go b/br/pkg/lightning/lightning_serial_test.go index 1a9b0c9692495..398d4e90eec6f 100644 --- a/br/pkg/lightning/lightning_serial_test.go +++ b/br/pkg/lightning/lightning_serial_test.go @@ -25,6 +25,7 @@ import ( "github.com/pingcap/tidb/br/pkg/lightning/checkpoints" "github.com/pingcap/tidb/br/pkg/lightning/config" "github.com/pingcap/tidb/br/pkg/lightning/glue" + "github.com/pingcap/tidb/br/pkg/lightning/log" "github.com/pingcap/tidb/br/pkg/lightning/mydump" "github.com/stretchr/testify/require" ) @@ -61,7 +62,12 @@ func TestRun(t *testing.T) { path, _ := filepath.Abs(".") ctx := context.Background() invalidGlue := glue.NewExternalTiDBGlue(nil, 0) - o := &options{glue: invalidGlue} + o := &options{ + glue: invalidGlue, + promRegistry: lightning.promRegistry, + promFactory: lightning.promFactory, + logger: log.L(), + } err = lightning.run(ctx, &config.Config{ Mydumper: config.MydumperRuntime{ SourceDir: "file://" + filepath.ToSlash(path), diff --git a/br/pkg/lightning/log/BUILD.bazel b/br/pkg/lightning/log/BUILD.bazel new file mode 100644 index 0000000000000..3e3865487f3e0 --- /dev/null +++ b/br/pkg/lightning/log/BUILD.bazel @@ -0,0 +1,37 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "log", + srcs = [ + "filter.go", + "log.go", + "testlogger.go", + ], + importpath = "github.com/pingcap/tidb/br/pkg/lightning/log", + visibility = ["//visibility:public"], + deps = [ + "//util/logutil", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_log//:log", + "@org_golang_google_grpc//codes", + "@org_golang_google_grpc//status", + "@org_uber_go_zap//:zap", + "@org_uber_go_zap//zapcore", + "@org_uber_go_zap//zaptest", + ], +) + +go_test( + name = "log_test", + srcs = [ + "filter_test.go", + "log_test.go", + ], + importpath = "github.com/pingcap/tidb/br/pkg/lightning/log_test", + deps = [ + ":log", + "@com_github_stretchr_testify//require", + "@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 aa61023a29cc9..2dab04f925182 100644 --- a/br/pkg/lightning/log/log.go +++ b/br/pkg/lightning/log/log.go @@ -230,3 +230,21 @@ func (task *Task) End(level zapcore.Level, err error, extraFields ...zap.Field) } return elapsed } + +type ctxKeyType struct{} + +var ctxKey ctxKeyType + +// NewContext returns a new context with the provided logger. +func NewContext(ctx context.Context, logger Logger) context.Context { + return context.WithValue(ctx, ctxKey, logger) +} + +// FromContext returns the logger stored in the context. +func FromContext(ctx context.Context) Logger { + m, ok := ctx.Value(ctxKey).(Logger) + if !ok { + return appLogger + } + return m +} diff --git a/br/pkg/lightning/manual/BUILD.bazel b/br/pkg/lightning/manual/BUILD.bazel new file mode 100644 index 0000000000000..6d1fc18dd2495 --- /dev/null +++ b/br/pkg/lightning/manual/BUILD.bazel @@ -0,0 +1,13 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "manual", + srcs = [ + "allocator.go", + "manual.go", + "manual_nocgo.go", + ], + cgo = True, + importpath = "github.com/pingcap/tidb/br/pkg/lightning/manual", + visibility = ["//visibility:public"], +) diff --git a/br/pkg/lightning/metric/BUILD.bazel b/br/pkg/lightning/metric/BUILD.bazel new file mode 100644 index 0000000000000..1806c74efd06e --- /dev/null +++ b/br/pkg/lightning/metric/BUILD.bazel @@ -0,0 +1,25 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "metric", + srcs = ["metric.go"], + importpath = "github.com/pingcap/tidb/br/pkg/lightning/metric", + visibility = ["//visibility:public"], + deps = [ + "//util/promutil", + "@com_github_prometheus_client_golang//prometheus", + "@com_github_prometheus_client_model//go", + ], +) + +go_test( + name = "metric_test", + srcs = ["metric_test.go"], + deps = [ + ":metric", + "//util/promutil", + "@com_github_prometheus_client_golang//prometheus", + "@com_github_stretchr_testify//assert", + "@com_github_stretchr_testify//require", + ], +) diff --git a/br/pkg/lightning/metric/metric.go b/br/pkg/lightning/metric/metric.go index 6121ea69358b2..0fb12c7dfcc6d 100644 --- a/br/pkg/lightning/metric/metric.go +++ b/br/pkg/lightning/metric/metric.go @@ -15,8 +15,10 @@ package metric import ( + "context" "math" + "github.com/pingcap/tidb/util/promutil" "github.com/prometheus/client_golang/prometheus" dto "github.com/prometheus/client_model/go" ) @@ -51,208 +53,255 @@ const ( BlockDeliverKindData = "data" ) -var ( - ImporterEngineCounter = prometheus.NewCounterVec( - prometheus.CounterOpts{ - Namespace: "lightning", - Name: "importer_engine", - Help: "counting open and closed importer engines", - }, []string{"type"}) - - IdleWorkersGauge = prometheus.NewGaugeVec( - prometheus.GaugeOpts{ - Namespace: "lightning", - Name: "idle_workers", - Help: "counting idle workers", - }, []string{"name"}) - - KvEncoderCounter = prometheus.NewCounterVec( - prometheus.CounterOpts{ - Namespace: "lightning", - Name: "kv_encoder", - Help: "counting kv open and closed kv encoder", - }, []string{"type"}, - ) +type Metrics struct { + ImporterEngineCounter *prometheus.CounterVec + IdleWorkersGauge *prometheus.GaugeVec + KvEncoderCounter *prometheus.CounterVec + TableCounter *prometheus.CounterVec + ProcessedEngineCounter *prometheus.CounterVec + ChunkCounter *prometheus.CounterVec + BytesCounter *prometheus.CounterVec + ImportSecondsHistogram prometheus.Histogram + ChunkParserReadBlockSecondsHistogram prometheus.Histogram + ApplyWorkerSecondsHistogram *prometheus.HistogramVec + RowReadSecondsHistogram prometheus.Histogram + RowReadBytesHistogram prometheus.Histogram + RowEncodeSecondsHistogram prometheus.Histogram + RowKVDeliverSecondsHistogram prometheus.Histogram + BlockDeliverSecondsHistogram prometheus.Histogram + BlockDeliverBytesHistogram *prometheus.HistogramVec + BlockDeliverKVPairsHistogram *prometheus.HistogramVec + ChecksumSecondsHistogram prometheus.Histogram + LocalStorageUsageBytesGauge *prometheus.GaugeVec + ProgressGauge *prometheus.GaugeVec +} - TableCounter = prometheus.NewCounterVec( - prometheus.CounterOpts{ - Namespace: "lightning", - Name: "tables", - Help: "count number of tables processed", - }, []string{"state", "result"}) - ProcessedEngineCounter = prometheus.NewCounterVec( - prometheus.CounterOpts{ - Namespace: "lightning", - Name: "engines", - Help: "count number of engines processed", - }, []string{"state", "result"}) - ChunkCounter = prometheus.NewCounterVec( - prometheus.CounterOpts{ - Namespace: "lightning", - Name: "chunks", - Help: "count number of chunks processed", - }, []string{"state"}) - BytesCounter = prometheus.NewCounterVec( - prometheus.CounterOpts{ - Namespace: "lightning", - Name: "bytes", - Help: "count of total bytes", - }, []string{"state"}) - // state can be one of: - // - estimated (an estimation derived from the file size) - // - pending - // - running - // - finished - // - failed - - ImportSecondsHistogram = prometheus.NewHistogram( - prometheus.HistogramOpts{ - Namespace: "lightning", - Name: "import_seconds", - Help: "time needed to import a table", - Buckets: prometheus.ExponentialBuckets(0.125, 2, 6), - }, - ) - ChunkParserReadBlockSecondsHistogram = prometheus.NewHistogram( - prometheus.HistogramOpts{ - Namespace: "lightning", - Name: "chunk_parser_read_block_seconds", - Help: "time needed for chunk parser read a block", - Buckets: prometheus.ExponentialBuckets(0.001, 3.1622776601683795, 10), - }, - ) - ApplyWorkerSecondsHistogram = prometheus.NewHistogramVec( - prometheus.HistogramOpts{ - Namespace: "lightning", - Name: "apply_worker_seconds", - Help: "time needed to apply a worker", - Buckets: prometheus.ExponentialBuckets(0.001, 3.1622776601683795, 10), - }, []string{"name"}, - ) - RowReadSecondsHistogram = prometheus.NewHistogram( - prometheus.HistogramOpts{ - Namespace: "lightning", - Name: "row_read_seconds", - Help: "time needed to parse a row", - Buckets: prometheus.ExponentialBuckets(0.001, 3.1622776601683795, 7), - }, - ) - RowReadBytesHistogram = prometheus.NewHistogram( - prometheus.HistogramOpts{ - Namespace: "lightning", - Name: "row_read_bytes", - Help: "number of bytes being read out from data source", - Buckets: prometheus.ExponentialBuckets(1024, 2, 8), - }, - ) - RowEncodeSecondsHistogram = prometheus.NewHistogram( - prometheus.HistogramOpts{ - Namespace: "lightning", - Name: "row_encode_seconds", - Help: "time needed to encode a row", - Buckets: prometheus.ExponentialBuckets(0.001, 3.1622776601683795, 10), - }, - ) - RowKVDeliverSecondsHistogram = prometheus.NewHistogram( - prometheus.HistogramOpts{ - Namespace: "lightning", - Name: "row_kv_deliver_seconds", - Help: "time needed to deliver kvs of a single row", - Buckets: prometheus.ExponentialBuckets(0.001, 3.1622776601683795, 10), - }, - ) - BlockDeliverSecondsHistogram = prometheus.NewHistogram( - prometheus.HistogramOpts{ - Namespace: "lightning", - Name: "block_deliver_seconds", - Help: "time needed to deliver a block", - Buckets: prometheus.ExponentialBuckets(0.001, 3.1622776601683795, 10), - }, - ) - BlockDeliverBytesHistogram = prometheus.NewHistogramVec( - prometheus.HistogramOpts{ - Namespace: "lightning", - Name: "block_deliver_bytes", - Help: "number of bytes being sent out to importer", - Buckets: prometheus.ExponentialBuckets(512, 2, 10), - }, []string{"kind"}, - ) - BlockDeliverKVPairsHistogram = prometheus.NewHistogramVec( - prometheus.HistogramOpts{ - Namespace: "lightning", - Name: "block_deliver_kv_pairs", - Help: "number of KV pairs being sent out to importer", - Buckets: prometheus.ExponentialBuckets(1, 2, 10), - }, []string{"kind"}, - ) - ChecksumSecondsHistogram = prometheus.NewHistogram( - prometheus.HistogramOpts{ - Namespace: "lightning", - Name: "checksum_seconds", - Help: "time needed to complete the checksum stage", - Buckets: prometheus.ExponentialBuckets(1, 2.2679331552660544, 10), - }, - ) +// NewMetrics creates a new empty metrics. +func NewMetrics(factory promutil.Factory) *Metrics { + return &Metrics{ + ImporterEngineCounter: factory.NewCounterVec( + prometheus.CounterOpts{ + Namespace: "lightning", + Name: "importer_engine", + Help: "counting open and closed importer engines", + }, []string{"type"}), - LocalStorageUsageBytesGauge = prometheus.NewGaugeVec( - prometheus.GaugeOpts{ - Namespace: "lightning", - Name: "local_storage_usage_bytes", - Help: "disk/memory size currently occupied by intermediate files in local backend", - }, []string{"medium"}, - ) + IdleWorkersGauge: factory.NewGaugeVec( + prometheus.GaugeOpts{ + Namespace: "lightning", + Name: "idle_workers", + Help: "counting idle workers", + }, []string{"name"}), + + KvEncoderCounter: factory.NewCounterVec( + prometheus.CounterOpts{ + Namespace: "lightning", + Name: "kv_encoder", + Help: "counting kv open and closed kv encoder", + }, []string{"type"}), + + TableCounter: factory.NewCounterVec( + prometheus.CounterOpts{ + Namespace: "lightning", + Name: "tables", + Help: "count number of tables processed", + }, []string{"state", "result"}), + + ProcessedEngineCounter: factory.NewCounterVec( + prometheus.CounterOpts{ + Namespace: "lightning", + Name: "engines", + Help: "count number of engines processed", + }, []string{"state", "result"}), + + ChunkCounter: factory.NewCounterVec( + prometheus.CounterOpts{ + Namespace: "lightning", + Name: "chunks", + Help: "count number of chunks processed", + }, []string{"state"}), + + BytesCounter: factory.NewCounterVec( + prometheus.CounterOpts{ + Namespace: "lightning", + Name: "bytes", + Help: "count of total bytes", + }, []string{"state"}), + // state can be one of: + // - estimated (an estimation derived from the file size) + // - pending + // - running + // - finished + // - failed - ProgressGauge = prometheus.NewGaugeVec( - prometheus.GaugeOpts{ - Namespace: "lightning", - Name: "progress", - Help: "progress of lightning phase", - }, []string{"phase"}, + ImportSecondsHistogram: factory.NewHistogram( + prometheus.HistogramOpts{ + Namespace: "lightning", + Name: "import_seconds", + Help: "time needed to import a table", + Buckets: prometheus.ExponentialBuckets(0.125, 2, 6), + }), + + ChunkParserReadBlockSecondsHistogram: factory.NewHistogram( + prometheus.HistogramOpts{ + Namespace: "lightning", + Name: "chunk_parser_read_block_seconds", + Help: "time needed for chunk parser read a block", + Buckets: prometheus.ExponentialBuckets(0.001, 3.1622776601683795, 10), + }), + + ApplyWorkerSecondsHistogram: factory.NewHistogramVec( + prometheus.HistogramOpts{ + Namespace: "lightning", + Name: "apply_worker_seconds", + Help: "time needed to apply a worker", + Buckets: prometheus.ExponentialBuckets(0.001, 3.1622776601683795, 10), + }, []string{"name"}), + + RowReadSecondsHistogram: factory.NewHistogram( + prometheus.HistogramOpts{ + Namespace: "lightning", + Name: "row_read_seconds", + Help: "time needed to parse a row", + Buckets: prometheus.ExponentialBuckets(0.001, 3.1622776601683795, 7), + }), + + RowReadBytesHistogram: factory.NewHistogram( + prometheus.HistogramOpts{ + Namespace: "lightning", + Name: "row_read_bytes", + Help: "number of bytes being read out from data source", + Buckets: prometheus.ExponentialBuckets(1024, 2, 8), + }), + + RowEncodeSecondsHistogram: factory.NewHistogram( + prometheus.HistogramOpts{ + Namespace: "lightning", + Name: "row_encode_seconds", + Help: "time needed to encode a row", + Buckets: prometheus.ExponentialBuckets(0.001, 3.1622776601683795, 10), + }), + RowKVDeliverSecondsHistogram: factory.NewHistogram( + prometheus.HistogramOpts{ + Namespace: "lightning", + Name: "row_kv_deliver_seconds", + Help: "time needed to deliver kvs of a single row", + Buckets: prometheus.ExponentialBuckets(0.001, 3.1622776601683795, 10), + }), + + BlockDeliverSecondsHistogram: factory.NewHistogram( + prometheus.HistogramOpts{ + Namespace: "lightning", + Name: "block_deliver_seconds", + Help: "time needed to deliver a block", + Buckets: prometheus.ExponentialBuckets(0.001, 3.1622776601683795, 10), + }), + BlockDeliverBytesHistogram: factory.NewHistogramVec( + prometheus.HistogramOpts{ + Namespace: "lightning", + Name: "block_deliver_bytes", + Help: "number of bytes being sent out to importer", + Buckets: prometheus.ExponentialBuckets(512, 2, 10), + }, []string{"kind"}), + BlockDeliverKVPairsHistogram: factory.NewHistogramVec( + prometheus.HistogramOpts{ + Namespace: "lightning", + Name: "block_deliver_kv_pairs", + Help: "number of KV pairs being sent out to importer", + Buckets: prometheus.ExponentialBuckets(1, 2, 10), + }, []string{"kind"}), + ChecksumSecondsHistogram: factory.NewHistogram( + prometheus.HistogramOpts{ + Namespace: "lightning", + Name: "checksum_seconds", + Help: "time needed to complete the checksum stage", + Buckets: prometheus.ExponentialBuckets(1, 2.2679331552660544, 10), + }), + + LocalStorageUsageBytesGauge: factory.NewGaugeVec( + prometheus.GaugeOpts{ + Namespace: "lightning", + Name: "local_storage_usage_bytes", + Help: "disk/memory size currently occupied by intermediate files in local backend", + }, []string{"medium"}), + + ProgressGauge: factory.NewGaugeVec( + prometheus.GaugeOpts{ + Namespace: "lightning", + Name: "progress", + Help: "progress of lightning phase", + }, []string{"phase"}), + } +} + +// RegisterTo registers all metrics to the given registry. +func (m *Metrics) RegisterTo(r promutil.Registry) { + r.MustRegister( + m.ImporterEngineCounter, + m.IdleWorkersGauge, + m.KvEncoderCounter, + m.TableCounter, + m.ProcessedEngineCounter, + m.ChunkCounter, + m.BytesCounter, + m.ImportSecondsHistogram, + m.ChunkParserReadBlockSecondsHistogram, + m.ApplyWorkerSecondsHistogram, + m.RowReadSecondsHistogram, + m.RowReadBytesHistogram, + m.RowEncodeSecondsHistogram, + m.RowKVDeliverSecondsHistogram, + m.BlockDeliverSecondsHistogram, + m.BlockDeliverBytesHistogram, + m.BlockDeliverKVPairsHistogram, + m.ChecksumSecondsHistogram, + m.LocalStorageUsageBytesGauge, + m.ProgressGauge, ) -) +} -//nolint:gochecknoinits // TODO: refactor -func init() { - prometheus.MustRegister(IdleWorkersGauge) - prometheus.MustRegister(ImporterEngineCounter) - prometheus.MustRegister(KvEncoderCounter) - prometheus.MustRegister(TableCounter) - prometheus.MustRegister(ProcessedEngineCounter) - prometheus.MustRegister(ChunkCounter) - prometheus.MustRegister(BytesCounter) - prometheus.MustRegister(ImportSecondsHistogram) - prometheus.MustRegister(RowReadSecondsHistogram) - prometheus.MustRegister(RowReadBytesHistogram) - prometheus.MustRegister(RowEncodeSecondsHistogram) - prometheus.MustRegister(RowKVDeliverSecondsHistogram) - prometheus.MustRegister(BlockDeliverSecondsHistogram) - prometheus.MustRegister(BlockDeliverBytesHistogram) - prometheus.MustRegister(BlockDeliverKVPairsHistogram) - prometheus.MustRegister(ChecksumSecondsHistogram) - prometheus.MustRegister(ChunkParserReadBlockSecondsHistogram) - prometheus.MustRegister(ApplyWorkerSecondsHistogram) - prometheus.MustRegister(LocalStorageUsageBytesGauge) - prometheus.MustRegister(ProgressGauge) +// UnregisterFrom unregisters all metrics from the given registry. +func (m *Metrics) UnregisterFrom(r promutil.Registry) { + r.Unregister(m.ImporterEngineCounter) + r.Unregister(m.IdleWorkersGauge) + r.Unregister(m.KvEncoderCounter) + r.Unregister(m.TableCounter) + r.Unregister(m.ProcessedEngineCounter) + r.Unregister(m.ChunkCounter) + r.Unregister(m.BytesCounter) + r.Unregister(m.ImportSecondsHistogram) + r.Unregister(m.ChunkParserReadBlockSecondsHistogram) + r.Unregister(m.ApplyWorkerSecondsHistogram) + r.Unregister(m.RowReadSecondsHistogram) + r.Unregister(m.RowReadBytesHistogram) + r.Unregister(m.RowEncodeSecondsHistogram) + r.Unregister(m.RowKVDeliverSecondsHistogram) + r.Unregister(m.BlockDeliverSecondsHistogram) + r.Unregister(m.BlockDeliverBytesHistogram) + r.Unregister(m.BlockDeliverKVPairsHistogram) + r.Unregister(m.ChecksumSecondsHistogram) + r.Unregister(m.LocalStorageUsageBytesGauge) + r.Unregister(m.ProgressGauge) } -func RecordTableCount(status string, err error) { +func (m *Metrics) RecordTableCount(status string, err error) { var result string if err != nil { result = TableResultFailure } else { result = TableResultSuccess } - TableCounter.WithLabelValues(status, result).Inc() + m.TableCounter.WithLabelValues(status, result).Inc() } -func RecordEngineCount(status string, err error) { +func (m *Metrics) RecordEngineCount(status string, err error) { var result string if err != nil { result = TableResultFailure } else { result = TableResultSuccess } - ProcessedEngineCounter.WithLabelValues(status, result).Inc() + m.ProcessedEngineCounter.WithLabelValues(status, result).Inc() } // ReadCounter reports the current value of the counter. @@ -272,3 +321,18 @@ func ReadHistogramSum(histogram prometheus.Histogram) float64 { } return metric.Histogram.GetSampleSum() } + +type ctxKeyType struct{} + +var ctxKey ctxKeyType + +// NewContext returns a new context with the provided metrics. +func NewContext(ctx context.Context, metrics *Metrics) context.Context { + return context.WithValue(ctx, ctxKey, metrics) +} + +// FromContext returns the metrics stored in the context. +func FromContext(ctx context.Context) (*Metrics, bool) { + m, ok := ctx.Value(ctxKey).(*Metrics) + return m, ok +} diff --git a/br/pkg/lightning/metric/metric_test.go b/br/pkg/lightning/metric/metric_test.go index 65c81d8eaa8e8..47eb0f49b9406 100644 --- a/br/pkg/lightning/metric/metric_test.go +++ b/br/pkg/lightning/metric/metric_test.go @@ -15,11 +15,14 @@ package metric_test import ( + "context" "errors" "testing" "github.com/pingcap/tidb/br/pkg/lightning/metric" + "github.com/pingcap/tidb/util/promutil" "github.com/prometheus/client_golang/prometheus" + "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -38,12 +41,73 @@ func TestReadHistogramSum(t *testing.T) { } func TestRecordEngineCount(t *testing.T) { - metric.RecordEngineCount("table1", nil) - metric.RecordEngineCount("table1", errors.New("mock error")) - successCounter, err := metric.ProcessedEngineCounter.GetMetricWithLabelValues("table1", "success") + m := metric.NewMetrics(promutil.NewDefaultFactory()) + m.RecordEngineCount("table1", nil) + m.RecordEngineCount("table1", errors.New("mock error")) + successCounter, err := m.ProcessedEngineCounter.GetMetricWithLabelValues("table1", "success") require.NoError(t, err) require.Equal(t, 1.0, metric.ReadCounter(successCounter)) - failureCount, err := metric.ProcessedEngineCounter.GetMetricWithLabelValues("table1", "failure") + failureCount, err := m.ProcessedEngineCounter.GetMetricWithLabelValues("table1", "failure") require.NoError(t, err) require.Equal(t, 1.0, metric.ReadCounter(failureCount)) } + +func TestMetricsRegister(t *testing.T) { + m := metric.NewMetrics(promutil.NewDefaultFactory()) + r := prometheus.NewRegistry() + m.RegisterTo(r) + assert.True(t, r.Unregister(m.ImporterEngineCounter)) + assert.True(t, r.Unregister(m.IdleWorkersGauge)) + assert.True(t, r.Unregister(m.KvEncoderCounter)) + assert.True(t, r.Unregister(m.TableCounter)) + assert.True(t, r.Unregister(m.ProcessedEngineCounter)) + assert.True(t, r.Unregister(m.ChunkCounter)) + assert.True(t, r.Unregister(m.BytesCounter)) + assert.True(t, r.Unregister(m.ImportSecondsHistogram)) + assert.True(t, r.Unregister(m.ChunkParserReadBlockSecondsHistogram)) + assert.True(t, r.Unregister(m.ApplyWorkerSecondsHistogram)) + assert.True(t, r.Unregister(m.RowReadSecondsHistogram)) + assert.True(t, r.Unregister(m.RowReadBytesHistogram)) + assert.True(t, r.Unregister(m.RowEncodeSecondsHistogram)) + assert.True(t, r.Unregister(m.RowKVDeliverSecondsHistogram)) + assert.True(t, r.Unregister(m.BlockDeliverSecondsHistogram)) + assert.True(t, r.Unregister(m.BlockDeliverBytesHistogram)) + assert.True(t, r.Unregister(m.BlockDeliverKVPairsHistogram)) + assert.True(t, r.Unregister(m.ChecksumSecondsHistogram)) + assert.True(t, r.Unregister(m.LocalStorageUsageBytesGauge)) + assert.True(t, r.Unregister(m.ProgressGauge)) +} + +func TestMetricsUnregister(t *testing.T) { + m := metric.NewMetrics(promutil.NewDefaultFactory()) + r := prometheus.NewRegistry() + m.RegisterTo(r) + m.UnregisterFrom(r) + assert.False(t, r.Unregister(m.ImporterEngineCounter)) + assert.False(t, r.Unregister(m.IdleWorkersGauge)) + assert.False(t, r.Unregister(m.KvEncoderCounter)) + assert.False(t, r.Unregister(m.TableCounter)) + assert.False(t, r.Unregister(m.ProcessedEngineCounter)) + assert.False(t, r.Unregister(m.ChunkCounter)) + assert.False(t, r.Unregister(m.BytesCounter)) + assert.False(t, r.Unregister(m.ImportSecondsHistogram)) + assert.False(t, r.Unregister(m.ChunkParserReadBlockSecondsHistogram)) + assert.False(t, r.Unregister(m.ApplyWorkerSecondsHistogram)) + assert.False(t, r.Unregister(m.RowReadSecondsHistogram)) + assert.False(t, r.Unregister(m.RowReadBytesHistogram)) + assert.False(t, r.Unregister(m.RowEncodeSecondsHistogram)) + assert.False(t, r.Unregister(m.RowKVDeliverSecondsHistogram)) + assert.False(t, r.Unregister(m.BlockDeliverSecondsHistogram)) + assert.False(t, r.Unregister(m.BlockDeliverBytesHistogram)) + assert.False(t, r.Unregister(m.BlockDeliverKVPairsHistogram)) + assert.False(t, r.Unregister(m.ChecksumSecondsHistogram)) + assert.False(t, r.Unregister(m.LocalStorageUsageBytesGauge)) + assert.False(t, r.Unregister(m.ProgressGauge)) +} + +func TestContext(t *testing.T) { + ctx := metric.NewContext(context.Background(), metric.NewMetrics(promutil.NewDefaultFactory())) + m, ok := metric.FromContext(ctx) + require.True(t, ok) + require.NotNil(t, m) +} diff --git a/br/pkg/lightning/mydump/BUILD.bazel b/br/pkg/lightning/mydump/BUILD.bazel new file mode 100644 index 0000000000000..24d3545571ac2 --- /dev/null +++ b/br/pkg/lightning/mydump/BUILD.bazel @@ -0,0 +1,84 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "mydump", + srcs = [ + "bytes.go", + "charset_convertor.go", + "csv_parser.go", + "loader.go", + "parquet_parser.go", + "parser.go", + "parser_generated.go", + "reader.go", + "region.go", + "router.go", + ], + importpath = "github.com/pingcap/tidb/br/pkg/lightning/mydump", + visibility = ["//visibility:public"], + deps = [ + "//br/pkg/lightning/common", + "//br/pkg/lightning/config", + "//br/pkg/lightning/log", + "//br/pkg/lightning/metric", + "//br/pkg/lightning/worker", + "//br/pkg/storage", + "//parser/mysql", + "//types", + "//util/filter", + "//util/mathutil", + "//util/regexpr-router", + "//util/slice", + "//util/table-filter", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_xitongsys_parquet_go//parquet", + "@com_github_xitongsys_parquet_go//reader", + "@com_github_xitongsys_parquet_go//source", + "@org_golang_x_text//encoding", + "@org_golang_x_text//encoding/simplifiedchinese", + "@org_uber_go_zap//:zap", + "@org_uber_go_zap//zapcore", + ], +) + +go_test( + name = "mydump_test", + srcs = [ + "charset_convertor_test.go", + "csv_parser_test.go", + "loader_test.go", + "main_test.go", + "parquet_parser_test.go", + "parser_test.go", + "reader_test.go", + "region_test.go", + "router_test.go", + ], + data = glob([ + "csv/*", + "examples/*", + ]), + embed = [":mydump"], + deps = [ + "//br/pkg/lightning/config", + "//br/pkg/lightning/log", + "//br/pkg/lightning/worker", + "//br/pkg/mock/storage", + "//br/pkg/storage", + "//parser/mysql", + "//testkit/testsetup", + "//types", + "//util/filter", + "//util/table-filter", + "//util/table-router", + "@com_github_golang_mock//gomock", + "@com_github_pingcap_errors//:errors", + "@com_github_stretchr_testify//assert", + "@com_github_stretchr_testify//require", + "@com_github_xitongsys_parquet_go//writer", + "@com_github_xitongsys_parquet_go_source//local", + "@org_uber_go_goleak//:goleak", + "@org_uber_go_zap//:zap", + ], +) diff --git a/br/pkg/lightning/mydump/csv_parser.go b/br/pkg/lightning/mydump/csv_parser.go index bc10acd999343..5c538269ebdce 100644 --- a/br/pkg/lightning/mydump/csv_parser.go +++ b/br/pkg/lightning/mydump/csv_parser.go @@ -16,11 +16,14 @@ package mydump import ( "bytes" + "context" "io" "strings" "github.com/pingcap/errors" "github.com/pingcap/tidb/br/pkg/lightning/config" + "github.com/pingcap/tidb/br/pkg/lightning/log" + "github.com/pingcap/tidb/br/pkg/lightning/metric" "github.com/pingcap/tidb/br/pkg/lightning/worker" "github.com/pingcap/tidb/types" "github.com/pingcap/tidb/util/mathutil" @@ -73,6 +76,7 @@ type CSVParser struct { } func NewCSVParser( + ctx context.Context, cfg *config.CSVConfig, reader ReadSeekCloser, blockBufSize int64, @@ -118,9 +122,9 @@ func NewCSVParser( escFlavor = backslashEscapeFlavorMySQLWithNull } } - + metrics, _ := metric.FromContext(ctx) return &CSVParser{ - blockParser: makeBlockParser(reader, blockBufSize, ioWorkers), + blockParser: makeBlockParser(reader, blockBufSize, ioWorkers, metrics, log.FromContext(ctx)), cfg: cfg, charsetConvertor: charsetConvertor, comma: []byte(separator), diff --git a/br/pkg/lightning/mydump/csv_parser_test.go b/br/pkg/lightning/mydump/csv_parser_test.go index 8b712865cfed2..2696a6909c96c 100644 --- a/br/pkg/lightning/mydump/csv_parser_test.go +++ b/br/pkg/lightning/mydump/csv_parser_test.go @@ -41,7 +41,7 @@ func runTestCasesCSV(t *testing.T, cfg *config.MydumperRuntime, blockBufSize int for _, tc := range cases { charsetConvertor, err := mydump.NewCharsetConvertor(cfg.DataCharacterSet, cfg.DataInvalidCharReplace) assert.NoError(t, err) - parser, err := mydump.NewCSVParser(&cfg.CSV, mydump.NewStringReader(tc.input), blockBufSize, ioWorkers, false, charsetConvertor) + parser, err := mydump.NewCSVParser(context.Background(), &cfg.CSV, mydump.NewStringReader(tc.input), blockBufSize, ioWorkers, false, charsetConvertor) assert.NoError(t, err) for i, row := range tc.expected { comment := fmt.Sprintf("input = %q, row = %d", tc.input, i+1) @@ -58,7 +58,7 @@ func runFailingTestCasesCSV(t *testing.T, cfg *config.MydumperRuntime, blockBufS for _, tc := range cases { charsetConvertor, err := mydump.NewCharsetConvertor(cfg.DataCharacterSet, cfg.DataInvalidCharReplace) assert.NoError(t, err) - parser, err := mydump.NewCSVParser(&cfg.CSV, mydump.NewStringReader(tc), blockBufSize, ioWorkers, false, charsetConvertor) + parser, err := mydump.NewCSVParser(context.Background(), &cfg.CSV, mydump.NewStringReader(tc), blockBufSize, ioWorkers, false, charsetConvertor) require.NoError(t, err) e := parser.ReadRow() assert.Regexpf(t, "syntax error.*", e.Error(), "input = %q / %s", tc, errors.ErrorStack(e)) @@ -137,7 +137,7 @@ func TestTPCH(t *testing.T) { TrimLastSep: true, } - parser, err := mydump.NewCSVParser(&cfg, reader, int64(config.ReadBlockSize), ioWorkers, false, nil) + parser, err := mydump.NewCSVParser(context.Background(), &cfg, reader, int64(config.ReadBlockSize), ioWorkers, false, nil) require.NoError(t, err) require.Nil(t, parser.ReadRow()) require.Equal(t, mydump.Row{ @@ -215,7 +215,7 @@ func TestTPCHMultiBytes(t *testing.T) { } reader := mydump.NewStringReader(inputStr) - parser, err := mydump.NewCSVParser(&cfg, reader, int64(config.ReadBlockSize), ioWorkers, false, nil) + parser, err := mydump.NewCSVParser(context.Background(), &cfg, reader, int64(config.ReadBlockSize), ioWorkers, false, nil) require.NoError(t, err) for i, expectedParserPos := range allExpectedParserPos { @@ -237,7 +237,7 @@ func TestRFC4180(t *testing.T) { // example 1, trailing new lines - parser, err := mydump.NewCSVParser(&cfg, mydump.NewStringReader("aaa,bbb,ccc\nzzz,yyy,xxx\n"), int64(config.ReadBlockSize), ioWorkers, false, nil) + parser, err := mydump.NewCSVParser(context.Background(), &cfg, mydump.NewStringReader("aaa,bbb,ccc\nzzz,yyy,xxx\n"), int64(config.ReadBlockSize), ioWorkers, false, nil) require.NoError(t, err) require.Nil(t, parser.ReadRow()) @@ -268,7 +268,7 @@ func TestRFC4180(t *testing.T) { // example 2, no trailing new lines - parser, err = mydump.NewCSVParser(&cfg, mydump.NewStringReader("aaa,bbb,ccc\nzzz,yyy,xxx"), int64(config.ReadBlockSize), ioWorkers, false, nil) + parser, err = mydump.NewCSVParser(context.Background(), &cfg, mydump.NewStringReader("aaa,bbb,ccc\nzzz,yyy,xxx"), int64(config.ReadBlockSize), ioWorkers, false, nil) require.NoError(t, err) require.Nil(t, parser.ReadRow()) @@ -299,7 +299,7 @@ func TestRFC4180(t *testing.T) { // example 5, quoted fields - parser, err = mydump.NewCSVParser(&cfg, mydump.NewStringReader(`"aaa","bbb","ccc"`+"\nzzz,yyy,xxx"), int64(config.ReadBlockSize), ioWorkers, false, nil) + parser, err = mydump.NewCSVParser(context.Background(), &cfg, mydump.NewStringReader(`"aaa","bbb","ccc"`+"\nzzz,yyy,xxx"), int64(config.ReadBlockSize), ioWorkers, false, nil) require.NoError(t, err) require.Nil(t, parser.ReadRow()) @@ -330,7 +330,7 @@ func TestRFC4180(t *testing.T) { // example 6, line breaks within fields - parser, err = mydump.NewCSVParser(&cfg, mydump.NewStringReader(`"aaa","b + parser, err = mydump.NewCSVParser(context.Background(), &cfg, mydump.NewStringReader(`"aaa","b bb","ccc" zzz,yyy,xxx`), int64(config.ReadBlockSize), ioWorkers, false, nil) require.NoError(t, err) @@ -363,7 +363,7 @@ zzz,yyy,xxx`), int64(config.ReadBlockSize), ioWorkers, false, nil) // example 7, quote escaping - parser, err = mydump.NewCSVParser(&cfg, mydump.NewStringReader(`"aaa","b""bb","ccc"`), int64(config.ReadBlockSize), ioWorkers, false, nil) + parser, err = mydump.NewCSVParser(context.Background(), &cfg, mydump.NewStringReader(`"aaa","b""bb","ccc"`), int64(config.ReadBlockSize), ioWorkers, false, nil) require.NoError(t, err) require.Nil(t, parser.ReadRow()) @@ -390,7 +390,7 @@ func TestMySQL(t *testing.T) { Null: `\N`, } - parser, err := mydump.NewCSVParser(&cfg, mydump.NewStringReader(`"\"","\\","\?" + parser, err := mydump.NewCSVParser(context.Background(), &cfg, mydump.NewStringReader(`"\"","\\","\?" "\ ",\N,\\N`), int64(config.ReadBlockSize), ioWorkers, false, nil) require.NoError(t, err) @@ -459,7 +459,7 @@ func TestTSV(t *testing.T) { Header: true, } - parser, err := mydump.NewCSVParser(&cfg, mydump.NewStringReader(`a b c d e f + parser, err := mydump.NewCSVParser(context.Background(), &cfg, mydump.NewStringReader(`a b c d e f 0 foo 0000-00-00 0 foo 0000-00-00 0 abc def ghi bar 1999-12-31`), int64(config.ReadBlockSize), ioWorkers, true, nil) @@ -520,7 +520,7 @@ func TestCsvWithWhiteSpaceLine(t *testing.T) { Delimiter: `"`, } data := " \r\n\r\n0,,abc\r\n \r\n123,1999-12-31,test\r\n" - parser, err := mydump.NewCSVParser(&cfg, mydump.NewStringReader(data), int64(config.ReadBlockSize), ioWorkers, false, nil) + parser, err := mydump.NewCSVParser(context.Background(), &cfg, mydump.NewStringReader(data), int64(config.ReadBlockSize), ioWorkers, false, nil) require.NoError(t, err) require.Nil(t, parser.ReadRow()) require.Equal(t, mydump.Row{ @@ -548,7 +548,7 @@ func TestCsvWithWhiteSpaceLine(t *testing.T) { cfg.Header = true data = " \r\na,b,c\r\n0,,abc\r\n" - parser, err = mydump.NewCSVParser(&cfg, mydump.NewStringReader(data), int64(config.ReadBlockSize), ioWorkers, true, nil) + parser, err = mydump.NewCSVParser(context.Background(), &cfg, mydump.NewStringReader(data), int64(config.ReadBlockSize), ioWorkers, true, nil) require.NoError(t, err) require.Nil(t, parser.ReadRow()) require.Equal(t, []string{"a", "b", "c"}, parser.Columns()) @@ -572,7 +572,7 @@ func TestEmpty(t *testing.T) { Delimiter: `"`, } - parser, err := mydump.NewCSVParser(&cfg, mydump.NewStringReader(""), int64(config.ReadBlockSize), ioWorkers, false, nil) + parser, err := mydump.NewCSVParser(context.Background(), &cfg, mydump.NewStringReader(""), int64(config.ReadBlockSize), ioWorkers, false, nil) require.NoError(t, err) require.ErrorIs(t, errors.Cause(parser.ReadRow()), io.EOF) @@ -580,11 +580,11 @@ func TestEmpty(t *testing.T) { cfg.Header = true - parser, err = mydump.NewCSVParser(&cfg, mydump.NewStringReader(""), int64(config.ReadBlockSize), ioWorkers, true, nil) + parser, err = mydump.NewCSVParser(context.Background(), &cfg, mydump.NewStringReader(""), int64(config.ReadBlockSize), ioWorkers, true, nil) require.NoError(t, err) require.ErrorIs(t, errors.Cause(parser.ReadRow()), io.EOF) - parser, err = mydump.NewCSVParser(&cfg, mydump.NewStringReader("h\n"), int64(config.ReadBlockSize), ioWorkers, true, nil) + parser, err = mydump.NewCSVParser(context.Background(), &cfg, mydump.NewStringReader("h\n"), int64(config.ReadBlockSize), ioWorkers, true, nil) require.NoError(t, err) require.ErrorIs(t, errors.Cause(parser.ReadRow()), io.EOF) } @@ -594,7 +594,7 @@ func TestCRLF(t *testing.T) { Separator: ",", Delimiter: `"`, } - parser, err := mydump.NewCSVParser(&cfg, mydump.NewStringReader("a\rb\r\nc\n\n\n\nd"), int64(config.ReadBlockSize), ioWorkers, false, nil) + parser, err := mydump.NewCSVParser(context.Background(), &cfg, mydump.NewStringReader("a\rb\r\nc\n\n\n\nd"), int64(config.ReadBlockSize), ioWorkers, false, nil) require.NoError(t, err) require.Nil(t, parser.ReadRow()) @@ -634,7 +634,7 @@ func TestQuotedSeparator(t *testing.T) { Delimiter: `"`, } - parser, err := mydump.NewCSVParser(&cfg, mydump.NewStringReader(`",",','`), int64(config.ReadBlockSize), ioWorkers, false, nil) + parser, err := mydump.NewCSVParser(context.Background(), &cfg, mydump.NewStringReader(`",",','`), int64(config.ReadBlockSize), ioWorkers, false, nil) require.NoError(t, err) require.Nil(t, parser.ReadRow()) require.Equal(t, mydump.Row{ @@ -823,7 +823,7 @@ func TestReadError(t *testing.T) { Delimiter: `"`, } - parser, err := mydump.NewCSVParser(&cfg, &errorReader{}, int64(config.ReadBlockSize), ioWorkers, false, nil) + parser, err := mydump.NewCSVParser(context.Background(), &cfg, &errorReader{}, int64(config.ReadBlockSize), ioWorkers, false, nil) require.NoError(t, err) require.Regexp(t, "fake read error", parser.ReadRow().Error()) } @@ -838,7 +838,7 @@ func TestSyntaxErrorLog(t *testing.T) { } tc := mydump.NewStringReader("x'" + strings.Repeat("y", 50000)) - parser, err := mydump.NewCSVParser(&cfg.CSV, tc, 50000, ioWorkers, false, nil) + parser, err := mydump.NewCSVParser(context.Background(), &cfg.CSV, tc, 50000, ioWorkers, false, nil) require.NoError(t, err) logger, buffer := log.MakeTestLogger() parser.SetLogger(logger) @@ -861,6 +861,7 @@ func TestTrimLastSep(t *testing.T) { }, } parser, err := mydump.NewCSVParser( + context.Background(), &cfg.CSV, mydump.NewStringReader("123,456,789,\r\na,b,,\r\n,,,\r\n\"a\",\"\",\"\",\r\n"), int64(config.ReadBlockSize), @@ -982,7 +983,7 @@ func BenchmarkReadRowUsingMydumpCSVParser(b *testing.B) { }() cfg := config.CSVConfig{Separator: ","} - parser, err := mydump.NewCSVParser(&cfg, file, 65536, ioWorkers, false, nil) + parser, err := mydump.NewCSVParser(context.Background(), &cfg, file, 65536, ioWorkers, false, nil) require.NoError(b, err) parser.SetLogger(log.Logger{Logger: zap.NewNop()}) diff --git a/br/pkg/lightning/mydump/loader.go b/br/pkg/lightning/mydump/loader.go index 09ef6229c45bc..30f4f14c1464c 100644 --- a/br/pkg/lightning/mydump/loader.go +++ b/br/pkg/lightning/mydump/loader.go @@ -41,7 +41,7 @@ type MDDatabaseMeta struct { func (m *MDDatabaseMeta) GetSchema(ctx context.Context, store storage.ExternalStorage) string { schema, err := ExportStatement(ctx, store, m.SchemaFile, m.charSet) if err != nil { - log.L().Warn("failed to extract table schema", + log.FromContext(ctx).Warn("failed to extract table schema", zap.String("Path", m.SchemaFile.FileMeta.Path), log.ShortError(err), ) @@ -78,7 +78,7 @@ type SourceFileMeta struct { func (m *MDTableMeta) GetSchema(ctx context.Context, store storage.ExternalStorage) (string, error) { schema, err := ExportStatement(ctx, store, m.SchemaFile, m.charSet) if err != nil { - log.L().Error("failed to extract table schema", + log.FromContext(ctx).Error("failed to extract table schema", zap.String("Path", m.SchemaFile.FileMeta.Path), log.ShortError(err), ) @@ -157,7 +157,7 @@ func NewMyDumpLoaderWithStore(ctx context.Context, cfg *config.Config, store sto fileRouteRules = append(fileRouteRules, defaultFileRouteRules...) } - fileRouter, err := NewFileRouter(fileRouteRules) + fileRouter, err := NewFileRouter(fileRouteRules, log.FromContext(ctx)) if err != nil { return nil, common.ErrInvalidConfig.Wrap(err).GenWithStack("parse file routing rule failed") } @@ -300,7 +300,7 @@ func (s *mdLoaderSetup) listFiles(ctx context.Context, store storage.ExternalSto // meaning the file and chunk orders will be the same everytime it is called // (as long as the source is immutable). err := store.WalkDir(ctx, &storage.WalkOption{}, func(path string, size int64) error { - logger := log.With(zap.String("path", path)) + logger := log.FromContext(ctx).With(zap.String("path", path)) res, err := s.loader.fileRouter.Route(filepath.ToSlash(path)) if err != nil { diff --git a/br/pkg/lightning/mydump/parquet_parser.go b/br/pkg/lightning/mydump/parquet_parser.go index 789163c18bb01..50ae2d9d63960 100644 --- a/br/pkg/lightning/mydump/parquet_parser.go +++ b/br/pkg/lightning/mydump/parquet_parser.go @@ -208,7 +208,7 @@ func NewParquetParser( Reader: reader, columns: columns, columnMetas: columnMetas, - logger: log.L(), + logger: log.FromContext(ctx), }, nil } @@ -377,7 +377,7 @@ func (pp *ParquetParser) ReadRow() error { } for i := 0; i < length; i++ { pp.lastRow.Length += getDatumLen(v.Field(i)) - if err := setDatumValue(&pp.lastRow.Row[i], v.Field(i), pp.columnMetas[i]); err != nil { + if err := setDatumValue(&pp.lastRow.Row[i], v.Field(i), pp.columnMetas[i], pp.logger); err != nil { return err } } @@ -401,7 +401,7 @@ func getDatumLen(v reflect.Value) int { // convert a parquet value to Datum // // See: https://github.com/apache/parquet-format/blob/master/LogicalTypes.md -func setDatumValue(d *types.Datum, v reflect.Value, meta *parquet.SchemaElement) error { +func setDatumValue(d *types.Datum, v reflect.Value, meta *parquet.SchemaElement, logger log.Logger) error { switch v.Kind() { case reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: d.SetUint64(v.Uint()) @@ -417,10 +417,10 @@ func setDatumValue(d *types.Datum, v reflect.Value, meta *parquet.SchemaElement) if v.IsNil() { d.SetNull() } else { - return setDatumValue(d, v.Elem(), meta) + return setDatumValue(d, v.Elem(), meta, logger) } default: - log.L().Error("unknown value", zap.Stringer("kind", v.Kind()), + logger.Error("unknown value", zap.Stringer("kind", v.Kind()), zap.String("type", v.Type().Name()), zap.Reflect("value", v.Interface())) return errors.Errorf("unknown value: %v", v) } diff --git a/br/pkg/lightning/mydump/parser.go b/br/pkg/lightning/mydump/parser.go index fd0e7172b7aec..5949016dc74b0 100644 --- a/br/pkg/lightning/mydump/parser.go +++ b/br/pkg/lightning/mydump/parser.go @@ -16,6 +16,7 @@ package mydump import ( "bytes" + "context" "fmt" "io" "regexp" @@ -55,21 +56,29 @@ type blockParser struct { appendBuf *bytes.Buffer // the Logger associated with this parser for reporting failure - Logger log.Logger + Logger log.Logger + metrics *metric.Metrics } -func makeBlockParser(reader ReadSeekCloser, blockBufSize int64, ioWorkers *worker.Pool) blockParser { +func makeBlockParser( + reader ReadSeekCloser, + blockBufSize int64, + ioWorkers *worker.Pool, + metrics *metric.Metrics, + logger log.Logger, +) blockParser { return blockParser{ reader: MakePooledReader(reader, ioWorkers), blockBuf: make([]byte, blockBufSize*config.BufferSizeScale), remainBuf: &bytes.Buffer{}, appendBuf: &bytes.Buffer{}, - Logger: log.L(), + Logger: logger, rowPool: &sync.Pool{ New: func() interface{} { return make([]types.Datum, 0, 16) }, }, + metrics: metrics, } } @@ -132,6 +141,7 @@ type Parser interface { // NewChunkParser creates a new parser which can read chunks out of a file. func NewChunkParser( + ctx context.Context, sqlMode mysql.SQLMode, reader ReadSeekCloser, blockBufSize int64, @@ -141,9 +151,9 @@ func NewChunkParser( if sqlMode.HasNoBackslashEscapesMode() { escFlavor = backslashEscapeFlavorNone } - + metrics, _ := metric.FromContext(ctx) return &ChunkParser{ - blockParser: makeBlockParser(reader, blockBufSize, ioWorkers), + blockParser: makeBlockParser(reader, blockBufSize, ioWorkers, metrics, log.FromContext(ctx)), escFlavor: escFlavor, } } @@ -261,7 +271,9 @@ func (parser *blockParser) readBlock() error { parser.appendBuf.Write(parser.remainBuf.Bytes()) parser.appendBuf.Write(parser.blockBuf[:n]) parser.buf = parser.appendBuf.Bytes() - metric.ChunkParserReadBlockSecondsHistogram.Observe(time.Since(startTime).Seconds()) + if parser.metrics != nil { + parser.metrics.ChunkParserReadBlockSecondsHistogram.Observe(time.Since(startTime).Seconds()) + } return nil default: return errors.Trace(err) diff --git a/br/pkg/lightning/mydump/parser_test.go b/br/pkg/lightning/mydump/parser_test.go index 80dfcdc17c675..8ea22657fe0be 100644 --- a/br/pkg/lightning/mydump/parser_test.go +++ b/br/pkg/lightning/mydump/parser_test.go @@ -15,6 +15,7 @@ package mydump_test import ( + "context" "fmt" "io" "testing" @@ -30,7 +31,7 @@ import ( func runTestCases(t *testing.T, mode mysql.SQLMode, blockBufSize int64, cases []testCase) { for _, tc := range cases { - parser := mydump.NewChunkParser(mode, mydump.NewStringReader(tc.input), blockBufSize, ioWorkers) + parser := mydump.NewChunkParser(context.Background(), mode, mydump.NewStringReader(tc.input), blockBufSize, ioWorkers) for i, row := range tc.expected { e := parser.ReadRow() comment := fmt.Sprintf("input = %q, row = %d, err = %s", tc.input, i+1, errors.ErrorStack(e)) @@ -44,7 +45,7 @@ func runTestCases(t *testing.T, mode mysql.SQLMode, blockBufSize int64, cases [] func runFailingTestCases(t *testing.T, mode mysql.SQLMode, blockBufSize int64, cases []string) { for _, tc := range cases { - parser := mydump.NewChunkParser(mode, mydump.NewStringReader(tc), blockBufSize, ioWorkers) + parser := mydump.NewChunkParser(context.Background(), mode, mydump.NewStringReader(tc), blockBufSize, ioWorkers) assert.Regexpf(t, "syntax error.*", parser.ReadRow().Error(), "input = %q", tc) } } @@ -57,7 +58,7 @@ func TestReadRow(t *testing.T) { "insert another_table values (10,11e1,12, '(13)', '(', 14, ')');", ) - parser := mydump.NewChunkParser(mysql.ModeNone, reader, int64(config.ReadBlockSize), ioWorkers) + parser := mydump.NewChunkParser(context.Background(), mysql.ModeNone, reader, int64(config.ReadBlockSize), ioWorkers) require.NoError(t, parser.ReadRow()) require.Equal(t, mydump.Row{ @@ -133,7 +134,7 @@ func TestReadChunks(t *testing.T) { INSERT foo VALUES (29,30,31,32),(33,34,35,36); `) - parser := mydump.NewChunkParser(mysql.ModeNone, reader, int64(config.ReadBlockSize), ioWorkers) + parser := mydump.NewChunkParser(context.Background(), mysql.ModeNone, reader, int64(config.ReadBlockSize), ioWorkers) chunks, err := mydump.ReadChunks(parser, 32) require.NoError(t, err) @@ -179,7 +180,7 @@ func TestNestedRow(t *testing.T) { ("789",CONVERT("[]" USING UTF8MB4)); `) - parser := mydump.NewChunkParser(mysql.ModeNone, reader, int64(config.ReadBlockSize), ioWorkers) + parser := mydump.NewChunkParser(context.Background(), mysql.ModeNone, reader, int64(config.ReadBlockSize), ioWorkers) chunks, err := mydump.ReadChunks(parser, 96) require.NoError(t, err) @@ -412,7 +413,7 @@ func TestPseudoKeywords(t *testing.T) { ) VALUES (); `) - parser := mydump.NewChunkParser(mysql.ModeNone, reader, int64(config.ReadBlockSize), ioWorkers) + parser := mydump.NewChunkParser(context.Background(), mysql.ModeNone, reader, int64(config.ReadBlockSize), ioWorkers) require.NoError(t, parser.ReadRow()) require.Equal(t, []string{ "c", "c", diff --git a/br/pkg/lightning/mydump/reader.go b/br/pkg/lightning/mydump/reader.go index 7db6bf2bf8ed5..5ba5cf974ef30 100644 --- a/br/pkg/lightning/mydump/reader.go +++ b/br/pkg/lightning/mydump/reader.go @@ -107,7 +107,7 @@ func ExportStatement(ctx context.Context, store storage.ExternalStorage, sqlFile data, err = decodeCharacterSet(data, characterSet) if err != nil { - log.L().Error("cannot decode input file, please convert to target encoding manually", + log.FromContext(ctx).Error("cannot decode input file, please convert to target encoding manually", zap.String("encoding", characterSet), zap.String("Path", sqlFile.FileMeta.Path), ) diff --git a/br/pkg/lightning/mydump/region.go b/br/pkg/lightning/mydump/region.go index 640bb7b4e8791..04cc75e5567ae 100644 --- a/br/pkg/lightning/mydump/region.go +++ b/br/pkg/lightning/mydump/region.go @@ -22,6 +22,7 @@ import ( "time" "github.com/pingcap/errors" + "github.com/pingcap/failpoint" "github.com/pingcap/tidb/br/pkg/lightning/config" "github.com/pingcap/tidb/br/pkg/lightning/log" "github.com/pingcap/tidb/br/pkg/lightning/worker" @@ -169,7 +170,7 @@ func MakeTableRegions( break } if err != nil { - log.L().Error("make source file region error", zap.Error(err), zap.String("file_path", info.FileMeta.Path)) + log.FromContext(ctx).Error("make source file region error", zap.Error(err), zap.String("file_path", info.FileMeta.Path)) break } } @@ -239,7 +240,7 @@ func MakeTableRegions( } } - log.L().Info("makeTableRegions", zap.Int("filesCount", len(meta.DataFiles)), + log.FromContext(ctx).Info("makeTableRegions", zap.Int("filesCount", len(meta.DataFiles)), zap.Int64("MaxRegionSize", int64(cfg.Mydumper.MaxRegionSize)), zap.Int("RegionsCount", len(filesRegions)), zap.Float64("BatchSize", batchSize), @@ -271,6 +272,12 @@ func makeSourceFileRegion( if !isCsvFile { divisor += 2 } + sizePerRow, err := GetSampledAvgRowSize(&fi, cfg, ioWorkers, store) + if err == nil && sizePerRow != 0 { + log.FromContext(ctx).Warn("fail to sample file", zap.String("path", fi.FileMeta.Path), zap.Error(err)) + divisor = sizePerRow + } + log.FromContext(ctx).Debug("avg row size", zap.String("path", fi.FileMeta.Path), zap.Int64("size per row", sizePerRow)) // If a csv file is overlarge, we need to split it into multiple regions. // Note: We can only split a csv file whose format is strict. // We increase the check threshold by 1/10 of the `max-region-size` because the source file size dumped by tools @@ -292,9 +299,13 @@ func makeSourceFileRegion( RowIDMax: fi.FileMeta.FileSize / divisor, }, } + failpoint.Inject("MockInaccurateRowID", func() { + // only allocates 5 rows but contains 10 rows + tableRegion.Chunk.RowIDMax = 5 + }) if tableRegion.Size() > tableRegionSizeWarningThreshold { - log.L().Warn( + log.FromContext(ctx).Warn( "file is too big to be processed efficiently; we suggest splitting it at 256 MB each", zap.String("file", fi.FileMeta.Path), zap.Int64("size", dataFileSize)) @@ -302,6 +313,55 @@ func makeSourceFileRegion( return []*TableRegion{tableRegion}, []float64{float64(fi.FileMeta.FileSize)}, nil } +func GetSampledAvgRowSize( + fileInfo *FileInfo, + cfg *config.Config, + ioWorkers *worker.Pool, + store storage.ExternalStorage, +) (int64, error) { + ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) + defer cancel() + reader, err := store.Open(ctx, fileInfo.FileMeta.Path) + if err != nil { + return 0, err + } + var parser Parser + switch fileInfo.FileMeta.Type { + case SourceTypeCSV: + hasHeader := cfg.Mydumper.CSV.Header + charsetConvertor, err := NewCharsetConvertor(cfg.Mydumper.DataCharacterSet, cfg.Mydumper.DataInvalidCharReplace) + if err != nil { + return 0, err + } + parser, err = NewCSVParser(ctx, &cfg.Mydumper.CSV, reader, int64(cfg.Mydumper.ReadBlockSize), ioWorkers, hasHeader, charsetConvertor) + if err != nil { + return 0, err + } + case SourceTypeSQL: + parser = NewChunkParser(ctx, cfg.TiDB.SQLMode, reader, int64(cfg.Mydumper.ReadBlockSize), ioWorkers) + default: + return 0, errors.Errorf("source file %s is none of csv, sql, or parquet file", fileInfo.FileMeta.Path) + } + totalBytes := 0 + totalRows := 0 + defaultSampleRows := 10 // todo: may be configurable + for i := 0; i < defaultSampleRows; i++ { + err = parser.ReadRow() + if err != nil && errors.Cause(err) == io.EOF { + break + } else if err != nil { + return 0, err + } + totalBytes += parser.LastRow().Length + totalRows++ + } + if totalRows > 0 { + return int64(totalBytes) / int64(totalRows), nil + } else { + return 0, nil + } +} + // because parquet files can't seek efficiently, there is no benefit in split. // parquet file are column orient, so the offset is read line number func makeParquetFileRegion( @@ -365,7 +425,7 @@ func SplitLargeFile( if err != nil { return 0, nil, nil, err } - parser, err := NewCSVParser(&cfg.Mydumper.CSV, r, int64(cfg.Mydumper.ReadBlockSize), ioWorker, true, charsetConvertor) + parser, err := NewCSVParser(ctx, &cfg.Mydumper.CSV, r, int64(cfg.Mydumper.ReadBlockSize), ioWorker, true, charsetConvertor) if err != nil { return 0, nil, nil, err } @@ -381,6 +441,9 @@ func SplitLargeFile( } for { curRowsCnt := (endOffset - startOffset) / divisor + if curRowsCnt == 0 && endOffset != startOffset { + curRowsCnt = 1 + } rowIDMax := prevRowIdxMax + curRowsCnt if endOffset != dataFile.FileMeta.FileSize { r, err := store.Open(ctx, dataFile.FileMeta.Path) @@ -392,7 +455,7 @@ func SplitLargeFile( if err != nil { return 0, nil, nil, err } - parser, err := NewCSVParser(&cfg.Mydumper.CSV, r, int64(cfg.Mydumper.ReadBlockSize), ioWorker, false, charsetConvertor) + parser, err := NewCSVParser(ctx, &cfg.Mydumper.CSV, r, int64(cfg.Mydumper.ReadBlockSize), ioWorker, false, charsetConvertor) if err != nil { return 0, nil, nil, err } @@ -404,7 +467,7 @@ func SplitLargeFile( if !errors.ErrorEqual(err, io.EOF) { return 0, nil, nil, err } - log.L().Warn("file contains no terminator at end", + log.FromContext(ctx).Warn("file contains no terminator at end", zap.String("path", dataFile.FileMeta.Path), zap.String("terminator", cfg.Mydumper.CSV.Terminator)) pos = dataFile.FileMeta.FileSize diff --git a/br/pkg/lightning/mydump/region_test.go b/br/pkg/lightning/mydump/region_test.go index a1dbb9f290a69..37ba4e4028e39 100644 --- a/br/pkg/lightning/mydump/region_test.go +++ b/br/pkg/lightning/mydump/region_test.go @@ -40,6 +40,8 @@ import ( */ func TestTableRegion(t *testing.T) { cfg := newConfigWithSourceDir("./examples") + // specify ReadBlockSize because we need to sample files + cfg.Mydumper.ReadBlockSize = config.ReadBlockSize loader, _ := NewMyDumpLoader(context.Background(), cfg) dbMeta := loader.GetDatabases()[0] @@ -382,3 +384,90 @@ func TestSplitLargeFileOnlyOneChunk(t *testing.T) { require.Equal(t, columns, regions[i].Chunk.Columns) } } + +func TestSampleAndGetAvgRowSize(t *testing.T) { + // It's more difficult to estimate sizes of SQL files than csv files, + // because when reading the first row of them, parser may read other info (e.g. table name) + // so that make it hard to get good estimate, especially when files have few rows. + sqlFiles := []string{ + // 1. long table name, values: + // 1.1 short and even len + "INSERT INTO `test_db_mock_long.test_table_very_long_name` VALUES (1),(2);", + // 1.2 short and not even + "INSERT INTO `test_db_mock_long.test_table_very_long_name` VALUES (123452123,1234123125),(2,1);", + "INSERT INTO `test_db_mock_long.test_table_very_long_name` VALUES (2,1),(123452123,1234123125);", + // 1.3 long and even + "INSERT INTO `test_db_mock_long.test_table_very_long_name` VALUES (123452123,1234123125),(1234123125,12341231251);", + // 1.4 long but not even + "INSERT INTO `test_db_mock_long.test_table_very_long_name` VALUES ('abcdefghidgjla','lkjadsfasfdkjl'),('1111111','1');", + // 2. short table name, values: + // 2.1 short and even len + "INSERT INTO `a` VALUES (1),(2);", + // 2.2 short and not even + "INSERT INTO `a` VALUES (123452123,1234123125),(2,1);", + "INSERT INTO `a` VALUES (2,1),(123452123,1234123125);", + // 2.3 long and even + "INSERT INTO `a` VALUES (123452123,1234123125),(1234123125,12341231251);", + // 2.4 long but not even + "INSERT INTO `a` VALUES ('abcdefghidgjla','lkjadsfasfdkjl'),('1111111','1');", + } + + csvFiles := []string{ + // even and short + "a,b,c\r\n1,2,3\r\n4,5,6\r\n", + // not even but short + "a,b,c\r\n1112,1234,1923\r\n1,2,3", + // even and long + "a,b,c\r\n14712312,123122,1231233\r\n4456364,34525,423426\r\n", + // not even but long + "a,b,c\r\nsadlk;fja;lskdfj;alksdfj,sdlk;fjaksld;fja;l,qpoiwuepqou\r\n0,0,0\r\n", + } + testFunc := func(files []string, fileType SourceType) { + for _, file := range files { + dir := t.TempDir() + + var fileName string + if fileType == SourceTypeCSV { + fileName = "test.csv" + } else { + fileName = "test.sql" + } + filePath := filepath.Join(dir, fileName) + + content := []byte(file) + err := os.WriteFile(filePath, content, 0o644) + require.Nil(t, err) + dataFileInfo, err := os.Stat(filePath) + require.Nil(t, err) + fileSize := dataFileInfo.Size() + + cfg := newConfigWithSourceDir(dir) + loader, _ := NewMyDumpLoader(context.Background(), cfg) + ioWorkers := worker.NewPool(context.Background(), 1, "io") + + // specify ReadBlockSize because we need to sample files + cfg.Mydumper.ReadBlockSize = config.ReadBlockSize + fileInfo := FileInfo{ + FileMeta: SourceFileMeta{ + Path: fileName, + Type: fileType, + FileSize: fileSize, + }, + } + cfg.Mydumper.CSV = config.CSVConfig{ + Separator: ",", + Delimiter: `"`, + Header: true, + NotNull: false, + Null: `\N`, + BackslashEscape: true, + TrimLastSep: false, + } + size, err := GetSampledAvgRowSize(&fileInfo, cfg, ioWorkers, loader.GetStore()) + require.Nil(t, err) + require.GreaterOrEqual(t, fileSize/size, int64(2)) + } + } + testFunc(sqlFiles, SourceTypeSQL) + testFunc(csvFiles, SourceTypeCSV) +} diff --git a/br/pkg/lightning/mydump/router.go b/br/pkg/lightning/mydump/router.go index 223d82edb90e9..c3a6ff3aae161 100644 --- a/br/pkg/lightning/mydump/router.go +++ b/br/pkg/lightning/mydump/router.go @@ -142,11 +142,11 @@ func (c chainRouters) Route(path string) (*RouteResult, error) { return nil, nil } -func NewFileRouter(cfg []*config.FileRouteRule) (FileRouter, error) { +func NewFileRouter(cfg []*config.FileRouteRule, logger log.Logger) (FileRouter, error) { res := make([]FileRouter, 0, len(cfg)) p := regexRouterParser{} for _, c := range cfg { - rule, err := p.Parse(c) + rule, err := p.Parse(c, logger) if err != nil { return nil, err } @@ -180,7 +180,7 @@ func (r *RegexRouter) Route(path string) (*RouteResult, error) { type regexRouterParser struct{} -func (p regexRouterParser) Parse(r *config.FileRouteRule) (*RegexRouter, error) { +func (p regexRouterParser) Parse(r *config.FileRouteRule, logger log.Logger) (*RegexRouter, error) { rule := &RegexRouter{} if r.Path == "" && r.Pattern == "" { return nil, errors.New("`path` and `pattern` must not be both empty in [[mydumper.files]]") @@ -225,7 +225,7 @@ func (p regexRouterParser) Parse(r *config.FileRouteRule) (*RegexRouter, error) if unescape { val, err := url.PathUnescape(value) if err != nil { - log.L().Warn("unescape string failed, will be ignored", zap.String("value", value), + logger.Warn("unescape string failed, will be ignored", zap.String("value", value), zap.Error(err)) } else { value = val diff --git a/br/pkg/lightning/mydump/router_test.go b/br/pkg/lightning/mydump/router_test.go index 4df92b74f45c5..7401027cfbd36 100644 --- a/br/pkg/lightning/mydump/router_test.go +++ b/br/pkg/lightning/mydump/router_test.go @@ -5,6 +5,7 @@ import ( "testing" "github.com/pingcap/tidb/br/pkg/lightning/config" + "github.com/pingcap/tidb/br/pkg/lightning/log" "github.com/pingcap/tidb/util/filter" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -21,7 +22,7 @@ func TestRouteParser(t *testing.T) { {Pattern: `^(?:[^/]*/)*([^/.]+)\.([^./]+)(?:\.[0-9]+)?\.(csv|sql)`, Schema: "$1-schema", Table: "$1-table", Type: "$2"}, } for _, r := range rules { - _, err := NewFileRouter([]*config.FileRouteRule{r}) + _, err := NewFileRouter([]*config.FileRouteRule{r}, log.L()) assert.NoError(t, err) } @@ -32,7 +33,7 @@ func TestRouteParser(t *testing.T) { {Pattern: `^(?:[^/]*/)*([^/.]+)\.([^./]+)(?:\.[0-9]+)?\.(csv|sql)`, Schema: "$1", Table: "$2", Type: "$3", Key: "$4"}, } for _, r := range invalidRules { - _, err := NewFileRouter([]*config.FileRouteRule{r}) + _, err := NewFileRouter([]*config.FileRouteRule{r}, log.L()) assert.Error(t, err) } } @@ -40,31 +41,31 @@ func TestRouteParser(t *testing.T) { func TestInvalidRouteRule(t *testing.T) { rule := &config.FileRouteRule{} rules := []*config.FileRouteRule{rule} - _, err := NewFileRouter(rules) + _, err := NewFileRouter(rules, log.L()) require.Regexp(t, "`path` and `pattern` must not be both empty in \\[\\[mydumper.files\\]\\]", err.Error()) rule.Pattern = `^(?:[^/]*/)*([^/.]+)\.(?P[^./]+)(?:\.(?P[0-9]+))?\.(?Pcsv|sql)(?:\.(?P[A-Za-z0-9]+))?$` - _, err = NewFileRouter(rules) + _, err = NewFileRouter(rules, log.L()) require.Regexp(t, "field 'type' match pattern can't be empty", err.Error()) rule.Type = "$type" - _, err = NewFileRouter(rules) + _, err = NewFileRouter(rules, log.L()) require.Regexp(t, "field 'schema' match pattern can't be empty", err.Error()) rule.Schema = "$schema" - _, err = NewFileRouter(rules) + _, err = NewFileRouter(rules, log.L()) require.Regexp(t, "invalid named capture '\\$schema'", err.Error()) rule.Schema = "$1" - _, err = NewFileRouter(rules) + _, err = NewFileRouter(rules, log.L()) require.Regexp(t, "field 'table' match pattern can't be empty", err.Error()) rule.Table = "$table" - _, err = NewFileRouter(rules) + _, err = NewFileRouter(rules, log.L()) require.NoError(t, err) rule.Path = "/tmp/1.sql" - _, err = NewFileRouter(rules) + _, err = NewFileRouter(rules, log.L()) require.Regexp(t, "can't set both `path` and `pattern` field in \\[\\[mydumper.files\\]\\]", err.Error()) } @@ -73,7 +74,7 @@ func TestSingleRouteRule(t *testing.T) { {Pattern: `^(?:[^/]*/)*([^/.]+)\.(?P
[^./]+)(?:\.(?P[0-9]+))?\.(?Pcsv|sql)(?:\.(?P[A-Za-z0-9]+))?$`, Schema: "$1", Table: "$table", Type: "$type", Key: "$key", Compression: "$cp"}, } - r, err := NewFileRouter(rules) + r, err := NewFileRouter(rules, log.L()) require.NoError(t, err) inputOutputMap := map[string][]string{ @@ -107,7 +108,7 @@ func TestSingleRouteRule(t *testing.T) { } rule := &config.FileRouteRule{Pattern: `^(?:[^/]*/)*([^/.]+)\.(?P
[^./]+)(?:\.(?P[0-9]+))?\.(?P\w+)(?:\.(?P[A-Za-z0-9]+))?$`, Schema: "$1", Table: "$table", Type: "$type", Key: "$key", Compression: "$cp"} - r, err = NewFileRouter([]*config.FileRouteRule{rule}) + r, err = NewFileRouter([]*config.FileRouteRule{rule}, log.L()) require.NoError(t, err) require.NotNil(t, r) invalidMatchPaths := []string{ @@ -131,7 +132,7 @@ func TestMultiRouteRule(t *testing.T) { {Pattern: `^(?:[^/]*/)*(?P[^/.]+)\.(?P
[^./]+)(?:\.(?P[0-9]+))?\.(?Pcsv|sql)(?:\.(?P[A-Za-z0-9]+))?$`, Schema: "$schema", Table: "$table", Type: "$type", Key: "$key", Compression: "$cp"}, } - r, err := NewFileRouter(rules) + r, err := NewFileRouter(rules, log.L()) require.NoError(t, err) inputOutputMap := map[string][]string{ @@ -163,7 +164,7 @@ func TestMultiRouteRule(t *testing.T) { // add another rule that match same pattern with the third rule, the result should be no different p := &config.FileRouteRule{Pattern: `^(?P[^/.]+)\.(?P
[^./]+)(?:\.(?P[0-9]+))?\.(?Pcsv|sql)(?:\.(?P[A-Za-z0-9]+))?$`, Schema: "test_schema", Table: "test_table", Type: "$type", Key: "$key", Compression: "$cp"} rules = append(rules, p) - r, err = NewFileRouter(rules) + r, err = NewFileRouter(rules, log.L()) require.NoError(t, err) for path, fields := range inputOutputMap { res, err := r.Route(path) @@ -209,7 +210,7 @@ func TestRouteExpanding(t *testing.T) { for pat, value := range tablePatternResMap { rule.Table = pat - router, err := NewFileRouter([]*config.FileRouteRule{rule}) + router, err := NewFileRouter([]*config.FileRouteRule{rule}, log.L()) assert.NoError(t, err) res, err := router.Route(path) assert.NoError(t, err) @@ -220,7 +221,7 @@ func TestRouteExpanding(t *testing.T) { invalidPatterns := []string{"$1_$schema", "$schema_$table_name", "$6"} for _, pat := range invalidPatterns { rule.Table = pat - _, err := NewFileRouter([]*config.FileRouteRule{rule}) + _, err := NewFileRouter([]*config.FileRouteRule{rule}, log.L()) assert.Error(t, err) } } @@ -235,7 +236,7 @@ func TestRouteWithPath(t *testing.T) { Key: "$key", } r := *rule - router, err := NewFileRouter([]*config.FileRouteRule{&r}) + router, err := NewFileRouter([]*config.FileRouteRule{&r}, log.L()) require.NoError(t, err) res, err := router.Route(fileName) require.NoError(t, err) diff --git a/br/pkg/lightning/restore/BUILD.bazel b/br/pkg/lightning/restore/BUILD.bazel new file mode 100644 index 0000000000000..b8c674deee501 --- /dev/null +++ b/br/pkg/lightning/restore/BUILD.bazel @@ -0,0 +1,138 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "restore", + srcs = [ + "check_info.go", + "check_template.go", + "checksum.go", + "meta_manager.go", + "restore.go", + "table_restore.go", + "tidb.go", + ], + importpath = "github.com/pingcap/tidb/br/pkg/lightning/restore", + visibility = ["//visibility:public"], + deps = [ + "//br/pkg/checksum", + "//br/pkg/errors", + "//br/pkg/lightning/backend", + "//br/pkg/lightning/backend/kv", + "//br/pkg/lightning/backend/local", + "//br/pkg/lightning/backend/tidb", + "//br/pkg/lightning/checkpoints", + "//br/pkg/lightning/common", + "//br/pkg/lightning/config", + "//br/pkg/lightning/errormanager", + "//br/pkg/lightning/glue", + "//br/pkg/lightning/log", + "//br/pkg/lightning/metric", + "//br/pkg/lightning/mydump", + "//br/pkg/lightning/tikv", + "//br/pkg/lightning/verification", + "//br/pkg/lightning/web", + "//br/pkg/lightning/worker", + "//br/pkg/pdutil", + "//br/pkg/redact", + "//br/pkg/storage", + "//br/pkg/utils", + "//br/pkg/version", + "//br/pkg/version/build", + "//config", + "//kv", + "//meta/autoid", + "//parser", + "//parser/ast", + "//parser/format", + "//parser/model", + "//parser/mysql", + "//store/driver", + "//store/pdtypes", + "//table", + "//table/tables", + "//types", + "//util/collate", + "//util/mathutil", + "@com_github_coreos_go_semver//semver", + "@com_github_docker_go_units//:go-units", + "@com_github_google_uuid//:uuid", + "@com_github_jedib0t_go_pretty_v6//table", + "@com_github_jedib0t_go_pretty_v6//text", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_pingcap_kvproto//pkg/import_sstpb", + "@com_github_pingcap_kvproto//pkg/metapb", + "@com_github_pingcap_tipb//go-tipb", + "@com_github_tikv_client_go_v2//oracle", + "@com_github_tikv_pd_client//:client", + "@org_golang_x_exp//maps", + "@org_golang_x_sync//errgroup", + "@org_uber_go_atomic//:atomic", + "@org_uber_go_multierr//:multierr", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "restore_test", + srcs = [ + "check_info_test.go", + "checksum_test.go", + "chunk_restore_test.go", + "meta_manager_test.go", + "restore_schema_test.go", + "restore_test.go", + "table_restore_test.go", + "tidb_test.go", + ], + embed = [":restore"], + deps = [ + "//br/pkg/lightning/backend", + "//br/pkg/lightning/backend/kv", + "//br/pkg/lightning/backend/noop", + "//br/pkg/lightning/backend/tidb", + "//br/pkg/lightning/checkpoints", + "//br/pkg/lightning/common", + "//br/pkg/lightning/config", + "//br/pkg/lightning/errormanager", + "//br/pkg/lightning/glue", + "//br/pkg/lightning/log", + "//br/pkg/lightning/metric", + "//br/pkg/lightning/mydump", + "//br/pkg/lightning/verification", + "//br/pkg/lightning/web", + "//br/pkg/lightning/worker", + "//br/pkg/mock", + "//br/pkg/storage", + "//br/pkg/version/build", + "//ddl", + "//errno", + "//kv", + "//parser", + "//parser/ast", + "//parser/model", + "//parser/mysql", + "//store/pdtypes", + "//table/tables", + "//types", + "//util", + "//util/mock", + "//util/promutil", + "//util/table-filter", + "@com_github_data_dog_go_sqlmock//:go-sqlmock", + "@com_github_docker_go_units//:go-units", + "@com_github_go_sql_driver_mysql//:mysql", + "@com_github_golang_mock//gomock", + "@com_github_google_uuid//:uuid", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_pingcap_kvproto//pkg/metapb", + "@com_github_pingcap_tipb//go-tipb", + "@com_github_stretchr_testify//require", + "@com_github_stretchr_testify//suite", + "@com_github_tikv_client_go_v2//oracle", + "@com_github_tikv_pd_client//:client", + "@org_uber_go_atomic//:atomic", + "@org_uber_go_zap//:zap", + ], +) diff --git a/br/pkg/lightning/restore/check_info.go b/br/pkg/lightning/restore/check_info.go index 6d2504919ab99..442fae5a3e18b 100644 --- a/br/pkg/lightning/restore/check_info.go +++ b/br/pkg/lightning/restore/check_info.go @@ -402,7 +402,7 @@ func (rc *Controller) estimateSourceData(ctx context.Context) (int64, error) { bigTableCount := 0 tableCount := 0 unSortedTableCount := 0 - errMgr := errormanager.New(nil, rc.cfg) + errMgr := errormanager.New(nil, rc.cfg, log.FromContext(ctx)) for _, db := range rc.dbMetas { info, ok := rc.dbInfos[db.Name] if !ok { @@ -455,7 +455,7 @@ func (rc *Controller) estimateSourceData(ctx context.Context) (int64, error) { } // localResource checks the local node has enough resources for this import when local backend enabled; -func (rc *Controller) localResource(sourceSize int64) error { +func (rc *Controller) localResource(ctx context.Context, sourceSize int64) error { if rc.isSourceInLocal() { sourceDir := strings.TrimPrefix(rc.cfg.Mydumper.SourceDir, storage.LocalURIPrefix) same, err := common.SameDisk(sourceDir, rc.cfg.TikvImporter.SortedKVDir) @@ -489,7 +489,7 @@ func (rc *Controller) localResource(sourceSize int64) error { units.BytesSize(float64(sourceSize)), units.BytesSize(float64(localAvailable)), units.BytesSize(float64(localAvailable))) passed = false - log.L().Error(message) + log.FromContext(ctx).Error(message) default: message = fmt.Sprintf("local disk space may not enough to finish import, "+ "estimate sorted data size is %s, but local available is %s,"+ @@ -497,7 +497,7 @@ func (rc *Controller) localResource(sourceSize int64) error { units.BytesSize(float64(sourceSize)), units.BytesSize(float64(localAvailable)), units.BytesSize(float64(rc.cfg.TikvImporter.DiskQuota))) passed = true - log.L().Warn(message) + log.FromContext(ctx).Warn(message) } rc.checkTemplate.Collect(Critical, passed, message) return nil @@ -510,7 +510,7 @@ func (rc *Controller) CheckpointIsValid(ctx context.Context, tableInfo *mydump.M tableCheckPoint, err := rc.checkpointsDB.Get(ctx, uniqueName) if err != nil { // there is no checkpoint - log.L().Debug("no checkpoint detected", zap.String("table", uniqueName)) + log.FromContext(ctx).Debug("no checkpoint detected", zap.String("table", uniqueName)) return nil, true } // if checkpoint enable and not missing, we skip the check table empty progress. @@ -570,12 +570,12 @@ func (rc *Controller) CheckpointIsValid(ctx context.Context, tableInfo *mydump.M } } if len(columns) == 0 { - log.L().Debug("no valid checkpoint detected", zap.String("table", uniqueName)) + log.FromContext(ctx).Debug("no valid checkpoint detected", zap.String("table", uniqueName)) return nil, false } info := rc.dbInfos[tableInfo.DB].Tables[tableInfo.Name] if info != nil { - permFromTiDB, err := parseColumnPermutations(info.Core, columns, nil) + permFromTiDB, err := parseColumnPermutations(info.Core, columns, nil, log.FromContext(ctx)) if err != nil { msgs = append(msgs, fmt.Sprintf("failed to calculate columns %s, table %s's info has changed,"+ "consider remove this checkpoint, and start import again.", err.Error(), uniqueName)) @@ -615,12 +615,12 @@ func (rc *Controller) readFirstRow(ctx context.Context, dataFileMeta mydump.Sour if err != nil { return nil, nil, errors.Trace(err) } - parser, err = mydump.NewCSVParser(&rc.cfg.Mydumper.CSV, reader, blockBufSize, rc.ioWorkers, hasHeader, charsetConvertor) + parser, err = mydump.NewCSVParser(ctx, &rc.cfg.Mydumper.CSV, reader, blockBufSize, rc.ioWorkers, hasHeader, charsetConvertor) if err != nil { return nil, nil, errors.Trace(err) } case mydump.SourceTypeSQL: - parser = mydump.NewChunkParser(rc.cfg.TiDB.SQLMode, reader, blockBufSize, rc.ioWorkers) + parser = mydump.NewChunkParser(ctx, rc.cfg.TiDB.SQLMode, reader, blockBufSize, rc.ioWorkers) case mydump.SourceTypeParquet: parser, err = mydump.NewParquetParser(ctx, rc.store, reader, dataFileMeta.Path) if err != nil { @@ -641,7 +641,7 @@ func (rc *Controller) readFirstRow(ctx context.Context, dataFileMeta mydump.Sour // SchemaIsValid checks the import file and cluster schema is match. func (rc *Controller) SchemaIsValid(ctx context.Context, tableInfo *mydump.MDTableMeta) ([]string, error) { if len(tableInfo.DataFiles) == 0 { - log.L().Info("no data files detected", zap.String("db", tableInfo.DB), zap.String("table", tableInfo.Name)) + log.FromContext(ctx).Info("no data files detected", zap.String("db", tableInfo.DB), zap.String("table", tableInfo.Name)) return nil, nil } @@ -673,7 +673,7 @@ func (rc *Controller) SchemaIsValid(ctx context.Context, tableInfo *mydump.MDTab // only check the first file of this table. dataFile := tableInfo.DataFiles[0] - log.L().Info("datafile to check", zap.String("db", tableInfo.DB), + log.FromContext(ctx).Info("datafile to check", zap.String("db", tableInfo.DB), zap.String("table", tableInfo.Name), zap.String("path", dataFile.FileMeta.Path)) // get columns name from data file. dataFileMeta := dataFile.FileMeta @@ -687,7 +687,7 @@ func (rc *Controller) SchemaIsValid(ctx context.Context, tableInfo *mydump.MDTab return nil, errors.Trace(err) } if colsFromDataFile == nil && len(row) == 0 { - log.L().Info("file contains no data, skip checking against schema validity", zap.String("path", dataFileMeta.Path)) + log.FromContext(ctx).Info("file contains no data, skip checking against schema validity", zap.String("path", dataFileMeta.Path)) return msgs, nil } @@ -898,7 +898,7 @@ outer: level := Warn if hasUniqueField && len(rows) > 1 { level = Critical - } else if !checkFieldCompatibility(tableInfo.Core, ignoreColsSet, rows[0]) { + } else if !checkFieldCompatibility(tableInfo.Core, ignoreColsSet, rows[0], log.FromContext(ctx)) { // if there are only 1 csv file or there is not unique key, try to check if all columns are compatible with string value level = Critical } @@ -907,10 +907,15 @@ outer: return nil } -func checkFieldCompatibility(tbl *model.TableInfo, ignoreCols map[string]struct{}, values []types.Datum) bool { +func checkFieldCompatibility( + tbl *model.TableInfo, + ignoreCols map[string]struct{}, + values []types.Datum, + logger log.Logger, +) bool { se := kv.NewSession(&kv.SessionOptions{ SQLMode: mysql.ModeStrictTransTables, - }) + }, logger) for i, col := range tbl.Columns { // do not check ignored columns if _, ok := ignoreCols[col.Name.L]; ok { @@ -921,7 +926,7 @@ func checkFieldCompatibility(tbl *model.TableInfo, ignoreCols map[string]struct{ } _, err := table.CastValue(se, values[i], col, true, false) if err != nil { - log.L().Error("field value is not consistent with column type", zap.String("value", values[i].GetString()), + logger.Error("field value is not consistent with column type", zap.String("value", values[i].GetString()), zap.Any("column_info", col), zap.Error(err)) return false } @@ -956,7 +961,7 @@ func (rc *Controller) sampleDataFromTable( if err != nil { return errors.Trace(err) } - kvEncoder, err := rc.backend.NewEncoder(tbl, &kv.SessionOptions{ + kvEncoder, err := rc.backend.NewEncoder(ctx, tbl, &kv.SessionOptions{ SQLMode: rc.cfg.TiDB.SQLMode, Timestamp: 0, SysVars: rc.sysVars, @@ -976,12 +981,12 @@ func (rc *Controller) sampleDataFromTable( if err != nil { return errors.Trace(err) } - parser, err = mydump.NewCSVParser(&rc.cfg.Mydumper.CSV, reader, blockBufSize, rc.ioWorkers, hasHeader, charsetConvertor) + parser, err = mydump.NewCSVParser(ctx, &rc.cfg.Mydumper.CSV, reader, blockBufSize, rc.ioWorkers, hasHeader, charsetConvertor) if err != nil { return errors.Trace(err) } case mydump.SourceTypeSQL: - parser = mydump.NewChunkParser(rc.cfg.TiDB.SQLMode, reader, blockBufSize, rc.ioWorkers) + parser = mydump.NewChunkParser(ctx, rc.cfg.TiDB.SQLMode, reader, blockBufSize, rc.ioWorkers) case mydump.SourceTypeParquet: parser, err = mydump.NewParquetParser(ctx, rc.store, reader, sampleFile.Path) if err != nil { @@ -991,7 +996,7 @@ func (rc *Controller) sampleDataFromTable( panic(fmt.Sprintf("file '%s' with unknown source type '%s'", sampleFile.Path, sampleFile.Type.String())) } defer parser.Close() - logTask := log.With(zap.String("table", tableMeta.Name)).Begin(zap.InfoLevel, "sample file") + logTask := log.FromContext(ctx).With(zap.String("table", tableMeta.Name)).Begin(zap.InfoLevel, "sample file") igCols, err := rc.cfg.Mydumper.IgnoreColumns.GetIgnoreColumns(dbName, tableMeta.Name, rc.cfg.Mydumper.CaseSensitive) if err != nil { return errors.Trace(err) @@ -1017,7 +1022,11 @@ outloop: case nil: if !initializedColumns { if len(columnPermutation) == 0 { - columnPermutation, err = createColumnPermutation(columnNames, igCols.ColumnsMap(), tableInfo) + columnPermutation, err = createColumnPermutation( + columnNames, + igCols.ColumnsMap(), + tableInfo, + log.FromContext(ctx)) if err != nil { return errors.Trace(err) } @@ -1036,7 +1045,7 @@ outloop: var dataChecksum, indexChecksum verification.KVChecksum kvs, encodeErr := kvEncoder.Encode(logTask.Logger, lastRow.Row, lastRow.RowID, columnPermutation, sampleFile.Path, offset) if encodeErr != nil { - encodeErr = errMgr.RecordTypeError(ctx, log.L(), tableInfo.Name.O, sampleFile.Path, offset, + encodeErr = errMgr.RecordTypeError(ctx, log.FromContext(ctx), tableInfo.Name.O, sampleFile.Path, offset, "" /* use a empty string here because we don't actually record */, encodeErr) if encodeErr != nil { return errors.Annotatef(encodeErr, "in file at offset %d", offset) @@ -1075,7 +1084,7 @@ outloop: if rowSize > 0 && kvSize > rowSize { tableMeta.IndexRatio = float64(kvSize) / float64(rowSize) } - log.L().Info("Sample source data", zap.String("table", tableMeta.Name), zap.Float64("IndexRatio", tableMeta.IndexRatio), zap.Bool("IsSourceOrder", tableMeta.IsRowOrdered)) + log.FromContext(ctx).Info("Sample source data", zap.String("table", tableMeta.Name), zap.Float64("IndexRatio", tableMeta.IndexRatio), zap.Bool("IsSourceOrder", tableMeta.IsRowOrdered)) return nil } @@ -1159,7 +1168,7 @@ func tableContainsData(ctx context.Context, db utils.DBExecutor, tableName strin query := "select 1 from " + tableName + " limit 1" exec := common.SQLWithRetry{ DB: db, - Logger: log.L(), + Logger: log.FromContext(ctx), } var dump int err := exec.QueryRow(ctx, "check table empty", query, &dump) diff --git a/br/pkg/lightning/restore/check_info_test.go b/br/pkg/lightning/restore/check_info_test.go index 42772b64ea6ab..abdfcf232f0a9 100644 --- a/br/pkg/lightning/restore/check_info_test.go +++ b/br/pkg/lightning/restore/check_info_test.go @@ -583,9 +583,11 @@ func TestLocalResource(t *testing.T) { ioWorkers: worker.NewPool(context.Background(), 1, "io"), } + ctx := context.Background() + // 1. source-size is smaller than disk-size, won't trigger error information rc.checkTemplate = NewSimpleTemplate() - err = rc.localResource(1000) + err = rc.localResource(ctx, 1000) require.NoError(t, err) tmpl := rc.checkTemplate.(*SimpleTemplate) require.Equal(t, 1, tmpl.warnFailedCount) @@ -594,7 +596,7 @@ func TestLocalResource(t *testing.T) { // 2. source-size is bigger than disk-size, with default disk-quota will trigger a critical error rc.checkTemplate = NewSimpleTemplate() - err = rc.localResource(4096) + err = rc.localResource(ctx, 4096) require.NoError(t, err) tmpl = rc.checkTemplate.(*SimpleTemplate) require.Equal(t, 1, tmpl.warnFailedCount) @@ -604,7 +606,7 @@ func TestLocalResource(t *testing.T) { // 3. source-size is bigger than disk-size, with a vaild disk-quota will trigger a warning rc.checkTemplate = NewSimpleTemplate() rc.cfg.TikvImporter.DiskQuota = config.ByteSize(1024) - err = rc.localResource(4096) + err = rc.localResource(ctx, 4096) require.NoError(t, err) tmpl = rc.checkTemplate.(*SimpleTemplate) require.Equal(t, 1, tmpl.warnFailedCount) diff --git a/br/pkg/lightning/restore/checksum.go b/br/pkg/lightning/restore/checksum.go index e3719f2f7e413..20fc77462c196 100644 --- a/br/pkg/lightning/restore/checksum.go +++ b/br/pkg/lightning/restore/checksum.go @@ -138,7 +138,7 @@ func (e *tidbChecksumExecutor) Checksum(ctx context.Context, tableInfo *checkpoi tableName := common.UniqueTable(tableInfo.DB, tableInfo.Name) - task := log.With(zap.String("table", tableName)).Begin(zap.InfoLevel, "remote checksum") + task := log.FromContext(ctx).With(zap.String("table", tableName)).Begin(zap.InfoLevel, "remote checksum") // ADMIN CHECKSUM TABLE
,
example. // mysql> admin checksum table test.t; @@ -153,7 +153,9 @@ func (e *tidbChecksumExecutor) Checksum(ctx context.Context, tableInfo *checkpoi "ADMIN CHECKSUM TABLE "+tableName, &cs.Schema, &cs.Table, &cs.Checksum, &cs.TotalKVs, &cs.TotalBytes, ) dur := task.End(zap.ErrorLevel, err) - metric.ChecksumSecondsHistogram.Observe(dur.Seconds()) + if m, ok := metric.FromContext(ctx); ok { + m.ChecksumSecondsHistogram.Observe(dur.Seconds()) + } if err != nil { return nil, errors.Trace(err) } @@ -169,11 +171,13 @@ func DoChecksum(ctx context.Context, table *checkpoints.TidbTableInfo) (*RemoteC return nil, errors.New("No gcLifeTimeManager found in context, check context initialization") } - task := log.With(zap.String("table", table.Name)).Begin(zap.InfoLevel, "remote checksum") + task := log.FromContext(ctx).With(zap.String("table", table.Name)).Begin(zap.InfoLevel, "remote checksum") cs, err := manager.Checksum(ctx, table) dur := task.End(zap.ErrorLevel, err) - metric.ChecksumSecondsHistogram.Observe(dur.Seconds()) + if m, ok := metric.FromContext(ctx); ok { + m.ChecksumSecondsHistogram.Observe(dur.Seconds()) + } return cs, err } @@ -228,7 +232,7 @@ func (m *gcLifeTimeManager) removeOneJob(ctx context.Context, db *sql.DB) { "UPDATE mysql.tidb SET VARIABLE_VALUE = '%s' WHERE VARIABLE_NAME = 'tikv_gc_life_time'", m.oriGCLifeTime, ) - log.L().Warn("revert GC lifetime failed, please reset the GC lifetime manually after Lightning completed", + log.FromContext(ctx).Warn("revert GC lifetime failed, please reset the GC lifetime manually after Lightning completed", zap.String("query", query), log.ShortError(err), ) @@ -305,7 +309,7 @@ func (e *tikvChecksumManager) checksumDB(ctx context.Context, tableInfo *checkpo }, nil } - log.L().Warn("remote checksum failed", zap.String("db", tableInfo.DB), + log.FromContext(ctx).Warn("remote checksum failed", zap.String("db", tableInfo.DB), zap.String("table", tableInfo.Name), zap.Error(err), zap.Int("concurrency", distSQLScanConcurrency), zap.Int("retry", i)) @@ -438,7 +442,7 @@ func (m *gcTTLManager) updateGCTTL(ctx context.Context) error { } func (m *gcTTLManager) doUpdateGCTTL(ctx context.Context, ts uint64) error { - log.L().Debug("update PD safePoint limit with TTL", + log.FromContext(ctx).Debug("update PD safePoint limit with TTL", zap.Uint64("currnet_ts", ts)) var err error if ts > 0 { @@ -456,7 +460,7 @@ func (m *gcTTLManager) start(ctx context.Context) { updateGCTTL := func() { if err := m.updateGCTTL(ctx); err != nil { - log.L().Warn("failed to update service safe point, checksum may fail if gc triggered", zap.Error(err)) + log.FromContext(ctx).Warn("failed to update service safe point, checksum may fail if gc triggered", zap.Error(err)) } } @@ -467,7 +471,7 @@ func (m *gcTTLManager) start(ctx context.Context) { for { select { case <-ctx.Done(): - log.L().Info("service safe point keeper exited") + log.FromContext(ctx).Info("service safe point keeper exited") return case <-updateTick.C: updateGCTTL() diff --git a/br/pkg/lightning/restore/chunk_restore_test.go b/br/pkg/lightning/restore/chunk_restore_test.go index 005c3b4ddbafd..59d083d85561c 100644 --- a/br/pkg/lightning/restore/chunk_restore_test.go +++ b/br/pkg/lightning/restore/chunk_restore_test.go @@ -73,7 +73,7 @@ func (s *chunkRestoreSuite) SetupTest() { } var err error - s.cr, err = newChunkRestore(context.Background(), 1, s.cfg, &chunk, w, s.store, nil) + s.cr, err = newChunkRestore(context.Background(), 1, s.cfg, &chunk, w, s.store, nil, nil) require.NoError(s.T(), err) } @@ -253,7 +253,7 @@ func (s *chunkRestoreSuite) TestEncodeLoop() { kvEncoder, err := kv.NewTableKVEncoder(s.tr.encTable, &kv.SessionOptions{ SQLMode: s.cfg.TiDB.SQLMode, Timestamp: 1234567895, - }) + }, nil, log.L()) require.NoError(s.T(), err) cfg := config.NewConfig() rc := &Controller{pauser: DeliverPauser, cfg: cfg} @@ -280,7 +280,7 @@ func (s *chunkRestoreSuite) TestEncodeLoopCanceled() { kvEncoder, err := kv.NewTableKVEncoder(s.tr.encTable, &kv.SessionOptions{ SQLMode: s.cfg.TiDB.SQLMode, Timestamp: 1234567896, - }) + }, nil, log.L()) require.NoError(s.T(), err) go cancel() @@ -298,7 +298,7 @@ func (s *chunkRestoreSuite) TestEncodeLoopForcedError() { kvEncoder, err := kv.NewTableKVEncoder(s.tr.encTable, &kv.SessionOptions{ SQLMode: s.cfg.TiDB.SQLMode, Timestamp: 1234567897, - }) + }, nil, log.L()) require.NoError(s.T(), err) // close the chunk so reading it will result in the "file already closed" error. @@ -318,7 +318,7 @@ func (s *chunkRestoreSuite) TestEncodeLoopDeliverLimit() { kvEncoder, err := kv.NewTableKVEncoder(s.tr.encTable, &kv.SessionOptions{ SQLMode: s.cfg.TiDB.SQLMode, Timestamp: 1234567898, - }) + }, nil, log.L()) require.NoError(s.T(), err) dir := s.T().TempDir() @@ -334,7 +334,7 @@ func (s *chunkRestoreSuite) TestEncodeLoopDeliverLimit() { reader, err := store.Open(ctx, fileName) require.NoError(s.T(), err) w := worker.NewPool(ctx, 1, "io") - p, err := mydump.NewCSVParser(&cfg.Mydumper.CSV, reader, 111, w, false, nil) + p, err := mydump.NewCSVParser(ctx, &cfg.Mydumper.CSV, reader, 111, w, false, nil) require.NoError(s.T(), err) s.cr.parser = p @@ -375,7 +375,7 @@ func (s *chunkRestoreSuite) TestEncodeLoopDeliverErrored() { kvEncoder, err := kv.NewTableKVEncoder(s.tr.encTable, &kv.SessionOptions{ SQLMode: s.cfg.TiDB.SQLMode, Timestamp: 1234567898, - }) + }, nil, log.L()) require.NoError(s.T(), err) go func() { @@ -402,13 +402,14 @@ func (s *chunkRestoreSuite) TestEncodeLoopColumnsMismatch() { ctx := context.Background() cfg := config.NewConfig() - errorMgr := errormanager.New(nil, cfg) + logger := log.L() + errorMgr := errormanager.New(nil, cfg, logger) rc := &Controller{pauser: DeliverPauser, cfg: cfg, errorMgr: errorMgr} reader, err := store.Open(ctx, fileName) require.NoError(s.T(), err) w := worker.NewPool(ctx, 5, "io") - p, err := mydump.NewCSVParser(&cfg.Mydumper.CSV, reader, 111, w, false, nil) + p, err := mydump.NewCSVParser(ctx, &cfg.Mydumper.CSV, reader, 111, w, false, nil) require.NoError(s.T(), err) err = s.cr.parser.Close() @@ -417,7 +418,8 @@ func (s *chunkRestoreSuite) TestEncodeLoopColumnsMismatch() { kvsCh := make(chan []deliveredKVs, 2) deliverCompleteCh := make(chan deliverResult) - kvEncoder, err := tidb.NewTiDBBackend(nil, config.ReplaceOnDup, errorMgr).NewEncoder( + kvEncoder, err := tidb.NewTiDBBackend(ctx, nil, config.ReplaceOnDup, errorMgr).NewEncoder( + ctx, s.tr.encTable, &kv.SessionOptions{ SQLMode: s.cfg.TiDB.SQLMode, @@ -502,7 +504,7 @@ func (s *chunkRestoreSuite) testEncodeLoopIgnoreColumnsCSV( reader, err := store.Open(ctx, fileName) require.NoError(s.T(), err) w := worker.NewPool(ctx, 5, "io") - p, err := mydump.NewCSVParser(&cfg.Mydumper.CSV, reader, 111, w, cfg.Mydumper.CSV.Header, nil) + p, err := mydump.NewCSVParser(ctx, &cfg.Mydumper.CSV, reader, 111, w, cfg.Mydumper.CSV.Header, nil) require.NoError(s.T(), err) err = s.cr.parser.Close() @@ -511,7 +513,13 @@ func (s *chunkRestoreSuite) testEncodeLoopIgnoreColumnsCSV( kvsCh := make(chan []deliveredKVs, 2) deliverCompleteCh := make(chan deliverResult) - kvEncoder, err := tidb.NewTiDBBackend(nil, config.ReplaceOnDup, errormanager.New(nil, config.NewConfig())).NewEncoder( + kvEncoder, err := tidb.NewTiDBBackend( + ctx, + nil, + config.ReplaceOnDup, + errormanager.New(nil, config.NewConfig(), log.L()), + ).NewEncoder( + ctx, s.tr.encTable, &kv.SessionOptions{ SQLMode: s.cfg.TiDB.SQLMode, @@ -558,7 +566,7 @@ func (s *chunkRestoreSuite) TestRestore() { mockBackend.EXPECT().MakeEmptyRows().Return(kv.MakeRowsFromKvPairs(nil)).Times(1) mockWriter := mock.NewMockEngineWriter(controller) mockBackend.EXPECT().LocalWriter(ctx, gomock.Any(), gomock.Any()).Return(mockWriter, nil).AnyTimes() - mockBackend.EXPECT().NewEncoder(gomock.Any(), gomock.Any()).Return(mockEncoder{}, nil).Times(1) + mockBackend.EXPECT().NewEncoder(gomock.Any(), gomock.Any(), gomock.Any()).Return(mockEncoder{}, nil).Times(1) mockWriter.EXPECT().IsSynced().Return(true).AnyTimes() mockWriter.EXPECT().AppendRows(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).Return(nil).AnyTimes() diff --git a/br/pkg/lightning/restore/meta_manager.go b/br/pkg/lightning/restore/meta_manager.go index 8eace8c5f979d..0af04e69feedb 100644 --- a/br/pkg/lightning/restore/meta_manager.go +++ b/br/pkg/lightning/restore/meta_manager.go @@ -37,7 +37,7 @@ type dbMetaMgrBuilder struct { func (b *dbMetaMgrBuilder) Init(ctx context.Context) error { exec := common.SQLWithRetry{ DB: b.db, - Logger: log.L(), + Logger: log.FromContext(ctx), HideQueryLog: redact.NeedRedact(), } metaDBSQL := fmt.Sprintf("CREATE DATABASE IF NOT EXISTS %s", common.EscapeIdentifier(b.schema)) @@ -78,6 +78,11 @@ func (b *dbMetaMgrBuilder) TableMetaMgr(tr *TableRestore) tableMetaMgr { type tableMetaMgr interface { InitTableMeta(ctx context.Context) error AllocTableRowIDs(ctx context.Context, rawRowIDMax int64) (*verify.KVChecksum, int64, error) + // ReallocTableRowIDs reallocates the row IDs of a table. + // It returns new rowIDBase and maxRowID or any error it encounters. + // Note that noopTableMetaMgr has a noop implementation of this function. + // If maxRowID is 0, caller should maintain rowIDBase and maxRowID itself. + ReallocTableRowIDs(ctx context.Context, newRowIDCount int64) (int64, int64, error) UpdateTableStatus(ctx context.Context, status metaStatus) error UpdateTableBaseChecksum(ctx context.Context, checksum *verify.KVChecksum) error CheckAndUpdateLocalChecksum(ctx context.Context, checksum *verify.KVChecksum, hasLocalDupes bool) ( @@ -160,6 +165,51 @@ func parseMetaStatus(s string) (metaStatus, error) { } } +func (m *dbTableMetaMgr) ReallocTableRowIDs(ctx context.Context, newRowIDCount int64) (int64, int64, error) { + conn, err := m.session.Conn(ctx) + if err != nil { + return 0, 0, errors.Trace(err) + } + defer conn.Close() + exec := &common.SQLWithRetry{ + DB: m.session, + Logger: m.tr.logger, + } + err = exec.Exec(ctx, "enable pessimistic transaction", "SET SESSION tidb_txn_mode = 'pessimistic';") + if err != nil { + return 0, 0, errors.Annotate(err, "enable pessimistic transaction failed") + } + var ( + maxRowIDMax int64 + newRowIDMax int64 + ) + err = exec.Transact(ctx, "realloc table rowID", func(ctx context.Context, tx *sql.Tx) error { + row := tx.QueryRowContext( + ctx, + fmt.Sprintf("SELECT MAX(row_id_max) from %s WHERE table_id = ? FOR UPDATE", m.tableName), + m.tr.tableInfo.ID, + ) + if row.Err() != nil { + return errors.Trace(err) + } + if err := row.Scan(&maxRowIDMax); err != nil { + return errors.Trace(err) + } + newRowIDMax = maxRowIDMax + newRowIDCount + // nolint:gosec + query := fmt.Sprintf("UPDATE %s SET row_id_max = ? WHERE table_id = ? AND task_id = ?", m.tableName) + if _, err := tx.ExecContext(ctx, query, newRowIDMax, m.tr.tableInfo.ID, m.taskID); err != nil { + return err + } + return nil + }) + if err != nil { + return 0, 0, errors.Trace(err) + } + // newRowIDBase = maxRowIDMax + 1 + return maxRowIDMax + 1, newRowIDMax, nil +} + func (m *dbTableMetaMgr) AllocTableRowIDs(ctx context.Context, rawRowIDMax int64) (*verify.KVChecksum, int64, error) { conn, err := m.session.Conn(ctx) if err != nil { @@ -237,8 +287,8 @@ func (m *dbTableMetaMgr) AllocTableRowIDs(ctx context.Context, rawRowIDMax int64 maxRowIDMax = rowIDMax } } - if rows.Err() != nil { - return errors.Trace(rows.Err()) + if err := rows.Err(); err != nil { + return errors.Trace(err) } // no enough info are available, fetch row_id max for table @@ -332,10 +382,10 @@ func (m *dbTableMetaMgr) AllocTableRowIDs(ctx context.Context, rawRowIDMax int64 ck := verify.MakeKVChecksum(baseTotalBytes, baseTotalKvs, baseChecksum) checksum = &ck } - log.L().Info("allocate table row_id base", zap.String("table", m.tr.tableName), + log.FromContext(ctx).Info("allocate table row_id base", zap.String("table", m.tr.tableName), zap.Int64("row_id_base", newRowIDBase)) if checksum != nil { - log.L().Info("checksum base", zap.Any("checksum", checksum)) + log.FromContext(ctx).Info("checksum base", zap.Any("checksum", checksum)) } return checksum, newRowIDBase, nil } @@ -452,8 +502,8 @@ func (m *dbTableMetaMgr) CheckAndUpdateLocalChecksum(ctx context.Context, checks } rows.Close() closed = true - if rows.Err() != nil { - return errors.Trace(rows.Err()) + if err := rows.Err(); err != nil { + return errors.Trace(err) } // nolint:gosec @@ -469,7 +519,7 @@ func (m *dbTableMetaMgr) CheckAndUpdateLocalChecksum(ctx context.Context, checks ck := verify.MakeKVChecksum(totalBytes, totalKvs, totalChecksum) baseTotalChecksum = &ck } - log.L().Info("check table checksum", zap.String("table", m.tr.tableName), + log.FromContext(ctx).Info("check table checksum", zap.String("table", m.tr.tableName), zap.Bool("checksum", needChecksum), zap.String("new_status", newStatus.String())) return } @@ -486,7 +536,7 @@ func (m *dbTableMetaMgr) FinishTable(ctx context.Context) error { func RemoveTableMetaByTableName(ctx context.Context, db *sql.DB, metaTable, tableName string) error { exec := &common.SQLWithRetry{ DB: db, - Logger: log.L(), + Logger: log.FromContext(ctx), } query := fmt.Sprintf("DELETE FROM %s", metaTable) var args []interface{} @@ -586,7 +636,7 @@ type storedCfgs struct { func (m *dbTaskMetaMgr) InitTask(ctx context.Context, source int64) error { exec := &common.SQLWithRetry{ DB: m.session, - Logger: log.L(), + Logger: log.FromContext(ctx), } // avoid override existing metadata if the meta is already inserted. stmt := fmt.Sprintf(`INSERT INTO %s (task_id, status, source_bytes) values (?, ?, ?) ON DUPLICATE KEY UPDATE state = ?`, m.tableName) @@ -597,7 +647,7 @@ func (m *dbTaskMetaMgr) InitTask(ctx context.Context, source int64) error { func (m *dbTaskMetaMgr) CheckTaskExist(ctx context.Context) (bool, error) { exec := &common.SQLWithRetry{ DB: m.session, - Logger: log.L(), + Logger: log.FromContext(ctx), } // avoid override existing metadata if the meta is already inserted. exist := false @@ -639,7 +689,7 @@ func (m *dbTaskMetaMgr) CheckTasksExclusively(ctx context.Context, action func(t defer conn.Close() exec := &common.SQLWithRetry{ DB: m.session, - Logger: log.L(), + Logger: log.FromContext(ctx), } err = exec.Exec(ctx, "enable pessimistic transaction", "SET SESSION tidb_txn_mode = 'pessimistic';") if err != nil { @@ -697,7 +747,7 @@ func (m *dbTaskMetaMgr) CheckAndPausePdSchedulers(ctx context.Context) (pdutil.U defer conn.Close() exec := &common.SQLWithRetry{ DB: m.session, - Logger: log.L(), + Logger: log.FromContext(ctx), } err = exec.Exec(ctx, "enable pessimistic transaction", "SET SESSION tidb_txn_mode = 'pessimistic';") if err != nil { @@ -780,7 +830,7 @@ func (m *dbTaskMetaMgr) CheckAndPausePdSchedulers(ctx context.Context) (pdutil.U // try to rollback the stopped schedulers cancelFunc := m.pd.MakeUndoFunctionByConfig(pausedCfg.RestoreCfg) if err1 := cancelFunc(ctx); err1 != nil { - log.L().Warn("undo remove schedulers failed", zap.Error(err1)) + log.FromContext(ctx).Warn("undo remove schedulers failed", zap.Error(err1)) } return errors.Trace(err) } @@ -828,7 +878,7 @@ func (m *dbTaskMetaMgr) CheckAndFinishRestore(ctx context.Context, finished bool defer conn.Close() exec := &common.SQLWithRetry{ DB: m.session, - Logger: log.L(), + Logger: log.FromContext(ctx), } err = exec.Exec(ctx, "enable pessimistic transaction", "SET SESSION tidb_txn_mode = 'pessimistic';") if err != nil { @@ -873,7 +923,7 @@ func (m *dbTaskMetaMgr) CheckAndFinishRestore(ctx context.Context, finished bool allFinished = false // check if other task still running if state == taskStateNormal { - log.L().Info("unfinished task found", zap.Int64("task_id", taskID), + log.FromContext(ctx).Info("unfinished task found", zap.Int64("task_id", taskID), zap.Stringer("status", status)) switchBack = false } @@ -907,7 +957,7 @@ func (m *dbTaskMetaMgr) CheckAndFinishRestore(ctx context.Context, finished bool return nil }) - log.L().Info("check all task finish status", zap.Bool("task_finished", finished), + log.FromContext(ctx).Info("check all task finish status", zap.Bool("task_finished", finished), zap.Bool("all_finished", allFinished), zap.Bool("switch_back", switchBack)) return switchBack, allFinished, err @@ -916,7 +966,7 @@ func (m *dbTaskMetaMgr) CheckAndFinishRestore(ctx context.Context, finished bool func (m *dbTaskMetaMgr) Cleanup(ctx context.Context) error { exec := &common.SQLWithRetry{ DB: m.session, - Logger: log.L(), + Logger: log.FromContext(ctx), } // avoid override existing metadata if the meta is already inserted. stmt := fmt.Sprintf("DROP TABLE %s;", m.tableName) @@ -929,7 +979,7 @@ func (m *dbTaskMetaMgr) Cleanup(ctx context.Context) error { func (m *dbTaskMetaMgr) CleanupTask(ctx context.Context) error { exec := &common.SQLWithRetry{ DB: m.session, - Logger: log.L(), + Logger: log.FromContext(ctx), } stmt := fmt.Sprintf("DELETE FROM %s WHERE task_id = %d;", m.tableName, m.taskID) err := exec.Exec(ctx, "clean up task", stmt) @@ -941,14 +991,20 @@ func (m *dbTaskMetaMgr) Close() { } func (m *dbTaskMetaMgr) CleanupAllMetas(ctx context.Context) error { - return MaybeCleanupAllMetas(ctx, m.session, m.schemaName, true) + return MaybeCleanupAllMetas(ctx, log.FromContext(ctx), m.session, m.schemaName, true) } // MaybeCleanupAllMetas remove the meta schema if there is no unfinished tables -func MaybeCleanupAllMetas(ctx context.Context, db *sql.DB, schemaName string, tableMetaExist bool) error { +func MaybeCleanupAllMetas( + ctx context.Context, + logger log.Logger, + db *sql.DB, + schemaName string, + tableMetaExist bool, +) error { exec := &common.SQLWithRetry{ DB: db, - Logger: log.L(), + Logger: logger, } // check if all tables are finished @@ -959,7 +1015,7 @@ func MaybeCleanupAllMetas(ctx context.Context, db *sql.DB, schemaName string, ta return errors.Trace(err) } if cnt > 0 { - log.L().Warn("there are unfinished table in table meta table, cleanup skipped.") + logger.Warn("there are unfinished table in table meta table, cleanup skipped.") return nil } } @@ -1031,6 +1087,12 @@ func (m noopTableMetaMgr) InitTableMeta(ctx context.Context) error { return nil } +func (m noopTableMetaMgr) ReallocTableRowIDs(ctx context.Context, _ int64) (int64, int64, error) { + // we don't need to reconcile rowIDs across all the instances + // barring using parallel import + return 0, 0, nil +} + func (m noopTableMetaMgr) AllocTableRowIDs(ctx context.Context, rawRowIDMax int64) (*verify.KVChecksum, int64, error) { return nil, 0, nil } diff --git a/br/pkg/lightning/restore/meta_manager_test.go b/br/pkg/lightning/restore/meta_manager_test.go index 8480bf077d6de..23102b56f07a6 100644 --- a/br/pkg/lightning/restore/meta_manager_test.go +++ b/br/pkg/lightning/restore/meta_manager_test.go @@ -384,3 +384,35 @@ func TestSingleTaskMetaMgr(t *testing.T) { }) require.NoError(t, err) } + +func TestReallocTableRowIDs(t *testing.T) { + s, clean := newMetaMgrSuite(t) + defer clean() + + ctx := context.WithValue(context.Background(), &checksumManagerKey, s.checksumMgr) + + rows := [][]driver.Value{ + {int64(1), int64(998), int64(1008), uint64(0), uint64(0), uint64(0), metaStatusRowIDAllocated.String()}, + } + checksum := verification.MakeKVChecksum(2, 1, 3) + s.prepareMock(rows, nil, nil, &checksum, nil) + + ck, rowIDBase, err := s.mgr.AllocTableRowIDs(ctx, 10) + require.NoError(t, err) + require.Equal(t, int64(998), rowIDBase) + require.Equal(t, &checksum, ck) + require.Equal(t, 1, s.checksumMgr.callCnt) + s.mockDB.ExpectExec("SET SESSION tidb_txn_mode = 'pessimistic';"). + WillReturnResult(sqlmock.NewResult(int64(0), int64(0))) + + s.mockDB.ExpectBegin() + s.mockDB.ExpectQuery("\\QSELECT MAX(row_id_max) from `test`.`table_meta` WHERE table_id = ? FOR UPDATE\\E").WithArgs(int64(1)). + WillReturnRows(sqlmock.NewRows([]string{"row_id_max"}).AddRow(1008)) + s.mockDB.ExpectExec("\\QUPDATE `test`.`table_meta` SET row_id_max = ? WHERE table_id = ? AND task_id = ?\\E").WithArgs(int64(1018), int64(1), int64(1)). + WillReturnResult(sqlmock.NewResult(int64(0), int64(1))) + s.mockDB.ExpectCommit() + newBase, newMax, err := s.mgr.ReallocTableRowIDs(context.Background(), 10) + require.Nil(t, err) + require.Equal(t, int64(1009), newBase) + require.Equal(t, int64(1018), newMax) +} diff --git a/br/pkg/lightning/restore/restore.go b/br/pkg/lightning/restore/restore.go index c776510ae3c9d..31a48c620846a 100644 --- a/br/pkg/lightning/restore/restore.go +++ b/br/pkg/lightning/restore/restore.go @@ -187,6 +187,7 @@ const ( ) type Controller struct { + taskCtx context.Context cfg *config.Config dbMetas []*mydump.MDDatabaseMeta dbInfos map[string]*checkpoints.TidbDBInfo @@ -301,7 +302,7 @@ func NewRestoreControllerWithPauser( if err != nil { return nil, errors.Trace(err) } - errorMgr := errormanager.New(db, cfg) + errorMgr := errormanager.New(db, cfg, log.FromContext(ctx)) if err := errorMgr.Init(ctx); err != nil { return nil, common.ErrInitErrManager.Wrap(err).GenWithStackByArgs() } @@ -309,7 +310,7 @@ func NewRestoreControllerWithPauser( var backend backend.Backend switch cfg.TikvImporter.Backend { case config.BackendTiDB: - backend = tidb.NewTiDBBackend(db, cfg.TikvImporter.OnDuplicate, errorMgr) + backend = tidb.NewTiDBBackend(ctx, db, cfg.TikvImporter.OnDuplicate, errorMgr) case config.BackendLocal: var rLimit local.Rlim_t rLimit, err = local.GetSystemRLimit() @@ -325,7 +326,7 @@ func NewRestoreControllerWithPauser( if cfg.TikvImporter.DuplicateResolution != config.DupeResAlgNone { if err := tikv.CheckTiKVVersion(ctx, tls, cfg.TiDB.PdAddr, minTiKVVersionForDuplicateResolution, maxTiKVVersionForDuplicateResolution); err != nil { if berrors.Is(err, berrors.ErrVersionMismatch) { - log.L().Warn("TiKV version doesn't support duplicate resolution. The resolution algorithm will fall back to 'none'", zap.Error(err)) + log.FromContext(ctx).Warn("TiKV version doesn't support duplicate resolution. The resolution algorithm will fall back to 'none'", zap.Error(err)) cfg.TikvImporter.DuplicateResolution = config.DupeResAlgNone } else { return nil, common.ErrCheckKVVersion.Wrap(err).GenWithStackByArgs() @@ -364,6 +365,7 @@ func NewRestoreControllerWithPauser( } rc := &Controller{ + taskCtx: ctx, cfg: cfg, dbMetas: p.DBMetas, tableWorkers: nil, @@ -378,7 +380,7 @@ func NewRestoreControllerWithPauser( tls: tls, checkTemplate: NewSimpleTemplate(), - errorSummaries: makeErrorSummaries(log.L()), + errorSummaries: makeErrorSummaries(log.FromContext(ctx)), checkpointsDB: cpdb, saveCpCh: make(chan saveCp), closedEngineLimit: worker.NewPool(ctx, cfg.App.TableConcurrency*2, "closed-engine"), @@ -410,7 +412,7 @@ func (rc *Controller) Run(ctx context.Context) error { rc.cleanCheckpoints, } - task := log.L().Begin(zap.InfoLevel, "the whole procedure") + task := log.FromContext(ctx).Begin(zap.InfoLevel, "the whole procedure") var err error finished := false @@ -474,13 +476,14 @@ type schemaJob struct { } type restoreSchemaWorker struct { - ctx context.Context - quit context.CancelFunc - jobCh chan *schemaJob - errCh chan error - wg sync.WaitGroup - glue glue.Glue - store storage.ExternalStorage + ctx context.Context + quit context.CancelFunc + logger log.Logger + jobCh chan *schemaJob + errCh chan error + wg sync.WaitGroup + glue glue.Glue + store storage.ExternalStorage } func (worker *restoreSchemaWorker) addJob(sqlStr string, job *schemaJob) error { @@ -617,9 +620,9 @@ loop: break loop } } - logger := log.With(zap.String("db", job.dbName), zap.String("table", job.tblName)) + logger := worker.logger.With(zap.String("db", job.dbName), zap.String("table", job.tblName)) sqlWithRetry := common.SQLWithRetry{ - Logger: log.L(), + Logger: worker.logger, DB: session, } for _, stmt := range job.stmts { @@ -694,16 +697,17 @@ func (rc *Controller) restoreSchema(ctx context.Context) error { // create table with schema file // we can handle the duplicated created with createIfNotExist statement // and we will check the schema in TiDB is valid with the datafile in DataCheck later. - logTask := log.L().Begin(zap.InfoLevel, "restore all schema") + logTask := log.FromContext(ctx).Begin(zap.InfoLevel, "restore all schema") concurrency := mathutil.Min(rc.cfg.App.RegionConcurrency, 8) childCtx, cancel := context.WithCancel(ctx) worker := restoreSchemaWorker{ - ctx: childCtx, - quit: cancel, - jobCh: make(chan *schemaJob, concurrency), - errCh: make(chan error), - glue: rc.tidbGlue, - store: rc.store, + ctx: childCtx, + quit: cancel, + logger: log.FromContext(ctx), + jobCh: make(chan *schemaJob, concurrency), + errCh: make(chan error), + glue: rc.tidbGlue, + store: rc.store, } for i := 0; i < concurrency; i++ { go worker.doJob() @@ -740,12 +744,12 @@ func (rc *Controller) initCheckpoint(ctx context.Context) error { return common.ErrInitCheckpoint.Wrap(err).GenWithStackByArgs() } failpoint.Inject("InitializeCheckpointExit", func() { - log.L().Warn("exit triggered", zap.String("failpoint", "InitializeCheckpointExit")) + log.FromContext(ctx).Warn("exit triggered", zap.String("failpoint", "InitializeCheckpointExit")) os.Exit(0) }) rc.checkpointsWg.Add(1) // checkpointsWg will be done in `rc.listenCheckpointUpdates` - go rc.listenCheckpointUpdates() + go rc.listenCheckpointUpdates(log.FromContext(ctx)) // Estimate the number of chunks for progress reporting return rc.estimateChunkCountIntoMetrics(ctx) @@ -815,7 +819,7 @@ func verifyLocalFile(ctx context.Context, cpdb checkpoints.DB, dir string) error file := local.Engine{UUID: eID} err := file.Exist(dir) if err != nil { - log.L().Error("can't find local file", + log.FromContext(ctx).Error("can't find local file", zap.String("table name", tableName), zap.Int32("engine ID", engineID)) if os.IsNotExist(err) { @@ -885,9 +889,11 @@ func (rc *Controller) estimateChunkCountIntoMetrics(ctx context.Context) error { } } } - metric.ChunkCounter.WithLabelValues(metric.ChunkStateEstimated).Add(estimatedChunkCount) - metric.ProcessedEngineCounter.WithLabelValues(metric.ChunkStateEstimated, metric.TableResultSuccess). - Add(float64(estimatedEngineCnt)) + if m, ok := metric.FromContext(ctx); ok { + m.ChunkCounter.WithLabelValues(metric.ChunkStateEstimated).Add(estimatedChunkCount) + m.ProcessedEngineCounter.WithLabelValues(metric.ChunkStateEstimated, metric.TableResultSuccess). + Add(float64(estimatedEngineCnt)) + } rc.tidbGlue.Record(glue.RecordEstimatedChunk, uint64(estimatedChunkCount)) return nil } @@ -904,7 +910,7 @@ func firstErr(errors ...error) error { func (rc *Controller) saveStatusCheckpoint(ctx context.Context, tableName string, engineID int32, err error, statusIfSucceed checkpoints.CheckpointStatus) error { merger := &checkpoints.StatusCheckpointMerger{Status: statusIfSucceed, EngineID: engineID} - logger := log.L().With(zap.String("table", tableName), zap.Int32("engine_id", engineID), + logger := log.FromContext(ctx).With(zap.String("table", tableName), zap.Int32("engine_id", engineID), zap.String("new_status", statusIfSucceed.MetricName()), zap.Error(err)) logger.Debug("update checkpoint") @@ -921,10 +927,12 @@ func (rc *Controller) saveStatusCheckpoint(ctx context.Context, tableName string rc.errorSummaries.record(tableName, err, statusIfSucceed) } - if engineID == checkpoints.WholeTableEngineID { - metric.RecordTableCount(statusIfSucceed.MetricName(), err) - } else { - metric.RecordEngineCount(statusIfSucceed.MetricName(), err) + if m, ok := metric.FromContext(ctx); ok { + if engineID == checkpoints.WholeTableEngineID { + m.RecordTableCount(statusIfSucceed.MetricName(), err) + } else { + m.RecordEngineCount(statusIfSucceed.MetricName(), err) + } } waitCh := make(chan error, 1) @@ -942,7 +950,7 @@ func (rc *Controller) saveStatusCheckpoint(ctx context.Context, tableName string } // listenCheckpointUpdates will combine several checkpoints together to reduce database load. -func (rc *Controller) listenCheckpointUpdates() { +func (rc *Controller) listenCheckpointUpdates(logger log.Logger) { var lock sync.Mutex coalesed := make(map[string]*checkpoints.TableCheckpointDiff) var waiters []chan<- error @@ -963,7 +971,7 @@ func (rc *Controller) listenCheckpointUpdates() { failpoint.Inject("SlowDownCheckpointUpdate", func() {}) if len(cpd) > 0 { - err := rc.checkpointsDB.Update(cpd) + err := rc.checkpointsDB.Update(rc.taskCtx, cpd) for _, w := range ws { w <- common.NormalizeOrWrapErr(common.ErrUpdateCheckpoint, err) } @@ -1027,7 +1035,7 @@ func (rc *Controller) listenCheckpointUpdates() { rc.checkpointsWg.Done() rc.checkpointsWg.Wait() if err := common.KillMySelf(); err != nil { - log.L().Warn("KillMySelf() failed to kill itself", log.ShortError(err)) + logger.Warn("KillMySelf() failed to kill itself", log.ShortError(err)) } for scp := range rc.saveCpCh { if scp.waitCh != nil { @@ -1096,10 +1104,10 @@ func (rc *Controller) buildRunPeriodicActionAndCancelFunc(ctx context.Context, s for { select { case <-ctx.Done(): - log.L().Warn("stopping periodic actions", log.ShortError(ctx.Err())) + log.FromContext(ctx).Warn("stopping periodic actions", log.ShortError(ctx.Err())) return case <-stop: - log.L().Info("everything imported, stopping periodic actions") + log.FromContext(ctx).Info("everything imported, stopping periodic actions") return case <-switchModeChan: @@ -1107,29 +1115,34 @@ func (rc *Controller) buildRunPeriodicActionAndCancelFunc(ctx context.Context, s rc.switchToImportMode(ctx) case <-logProgressChan: + metrics, ok := metric.FromContext(ctx) + if !ok { + log.FromContext(ctx).Warn("couldn't find metrics from context, skip log progress") + continue + } // log the current progress periodically, so OPS will know that we're still working nanoseconds := float64(time.Since(start).Nanoseconds()) - totalRestoreBytes := metric.ReadCounter(metric.BytesCounter.WithLabelValues(metric.BytesStateTotalRestore)) - restoredBytes := metric.ReadCounter(metric.BytesCounter.WithLabelValues(metric.BytesStateRestored)) + totalRestoreBytes := metric.ReadCounter(metrics.BytesCounter.WithLabelValues(metric.BytesStateTotalRestore)) + restoredBytes := metric.ReadCounter(metrics.BytesCounter.WithLabelValues(metric.BytesStateRestored)) // the estimated chunk is not accurate(likely under estimated), but the actual count is not accurate // before the last table start, so use the bigger of the two should be a workaround - estimated := metric.ReadCounter(metric.ChunkCounter.WithLabelValues(metric.ChunkStateEstimated)) - pending := metric.ReadCounter(metric.ChunkCounter.WithLabelValues(metric.ChunkStatePending)) + estimated := metric.ReadCounter(metrics.ChunkCounter.WithLabelValues(metric.ChunkStateEstimated)) + pending := metric.ReadCounter(metrics.ChunkCounter.WithLabelValues(metric.ChunkStatePending)) if estimated < pending { estimated = pending } - finished := metric.ReadCounter(metric.ChunkCounter.WithLabelValues(metric.ChunkStateFinished)) - totalTables := metric.ReadCounter(metric.TableCounter.WithLabelValues(metric.TableStatePending, metric.TableResultSuccess)) - completedTables := metric.ReadCounter(metric.TableCounter.WithLabelValues(metric.TableStateCompleted, metric.TableResultSuccess)) - bytesRead := metric.ReadHistogramSum(metric.RowReadBytesHistogram) - engineEstimated := metric.ReadCounter(metric.ProcessedEngineCounter.WithLabelValues(metric.ChunkStateEstimated, metric.TableResultSuccess)) - enginePending := metric.ReadCounter(metric.ProcessedEngineCounter.WithLabelValues(metric.ChunkStatePending, metric.TableResultSuccess)) + finished := metric.ReadCounter(metrics.ChunkCounter.WithLabelValues(metric.ChunkStateFinished)) + totalTables := metric.ReadCounter(metrics.TableCounter.WithLabelValues(metric.TableStatePending, metric.TableResultSuccess)) + completedTables := metric.ReadCounter(metrics.TableCounter.WithLabelValues(metric.TableStateCompleted, metric.TableResultSuccess)) + bytesRead := metric.ReadHistogramSum(metrics.RowReadBytesHistogram) + engineEstimated := metric.ReadCounter(metrics.ProcessedEngineCounter.WithLabelValues(metric.ChunkStateEstimated, metric.TableResultSuccess)) + enginePending := metric.ReadCounter(metrics.ProcessedEngineCounter.WithLabelValues(metric.ChunkStatePending, metric.TableResultSuccess)) if engineEstimated < enginePending { engineEstimated = enginePending } - engineFinished := metric.ReadCounter(metric.ProcessedEngineCounter.WithLabelValues(metric.TableStateImported, metric.TableResultSuccess)) - bytesWritten := metric.ReadCounter(metric.BytesCounter.WithLabelValues(metric.BytesStateRestoreWritten)) - bytesImported := metric.ReadCounter(metric.BytesCounter.WithLabelValues(metric.BytesStateImported)) + engineFinished := metric.ReadCounter(metrics.ProcessedEngineCounter.WithLabelValues(metric.TableStateImported, metric.TableResultSuccess)) + bytesWritten := metric.ReadCounter(metrics.BytesCounter.WithLabelValues(metric.BytesStateRestoreWritten)) + bytesImported := metric.ReadCounter(metrics.BytesCounter.WithLabelValues(metric.BytesStateImported)) var state string var remaining zap.Field @@ -1164,7 +1177,7 @@ func (rc *Controller) buildRunPeriodicActionAndCancelFunc(ctx context.Context, s totalPercent := 0.0 if restoredBytes > 0 { restorePercent := math.Min(restoredBytes/totalRestoreBytes, 1.0) - metric.ProgressGauge.WithLabelValues(metric.ProgressPhaseRestore).Set(restorePercent) + metrics.ProgressGauge.WithLabelValues(metric.ProgressPhaseRestore).Set(restorePercent) if rc.cfg.TikvImporter.Backend != config.BackendTiDB { var importPercent float64 if bytesWritten > 0 { @@ -1179,7 +1192,7 @@ func (rc *Controller) buildRunPeriodicActionAndCancelFunc(ctx context.Context, s importBytesField = zap.String("import-bytes", fmt.Sprintf("%s/%s(estimated)", units.BytesSize(bytesImported), units.BytesSize(totalImportBytes))) } - metric.ProgressGauge.WithLabelValues(metric.ProgressPhaseImport).Set(importPercent) + metrics.ProgressGauge.WithLabelValues(metric.ProgressPhaseImport).Set(importPercent) totalPercent = (restorePercent + importPercent) / 2 } else { totalPercent = restorePercent @@ -1191,7 +1204,7 @@ func (rc *Controller) buildRunPeriodicActionAndCancelFunc(ctx context.Context, s restoreBytesField = zap.String("restore-bytes", fmt.Sprintf("%s/%s", units.BytesSize(restoredBytes), units.BytesSize(totalRestoreBytes))) } - metric.ProgressGauge.WithLabelValues(metric.ProgressPhaseTotal).Set(totalPercent) + metrics.ProgressGauge.WithLabelValues(metric.ProgressPhaseTotal).Set(totalPercent) formatPercent := func(num, denom float64) string { if denom > 0 { @@ -1207,7 +1220,7 @@ func (rc *Controller) buildRunPeriodicActionAndCancelFunc(ctx context.Context, s } // Note: a speed of 28 MiB/s roughly corresponds to 100 GiB/hour. - log.L().Info("progress", + log.FromContext(ctx).Info("progress", zap.String("total", fmt.Sprintf("%.1f%%", totalPercent*100)), // zap.String("files", fmt.Sprintf("%.0f/%.0f (%.1f%%)", finished, estimated, finished/estimated*100)), zap.String("tables", fmt.Sprintf("%.0f/%.0f%s", completedTables, totalTables, formatPercent(completedTables, totalTables))), @@ -1225,12 +1238,14 @@ func (rc *Controller) buildRunPeriodicActionAndCancelFunc(ctx context.Context, s rc.enforceDiskQuota(ctx) case <-glueProgressTicker.C: - finished := metric.ReadCounter(metric.ChunkCounter.WithLabelValues(metric.ChunkStateFinished)) - rc.tidbGlue.Record(glue.RecordFinishedChunk, uint64(finished)) + if m, ok := metric.FromContext(ctx); ok { + finished := metric.ReadCounter(m.ChunkCounter.WithLabelValues(metric.ChunkStateFinished)) + rc.tidbGlue.Record(glue.RecordFinishedChunk, uint64(finished)) + } } } }, func(do bool) { - log.L().Info("cancel periodic actions", zap.Bool("do", do)) + log.FromContext(ctx).Info("cancel periodic actions", zap.Bool("do", do)) for _, f := range cancelFuncs { f(do) } @@ -1278,7 +1293,7 @@ func (rc *Controller) keepPauseGCForDupeRes(ctx context.Context) (<-chan struct{ paused = true break } - log.L().Warn( + log.FromContext(ctx).Warn( "Failed to register GC safe point because the current minimum safe point is newer"+ " than what we assume, will retry newMinSafePoint next time", zap.Uint64("minSafePoint", minSafePoint), @@ -1301,11 +1316,11 @@ func (rc *Controller) keepPauseGCForDupeRes(ctx context.Context) (<-chan struct{ case <-ticker.C: minSafePoint, err := pdCli.UpdateServiceGCSafePoint(ctx, serviceID, ttl, safePoint) if err != nil { - log.L().Warn("Failed to register GC safe point", zap.Error(err)) + log.FromContext(ctx).Warn("Failed to register GC safe point", zap.Error(err)) continue } if minSafePoint > safePoint { - log.L().Warn("The current minimum safe point is newer than what we hold, duplicate records are at"+ + log.FromContext(ctx).Warn("The current minimum safe point is newer than what we hold, duplicate records are at"+ "risk of being GC and not detectable", zap.Uint64("safePoint", safePoint), zap.Uint64("minSafePoint", minSafePoint), @@ -1315,7 +1330,7 @@ func (rc *Controller) keepPauseGCForDupeRes(ctx context.Context) (<-chan struct{ case <-ctx.Done(): stopCtx, cancelFunc := context.WithTimeout(context.Background(), time.Second*5) if _, err := pdCli.UpdateServiceGCSafePoint(stopCtx, serviceID, 0, safePoint); err != nil { - log.L().Warn("Failed to reset safe point ttl to zero", zap.Error(err)) + log.FromContext(ctx).Warn("Failed to reset safe point ttl to zero", zap.Error(err)) } // just make compiler happy cancelFunc() @@ -1343,7 +1358,7 @@ func (rc *Controller) restoreTables(ctx context.Context) (finalErr error) { }() } - logTask := log.L().Begin(zap.InfoLevel, "restore all tables data") + logTask := log.FromContext(ctx).Begin(zap.InfoLevel, "restore all tables data") if rc.tableWorkers == nil { rc.tableWorkers = worker.NewPool(ctx, rc.cfg.App.TableConcurrency, "table") } @@ -1457,7 +1472,9 @@ func (rc *Controller) restoreTables(ctx context.Context) (finalErr error) { err = common.NormalizeOrWrapErr(common.ErrRestoreTable, err, task.tr.tableName) tableLogTask.End(zap.ErrorLevel, err) web.BroadcastError(task.tr.tableName, err) - metric.RecordTableCount(metric.TableStateCompleted, err) + if m, ok := metric.FromContext(ctx2); ok { + m.RecordTableCount(metric.TableStateCompleted, err) + } restoreErr.Set(err) if needPostProcess { postProcessTaskChan <- task @@ -1485,7 +1502,7 @@ func (rc *Controller) restoreTables(ctx context.Context) (finalErr error) { if err != nil { return errors.Trace(err) } - tr, err := NewTableRestore(tableName, tableMeta, dbInfo, tableInfo, cp, igCols.ColumnsMap()) + tr, err := NewTableRestore(tableName, tableMeta, dbInfo, tableInfo, cp, igCols.ColumnsMap(), log.FromContext(ctx)) if err != nil { return errors.Trace(err) } @@ -1506,7 +1523,9 @@ func (rc *Controller) restoreTables(ctx context.Context) (finalErr error) { } } - metric.BytesCounter.WithLabelValues(metric.BytesStateTotalRestore).Add(float64(totalDataSizeToRestore)) + if m, ok := metric.FromContext(ctx); ok { + m.BytesCounter.WithLabelValues(metric.BytesStateTotalRestore).Add(float64(totalDataSizeToRestore)) + } for i := range allTasks { wg.Add(1) @@ -1583,6 +1602,9 @@ func (tr *TableRestore) restoreTable( rowIDMax = engine.Chunks[len(engine.Chunks)-1].Chunk.RowIDMax } } + if rowIDMax > tr.curMaxRowID { + tr.curMaxRowID = rowIDMax + } db, _ := rc.tidbGlue.GetDB() versionStr, err := version.FetchVersion(ctx, db) if err != nil { @@ -1666,12 +1688,12 @@ func (rc *Controller) outpuErrorSummary() { // do full compaction for the whole data. func (rc *Controller) fullCompact(ctx context.Context) error { if !rc.cfg.PostRestore.Compact { - log.L().Info("skip full compaction") + log.FromContext(ctx).Info("skip full compaction") return nil } // wait until any existing level-1 compact to complete first. - task := log.L().Begin(zap.InfoLevel, "wait for completion of existing level 1 compaction") + task := log.FromContext(ctx).Begin(zap.InfoLevel, "wait for completion of existing level 1 compaction") for !rc.compactState.CAS(compactStateIdle, compactStateDoing) { time.Sleep(100 * time.Millisecond) } @@ -1706,7 +1728,7 @@ func (rc *Controller) switchTiKVMode(ctx context.Context, mode sstpb.SwitchMode) return } - log.L().Info("switch import mode", zap.Stringer("mode", mode)) + log.FromContext(ctx).Info("switch import mode", zap.Stringer("mode", mode)) // It is fine if we miss some stores which did not switch to Import mode, // since we're running it periodically, so we exclude disconnected stores. @@ -1766,10 +1788,12 @@ func (rc *Controller) enforceDiskQuota(ctx context.Context) { quota := int64(rc.cfg.TikvImporter.DiskQuota) largeEngines, inProgressLargeEngines, totalDiskSize, totalMemSize := rc.backend.CheckDiskQuota(quota) - metric.LocalStorageUsageBytesGauge.WithLabelValues("disk").Set(float64(totalDiskSize)) - metric.LocalStorageUsageBytesGauge.WithLabelValues("mem").Set(float64(totalMemSize)) + if m, ok := metric.FromContext(ctx); ok { + m.LocalStorageUsageBytesGauge.WithLabelValues("disk").Set(float64(totalDiskSize)) + m.LocalStorageUsageBytesGauge.WithLabelValues("mem").Set(float64(totalMemSize)) + } - logger := log.With( + logger := log.FromContext(ctx).With( zap.Int64("diskSize", totalDiskSize), zap.Int64("memSize", totalMemSize), zap.Int64("quota", quota), @@ -1830,7 +1854,7 @@ func (rc *Controller) setGlobalVariables(ctx context.Context) error { // we should enable/disable new collation here since in server mode, tidb config // may be different in different tasks collate.SetNewCollationEnabledForTest(enabled) - log.L().Info("new_collation_enabled", zap.Bool("enabled", enabled)) + log.FromContext(ctx).Info("new_collation_enabled", zap.Bool("enabled", enabled)) return nil } @@ -1848,7 +1872,7 @@ func (rc *Controller) cleanCheckpoints(ctx context.Context) error { return nil } - logger := log.With( + logger := log.FromContext(ctx).With( zap.Stringer("keepAfterSuccess", rc.cfg.Checkpoint.KeepAfterSuccess), zap.Int64("taskID", rc.cfg.TaskID), ) @@ -1938,13 +1962,13 @@ func (rc *Controller) preCheckRequirements(ctx context.Context) error { needCheck = taskCheckpoints == nil } if needCheck { - err = rc.localResource(source) + err = rc.localResource(ctx, source) if err != nil { return common.ErrCheckLocalResource.Wrap(err).GenWithStackByArgs() } if err := rc.clusterResource(ctx, source); err != nil { if err1 := rc.taskMgr.CleanupTask(ctx); err1 != nil { - log.L().Warn("cleanup task failed", zap.Error(err1)) + log.FromContext(ctx).Warn("cleanup task failed", zap.Error(err1)) return common.ErrMetaMgrUnknown.Wrap(err).GenWithStackByArgs() } } @@ -1962,7 +1986,7 @@ func (rc *Controller) preCheckRequirements(ctx context.Context) error { if !taskExist && rc.taskMgr != nil { err := rc.taskMgr.CleanupTask(ctx) if err != nil { - log.L().Warn("cleanup task failed", zap.Error(err)) + log.FromContext(ctx).Warn("cleanup task failed", zap.Error(err)) } } return common.ErrPreCheckFailed.GenWithStackByArgs(rc.checkTemplate.FailedMsg()) @@ -2023,9 +2047,16 @@ func (rc *Controller) DataCheck(ctx context.Context) error { } type chunkRestore struct { - parser mydump.Parser - index int - chunk *checkpoints.ChunkCheckpoint + parser mydump.Parser + index int + chunk *checkpoints.ChunkCheckpoint + originalRowIDMax int64 + curRowIDBase int64 + curRowIDMax int64 + tableRestore *TableRestore + + rowCount int + curAccmRowSize uint64 // has a maximum of 18446744.07370955 TB } func newChunkRestore( @@ -2036,6 +2067,7 @@ func newChunkRestore( ioWorkers *worker.Pool, store storage.ExternalStorage, tableInfo *checkpoints.TidbTableInfo, + tableRestore *TableRestore, ) (*chunkRestore, error) { blockBufSize := int64(cfg.Mydumper.ReadBlockSize) @@ -2059,12 +2091,12 @@ func newChunkRestore( if err != nil { return nil, err } - parser, err = mydump.NewCSVParser(&cfg.Mydumper.CSV, reader, blockBufSize, ioWorkers, hasHeader, charsetConvertor) + parser, err = mydump.NewCSVParser(ctx, &cfg.Mydumper.CSV, reader, blockBufSize, ioWorkers, hasHeader, charsetConvertor) if err != nil { return nil, errors.Trace(err) } case mydump.SourceTypeSQL: - parser = mydump.NewChunkParser(cfg.TiDB.SQLMode, reader, blockBufSize, ioWorkers) + parser = mydump.NewChunkParser(ctx, cfg.TiDB.SQLMode, reader, blockBufSize, ioWorkers) case mydump.SourceTypeParquet: parser, err = mydump.NewParquetParser(ctx, store, reader, chunk.FileMeta.Path) if err != nil { @@ -2082,9 +2114,11 @@ func newChunkRestore( } return &chunkRestore{ - parser: parser, - index: index, - chunk: chunk, + parser: parser, + index: index, + chunk: chunk, + originalRowIDMax: chunk.Chunk.RowIDMax, + tableRestore: tableRestore, }, nil } @@ -2137,13 +2171,52 @@ type deliverResult struct { err error } +func (cr *chunkRestore) adjustRowID(rowID int64, rc *Controller) (int64, error) { + if rowID <= cr.originalRowIDMax { + // no need to ajust + return rowID, nil + } + // need to adjust rowID + // rowID should be within [curRowIDBase, curRowIDMax] + if cr.curRowIDBase == 0 || cr.curRowIDBase > cr.curRowIDMax { + logger := cr.tableRestore.logger.With( + zap.String("tableName", cr.tableRestore.tableName), + zap.Int("fileIndex", cr.index), + zap.Stringer("path", &cr.chunk.Key), + zap.String("task", "re-allocate rowID"), + ) + logger.Info("start re-allocating") + // 1. curRowIDBase == 0 -> no previous re-allocation + // 2. curRowIDBase > curRowIDMax -> run out of allocated IDs + pos, _ := cr.parser.Pos() + leftFileSize := cr.chunk.Chunk.EndOffset - pos + avgRowSize := cr.curAccmRowSize / uint64(cr.rowCount) + newRowIDCount := leftFileSize/int64(avgRowSize) + 1 // plus the current row + newBase, newMax, err := cr.tableRestore.allocateRowIDs(newRowIDCount, rc) + if err != nil { + logger.Error("fail to re-allocate rowIDs", zap.Error(err)) + return 0, err + } + cr.curRowIDBase = newBase + cr.curRowIDMax = newMax + } + rowID = cr.curRowIDBase + cr.curRowIDBase++ + return rowID, nil +} + +func (cr *chunkRestore) updateRowStats(rowSize int) { + cr.curAccmRowSize += uint64(rowSize) + cr.rowCount++ +} + //nolint:nakedret // TODO: refactor func (cr *chunkRestore) deliverLoop( ctx context.Context, kvsCh <-chan []deliveredKVs, t *TableRestore, engineID int32, - dataEngine, indexEngine *backend.LocalEngineWriter, + dataWriter, indexWriter *backend.LocalEngineWriter, rc *Controller, ) (deliverTotalDur time.Duration, err error) { deliverLogger := t.logger.With( @@ -2167,7 +2240,6 @@ func (cr *chunkRestore) deliverLoop( startOffset := cr.chunk.Chunk.Offset currOffset := startOffset rowID := cr.chunk.Chunk.PrevRowIDMax - populate: for dataChecksum.SumSize()+indexChecksum.SumSize() < minDeliverBytes { select { @@ -2202,7 +2274,7 @@ func (cr *chunkRestore) deliverLoop( for !rc.diskQuotaLock.TryRLock() { // try to update chunk checkpoint, this can help save checkpoint after importing when disk-quota is triggered if !dataSynced { - dataSynced = cr.maybeSaveCheckpoint(rc, t, engineID, cr.chunk, dataEngine, indexEngine) + dataSynced = cr.maybeSaveCheckpoint(rc, t, engineID, cr.chunk, dataWriter, indexWriter) } time.Sleep(time.Millisecond) } @@ -2211,27 +2283,29 @@ func (cr *chunkRestore) deliverLoop( // Write KVs into the engine start := time.Now() - if err = dataEngine.WriteRows(ctx, columns, dataKVs); err != nil { + if err = dataWriter.WriteRows(ctx, columns, dataKVs); err != nil { if !common.IsContextCanceledError(err) { deliverLogger.Error("write to data engine failed", log.ShortError(err)) } return errors.Trace(err) } - if err = indexEngine.WriteRows(ctx, columns, indexKVs); err != nil { + if err = indexWriter.WriteRows(ctx, columns, indexKVs); err != nil { if !common.IsContextCanceledError(err) { deliverLogger.Error("write to index engine failed", log.ShortError(err)) } return errors.Trace(err) } - deliverDur := time.Since(start) - deliverTotalDur += deliverDur - metric.BlockDeliverSecondsHistogram.Observe(deliverDur.Seconds()) - metric.BlockDeliverBytesHistogram.WithLabelValues(metric.BlockDeliverKindData).Observe(float64(dataChecksum.SumSize())) - metric.BlockDeliverBytesHistogram.WithLabelValues(metric.BlockDeliverKindIndex).Observe(float64(indexChecksum.SumSize())) - metric.BlockDeliverKVPairsHistogram.WithLabelValues(metric.BlockDeliverKindData).Observe(float64(dataChecksum.SumKVS())) - metric.BlockDeliverKVPairsHistogram.WithLabelValues(metric.BlockDeliverKindIndex).Observe(float64(indexChecksum.SumKVS())) + if m, ok := metric.FromContext(ctx); ok { + deliverDur := time.Since(start) + deliverTotalDur += deliverDur + m.BlockDeliverSecondsHistogram.Observe(deliverDur.Seconds()) + m.BlockDeliverBytesHistogram.WithLabelValues(metric.BlockDeliverKindData).Observe(float64(dataChecksum.SumSize())) + m.BlockDeliverBytesHistogram.WithLabelValues(metric.BlockDeliverKindIndex).Observe(float64(indexChecksum.SumSize())) + m.BlockDeliverKVPairsHistogram.WithLabelValues(metric.BlockDeliverKindData).Observe(float64(dataChecksum.SumKVS())) + m.BlockDeliverKVPairsHistogram.WithLabelValues(metric.BlockDeliverKindIndex).Observe(float64(indexChecksum.SumKVS())) + } return nil }() if err != nil { @@ -2252,11 +2326,13 @@ func (cr *chunkRestore) deliverLoop( cr.chunk.Chunk.Offset = currOffset cr.chunk.Chunk.PrevRowIDMax = rowID - metric.BytesCounter.WithLabelValues(metric.BytesStateRestored).Add(float64(currOffset - startOffset)) + if m, ok := metric.FromContext(ctx); ok { + m.BytesCounter.WithLabelValues(metric.BytesStateRestored).Add(float64(currOffset - startOffset)) + } if currOffset > lastOffset || dataChecksum.SumKVS() != 0 || indexChecksum.SumKVS() != 0 { // No need to save checkpoint if nothing was delivered. - dataSynced = cr.maybeSaveCheckpoint(rc, t, engineID, cr.chunk, dataEngine, indexEngine) + dataSynced = cr.maybeSaveCheckpoint(rc, t, engineID, cr.chunk, dataWriter, indexWriter) } failpoint.Inject("SlowDownWriteRows", func() { deliverLogger.Warn("Slowed down write rows") @@ -2427,12 +2503,17 @@ func (cr *chunkRestore) encodeLoop( encodeDurStart := time.Now() lastRow := cr.parser.LastRow() // sql -> kv + if lastRow.RowID, err = cr.adjustRowID(lastRow.RowID, rc); err != nil { + return + } + cr.updateRowStats(lastRow.Length) + rowID = lastRow.RowID kvs, encodeErr := kvEncoder.Encode(logger, lastRow.Row, lastRow.RowID, cr.chunk.ColumnPermutation, cr.chunk.Key.Path, curOffset) encodeDur += time.Since(encodeDurStart) hasIgnoredEncodeErr := false if encodeErr != nil { - rowText := tidb.EncodeRowForRecord(t.encTable, rc.cfg.TiDB.SQLMode, lastRow.Row, cr.chunk.ColumnPermutation) + rowText := tidb.EncodeRowForRecord(ctx, t.encTable, rc.cfg.TiDB.SQLMode, lastRow.Row, cr.chunk.ColumnPermutation) encodeErr = rc.errorMgr.RecordTypeError(ctx, logger, t.tableName, cr.chunk.Key.Path, newOffset, rowText, encodeErr) if encodeErr != nil { err = common.ErrEncodeKV.Wrap(encodeErr).GenWithStackByArgs(&cr.chunk.Key, newOffset) @@ -2463,17 +2544,21 @@ func (cr *chunkRestore) encodeLoop( } } encodeTotalDur += encodeDur - metric.RowEncodeSecondsHistogram.Observe(encodeDur.Seconds()) readTotalDur += readDur - metric.RowReadSecondsHistogram.Observe(readDur.Seconds()) - metric.RowReadBytesHistogram.Observe(float64(newOffset - offset)) + if m, ok := metric.FromContext(ctx); ok { + m.RowEncodeSecondsHistogram.Observe(encodeDur.Seconds()) + m.RowReadSecondsHistogram.Observe(readDur.Seconds()) + m.RowReadBytesHistogram.Observe(float64(newOffset - offset)) + } if len(kvPacket) != 0 { deliverKvStart := time.Now() if err = send(kvPacket); err != nil { return } - metric.RowKVDeliverSecondsHistogram.Observe(time.Since(deliverKvStart).Seconds()) + if m, ok := metric.FromContext(ctx); ok { + m.RowKVDeliverSecondsHistogram.Observe(time.Since(deliverKvStart).Seconds()) + } } } @@ -2485,11 +2570,11 @@ func (cr *chunkRestore) restore( ctx context.Context, t *TableRestore, engineID int32, - dataEngine, indexEngine *backend.LocalEngineWriter, + dataWriter, indexWriter *backend.LocalEngineWriter, rc *Controller, ) error { // Create the encoder. - kvEncoder, err := rc.backend.NewEncoder(t.encTable, &kv.SessionOptions{ + kvEncoder, err := rc.backend.NewEncoder(ctx, t.encTable, &kv.SessionOptions{ SQLMode: rc.cfg.TiDB.SQLMode, Timestamp: cr.chunk.Timestamp, SysVars: rc.sysVars, @@ -2506,7 +2591,7 @@ func (cr *chunkRestore) restore( go func() { defer close(deliverCompleteCh) - dur, err := cr.deliverLoop(ctx, kvsCh, t, engineID, dataEngine, indexEngine, rc) + dur, err := cr.deliverLoop(ctx, kvsCh, t, engineID, dataWriter, indexWriter, rc) select { case <-ctx.Done(): case deliverCompleteCh <- deliverResult{dur, err}: diff --git a/br/pkg/lightning/restore/restore_test.go b/br/pkg/lightning/restore/restore_test.go index 852a3a4831e73..73996b08d3987 100644 --- a/br/pkg/lightning/restore/restore_test.go +++ b/br/pkg/lightning/restore/restore_test.go @@ -69,7 +69,7 @@ func TestNewTableRestore(t *testing.T) { for _, tc := range testCases { tableInfo := dbInfo.Tables[tc.name] tableName := common.UniqueTable("mockdb", tableInfo.Name) - tr, err := NewTableRestore(tableName, nil, dbInfo, tableInfo, &checkpoints.TableCheckpoint{}, nil) + tr, err := NewTableRestore(tableName, nil, dbInfo, tableInfo, &checkpoints.TableCheckpoint{}, nil, log.L()) require.NotNil(t, tr) require.NoError(t, err) } @@ -85,7 +85,7 @@ func TestNewTableRestoreFailure(t *testing.T) { }} tableName := common.UniqueTable("mockdb", "failure") - _, err := NewTableRestore(tableName, nil, dbInfo, tableInfo, &checkpoints.TableCheckpoint{}, nil) + _, err := NewTableRestore(tableName, nil, dbInfo, tableInfo, &checkpoints.TableCheckpoint{}, nil, log.L()) require.Regexp(t, `failed to tables\.TableFromMeta.*`, err.Error()) } @@ -218,7 +218,7 @@ func TestPreCheckFailed(t *testing.T) { metaMgrBuilder: failMetaMgrBuilder{}, checkTemplate: NewSimpleTemplate(), tidbGlue: g, - errorMgr: errormanager.New(nil, cfg), + errorMgr: errormanager.New(nil, cfg, log.L()), } mock.ExpectBegin() diff --git a/br/pkg/lightning/restore/table_restore.go b/br/pkg/lightning/restore/table_restore.go index feedb2d47681e..491a59fa1c33b 100644 --- a/br/pkg/lightning/restore/table_restore.go +++ b/br/pkg/lightning/restore/table_restore.go @@ -56,6 +56,8 @@ type TableRestore struct { logger log.Logger ignoreColumns map[string]struct{} + rowIDLock sync.Mutex + curMaxRowID int64 } func NewTableRestore( @@ -65,6 +67,7 @@ func NewTableRestore( tableInfo *checkpoints.TidbTableInfo, cp *checkpoints.TableCheckpoint, ignoreColumns map[string]struct{}, + logger log.Logger, ) (*TableRestore, error) { idAlloc := kv.NewPanickingAllocators(cp.AllocBase) tbl, err := tables.TableFromMeta(idAlloc, tableInfo.Core) @@ -79,7 +82,7 @@ func NewTableRestore( tableMeta: tableMeta, encTable: tbl, alloc: idAlloc, - logger: log.With(zap.String("table", tableName)), + logger: logger.With(zap.String("table", tableName)), ignoreColumns: ignoreColumns, }, nil } @@ -116,7 +119,11 @@ func (tr *TableRestore) populateChunks(ctx context.Context, rc *Controller, cp * Timestamp: timestamp, } if len(chunk.Chunk.Columns) > 0 { - perms, err := parseColumnPermutations(tr.tableInfo.Core, chunk.Chunk.Columns, tr.ignoreColumns) + perms, err := parseColumnPermutations( + tr.tableInfo.Core, + chunk.Chunk.Columns, + tr.ignoreColumns, + log.FromContext(ctx)) if err != nil { return errors.Trace(err) } @@ -143,6 +150,9 @@ func (tr *TableRestore) RebaseChunkRowIDs(cp *checkpoints.TableCheckpoint, rowID for _, chunk := range engine.Chunks { chunk.Chunk.PrevRowIDMax += rowIDBase chunk.Chunk.RowIDMax += rowIDBase + if chunk.Chunk.RowIDMax > tr.curMaxRowID { + tr.curMaxRowID = chunk.Chunk.RowIDMax + } } } } @@ -161,7 +171,7 @@ func (tr *TableRestore) RebaseChunkRowIDs(cp *checkpoints.TableCheckpoint, rowID // // The argument `columns` _must_ be in lower case. func (tr *TableRestore) initializeColumns(columns []string, ccp *checkpoints.ChunkCheckpoint) error { - colPerm, err := createColumnPermutation(columns, tr.ignoreColumns, tr.tableInfo.Core) + colPerm, err := createColumnPermutation(columns, tr.ignoreColumns, tr.tableInfo.Core, tr.logger) if err != nil { return err } @@ -169,7 +179,12 @@ func (tr *TableRestore) initializeColumns(columns []string, ccp *checkpoints.Chu return nil } -func createColumnPermutation(columns []string, ignoreColumns map[string]struct{}, tableInfo *model.TableInfo) ([]int, error) { +func createColumnPermutation( + columns []string, + ignoreColumns map[string]struct{}, + tableInfo *model.TableInfo, + logger log.Logger, +) ([]int, error) { var colPerm []int if len(columns) == 0 { colPerm = make([]int, 0, len(tableInfo.Columns)+1) @@ -190,7 +205,7 @@ func createColumnPermutation(columns []string, ignoreColumns map[string]struct{} } } else { var err error - colPerm, err = parseColumnPermutations(tableInfo, columns, ignoreColumns) + colPerm, err = parseColumnPermutations(tableInfo, columns, ignoreColumns, logger) if err != nil { return nil, errors.Trace(err) } @@ -457,6 +472,8 @@ func (tr *TableRestore) restoreEngine( cancel() } + metrics, _ := metric.FromContext(ctx) + // Restore table data for chunkIndex, chunk := range cp.Chunks { if chunk.Chunk.Offset >= chunk.Chunk.EndOffset { @@ -493,7 +510,7 @@ func (tr *TableRestore) restoreEngine( // 2. sql -> kvs // 3. load kvs data (into kv deliver server) // 4. flush kvs data (into tikv node) - cr, err := newChunkRestore(ctx, chunkIndex, rc.cfg, chunk, rc.ioWorkers, rc.store, tr.tableInfo) + cr, err := newChunkRestore(ctx, chunkIndex, rc.cfg, chunk, rc.ioWorkers, rc.store, tr.tableInfo, tr) if err != nil { setError(err) break @@ -501,7 +518,9 @@ func (tr *TableRestore) restoreEngine( var remainChunkCnt float64 if chunk.Chunk.Offset < chunk.Chunk.EndOffset { remainChunkCnt = float64(chunk.Chunk.EndOffset-chunk.Chunk.Offset) / float64(chunk.Chunk.EndOffset-chunk.Key.Offset) - metric.ChunkCounter.WithLabelValues(metric.ChunkStatePending).Add(remainChunkCnt) + if metrics != nil { + metrics.ChunkCounter.WithLabelValues(metric.ChunkStatePending).Add(remainChunkCnt) + } } dataWriter, err := dataEngine.LocalWriter(ctx, dataWriterCfg) @@ -528,7 +547,9 @@ func (tr *TableRestore) restoreEngine( wg.Done() rc.regionWorkers.Recycle(w) }() - metric.ChunkCounter.WithLabelValues(metric.ChunkStateRunning).Add(remainChunkCnt) + if metrics != nil { + metrics.ChunkCounter.WithLabelValues(metric.ChunkStateRunning).Add(remainChunkCnt) + } err := cr.restore(ctx, tr, engineID, dataWriter, indexWriter, rc) var dataFlushStatus, indexFlushStaus backend.ChunkFlushStatus if err == nil { @@ -538,8 +559,10 @@ func (tr *TableRestore) restoreEngine( indexFlushStaus, err = indexWriter.Close(ctx) } if err == nil { - metric.ChunkCounter.WithLabelValues(metric.ChunkStateFinished).Add(remainChunkCnt) - metric.BytesCounter.WithLabelValues(metric.BytesStateRestoreWritten).Add(float64(cr.chunk.Checksum.SumSize())) + if metrics != nil { + metrics.ChunkCounter.WithLabelValues(metric.ChunkStateFinished).Add(remainChunkCnt) + metrics.BytesCounter.WithLabelValues(metric.BytesStateRestoreWritten).Add(float64(cr.chunk.Checksum.SumSize())) + } if dataFlushStatus != nil && indexFlushStaus != nil { if dataFlushStatus.Flushed() && indexFlushStaus.Flushed() { saveCheckpoint(rc, tr, engineID, cr.chunk) @@ -554,7 +577,9 @@ func (tr *TableRestore) restoreEngine( } } } else { - metric.ChunkCounter.WithLabelValues(metric.ChunkStateFailed).Add(remainChunkCnt) + if metrics != nil { + metrics.ChunkCounter.WithLabelValues(metric.ChunkStateFailed).Add(remainChunkCnt) + } setError(err) } }(restoreWorker, cr) @@ -605,11 +630,11 @@ func (tr *TableRestore) restoreEngine( if rc.isLocalBackend() && common.IsContextCanceledError(err) { // ctx is canceled, so to avoid Close engine failed, we use `context.Background()` here if _, err2 := dataEngine.Close(context.Background(), dataEngineCfg); err2 != nil { - log.L().Warn("flush all chunk checkpoints failed before manually exits", zap.Error(err2)) + log.FromContext(ctx).Warn("flush all chunk checkpoints failed before manually exits", zap.Error(err2)) return nil, errors.Trace(err) } if err2 := trySavePendingChunks(context.Background()); err2 != nil { - log.L().Warn("flush all chunk checkpoints failed before manually exits", zap.Error(err2)) + log.FromContext(ctx).Warn("flush all chunk checkpoints failed before manually exits", zap.Error(err2)) } } return nil, errors.Trace(err) @@ -849,7 +874,12 @@ func (tr *TableRestore) postProcess( return true, nil } -func parseColumnPermutations(tableInfo *model.TableInfo, columns []string, ignoreColumns map[string]struct{}) ([]int, error) { +func parseColumnPermutations( + tableInfo *model.TableInfo, + columns []string, + ignoreColumns map[string]struct{}, + logger log.Logger, +) ([]int, error) { colPerm := make([]int, 0, len(tableInfo.Columns)+1) columnMap := make(map[string]int) @@ -881,7 +911,7 @@ func parseColumnPermutations(tableInfo *model.TableInfo, columns []string, ignor if _, ignore := ignoreColumns[colInfo.Name.L]; !ignore { colPerm = append(colPerm, i) } else { - log.L().Debug("column ignored by user requirements", + logger.Debug("column ignored by user requirements", zap.Stringer("table", tableInfo.Name), zap.String("colName", colInfo.Name.O), zap.Stringer("colType", &colInfo.FieldType), @@ -890,7 +920,7 @@ func parseColumnPermutations(tableInfo *model.TableInfo, columns []string, ignor } } else { if len(colInfo.GeneratedExprString) == 0 { - log.L().Warn("column missing from data file, going to fill with default value", + logger.Warn("column missing from data file, going to fill with default value", zap.Stringer("table", tableInfo.Name), zap.String("colName", colInfo.Name.O), zap.Stringer("colType", &colInfo.FieldType), @@ -955,7 +985,9 @@ func (tr *TableRestore) importKV( return errors.Trace(err) } - metric.ImportSecondsHistogram.Observe(dur.Seconds()) + if m, ok := metric.FromContext(ctx); ok { + m.ImportSecondsHistogram.Observe(dur.Seconds()) + } failpoint.Inject("SlowDownImport", func() {}) @@ -1021,3 +1053,31 @@ func estimateCompactionThreshold(cp *checkpoints.TableCheckpoint, factor int64) return threshold } + +func (tr *TableRestore) allocateRowIDs(newRowCount int64, rc *Controller) (int64, int64, error) { + tr.rowIDLock.Lock() + defer tr.rowIDLock.Unlock() + metaMgr := rc.metaMgrBuilder.TableMetaMgr(tr) + // try to re-allocate from downstream + // if we are using parallel import, rowID should be reconciled globally. + // Otherwise, this function will simply return 0. + newRowIDBase, newRowIDMax, err := metaMgr.ReallocTableRowIDs(context.Background(), newRowCount) + if err != nil { + return 0, 0, err + } + // TODO: refinement: currently, when we're not using SSTMode + incremental, + // metadata of the table restore is not maintained globally. + // So we have to deviate this two disparate situations here and make + // code complexer. + var rowIDBase int64 + if newRowIDMax != 0 { + // re-alloc from downstream + rowIDBase = newRowIDBase + tr.curMaxRowID = newRowIDMax + } else { + // single import mode: re-allocate rowID from memory + rowIDBase = tr.curMaxRowID + 1 + tr.curMaxRowID += newRowCount + } + return rowIDBase, tr.curMaxRowID, nil +} diff --git a/br/pkg/lightning/restore/table_restore_test.go b/br/pkg/lightning/restore/table_restore_test.go index 2083a51f98746..87aa389c7167b 100644 --- a/br/pkg/lightning/restore/table_restore_test.go +++ b/br/pkg/lightning/restore/table_restore_test.go @@ -61,6 +61,7 @@ import ( "github.com/pingcap/tidb/table/tables" "github.com/pingcap/tidb/types" tmock "github.com/pingcap/tidb/util/mock" + "github.com/pingcap/tidb/util/promutil" filter "github.com/pingcap/tidb/util/table-filter" "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" @@ -162,7 +163,7 @@ func (s *tableRestoreSuiteBase) setupSuite(t *testing.T) { func (s *tableRestoreSuiteBase) setupTest(t *testing.T) { // Collect into the test TableRestore structure var err error - s.tr, err = NewTableRestore("`db`.`table`", s.tableMeta, s.dbInfo, s.tableInfo, &checkpoints.TableCheckpoint{}, nil) + s.tr, err = NewTableRestore("`db`.`table`", s.tableMeta, s.dbInfo, s.tableInfo, &checkpoints.TableCheckpoint{}, nil, log.L()) require.NoError(t, err) s.cfg = config.NewConfig() @@ -197,6 +198,7 @@ func (s *tableRestoreSuite) TestPopulateChunks() { Engines: make(map[int32]*checkpoints.EngineCheckpoint), } + s.cfg.Mydumper.CSV.Header = false rc := &Controller{cfg: s.cfg, ioWorkers: worker.NewPool(context.Background(), 1, "io"), store: s.store} err := s.tr.populateChunks(context.Background(), rc, cp) require.NoError(s.T(), err) @@ -215,7 +217,7 @@ func (s *tableRestoreSuite) TestPopulateChunks() { Offset: 0, EndOffset: 37, PrevRowIDMax: 0, - RowIDMax: 7, // 37 bytes with 3 columns can store at most 7 rows. + RowIDMax: 1, }, Timestamp: 1234567897, }, @@ -225,8 +227,8 @@ func (s *tableRestoreSuite) TestPopulateChunks() { Chunk: mydump.Chunk{ Offset: 0, EndOffset: 37, - PrevRowIDMax: 7, - RowIDMax: 14, + PrevRowIDMax: 1, + RowIDMax: 2, }, Timestamp: 1234567897, }, @@ -236,8 +238,8 @@ func (s *tableRestoreSuite) TestPopulateChunks() { Chunk: mydump.Chunk{ Offset: 0, EndOffset: 37, - PrevRowIDMax: 14, - RowIDMax: 21, + PrevRowIDMax: 2, + RowIDMax: 3, }, Timestamp: 1234567897, }, @@ -252,8 +254,8 @@ func (s *tableRestoreSuite) TestPopulateChunks() { Chunk: mydump.Chunk{ Offset: 0, EndOffset: 37, - PrevRowIDMax: 21, - RowIDMax: 28, + PrevRowIDMax: 3, + RowIDMax: 4, }, Timestamp: 1234567897, }, @@ -263,8 +265,8 @@ func (s *tableRestoreSuite) TestPopulateChunks() { Chunk: mydump.Chunk{ Offset: 0, EndOffset: 37, - PrevRowIDMax: 28, - RowIDMax: 35, + PrevRowIDMax: 4, + RowIDMax: 5, }, Timestamp: 1234567897, }, @@ -274,8 +276,8 @@ func (s *tableRestoreSuite) TestPopulateChunks() { Chunk: mydump.Chunk{ Offset: 0, EndOffset: 37, - PrevRowIDMax: 35, - RowIDMax: 42, + PrevRowIDMax: 5, + RowIDMax: 6, }, Timestamp: 1234567897, }, @@ -290,8 +292,8 @@ func (s *tableRestoreSuite) TestPopulateChunks() { Chunk: mydump.Chunk{ Offset: 0, EndOffset: 14, - PrevRowIDMax: 42, - RowIDMax: 46, + PrevRowIDMax: 6, + RowIDMax: 10, }, Timestamp: 1234567897, }, @@ -356,12 +358,12 @@ func (s *tableRestoreSuite) TestRestoreEngineFailed() { require.NoError(s.T(), err) _, indexUUID := backend.MakeUUID("`db`.`table`", -1) _, dataUUID := backend.MakeUUID("`db`.`table`", 0) - realBackend := tidb.NewTiDBBackend(nil, "replace", nil) + realBackend := tidb.NewTiDBBackend(ctx, nil, "replace", nil) mockBackend.EXPECT().OpenEngine(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil) mockBackend.EXPECT().OpenEngine(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil) mockBackend.EXPECT().CloseEngine(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil).AnyTimes() - mockBackend.EXPECT().NewEncoder(gomock.Any(), gomock.Any()). - Return(realBackend.NewEncoder(tbl, &kv.SessionOptions{})). + mockBackend.EXPECT().NewEncoder(gomock.Any(), gomock.Any(), gomock.Any()). + Return(realBackend.NewEncoder(ctx, tbl, &kv.SessionOptions{})). AnyTimes() mockBackend.EXPECT().MakeEmptyRows().Return(realBackend.MakeEmptyRows()).AnyTimes() mockBackend.EXPECT().LocalWriter(gomock.Any(), gomock.Any(), dataUUID).Return(noop.Writer{}, nil) @@ -453,7 +455,7 @@ func (s *tableRestoreSuite) TestPopulateChunksCSVHeader() { cfg.Mydumper.StrictFormat = true rc := &Controller{cfg: cfg, ioWorkers: worker.NewPool(context.Background(), 1, "io"), store: store} - tr, err := NewTableRestore("`db`.`table`", tableMeta, s.dbInfo, s.tableInfo, &checkpoints.TableCheckpoint{}, nil) + tr, err := NewTableRestore("`db`.`table`", tableMeta, s.dbInfo, s.tableInfo, &checkpoints.TableCheckpoint{}, nil, log.L()) require.NoError(s.T(), err) require.NoError(s.T(), tr.populateChunks(context.Background(), rc, cp)) @@ -471,7 +473,7 @@ func (s *tableRestoreSuite) TestPopulateChunksCSVHeader() { Offset: 0, EndOffset: 14, PrevRowIDMax: 0, - RowIDMax: 4, // 37 bytes with 3 columns can store at most 7 rows. + RowIDMax: 4, // 14 bytes and 3 byte for each row }, Timestamp: 1234567897, }, @@ -482,7 +484,7 @@ func (s *tableRestoreSuite) TestPopulateChunksCSVHeader() { Offset: 0, EndOffset: 10, PrevRowIDMax: 4, - RowIDMax: 7, + RowIDMax: 9, // 10 bytes and 2 byte for each row }, Timestamp: 1234567897, }, @@ -493,8 +495,8 @@ func (s *tableRestoreSuite) TestPopulateChunksCSVHeader() { Chunk: mydump.Chunk{ Offset: 6, EndOffset: 52, - PrevRowIDMax: 7, - RowIDMax: 20, + PrevRowIDMax: 9, + RowIDMax: 13, Columns: []string{"a", "b", "c"}, }, @@ -507,8 +509,8 @@ func (s *tableRestoreSuite) TestPopulateChunksCSVHeader() { Chunk: mydump.Chunk{ Offset: 52, EndOffset: 60, - PrevRowIDMax: 20, - RowIDMax: 22, + PrevRowIDMax: 13, + RowIDMax: 14, Columns: []string{"a", "b", "c"}, }, Timestamp: 1234567897, @@ -520,8 +522,8 @@ func (s *tableRestoreSuite) TestPopulateChunksCSVHeader() { Chunk: mydump.Chunk{ Offset: 6, EndOffset: 48, - PrevRowIDMax: 22, - RowIDMax: 35, + PrevRowIDMax: 14, + RowIDMax: 17, Columns: []string{"c", "a", "b"}, }, Timestamp: 1234567897, @@ -538,8 +540,8 @@ func (s *tableRestoreSuite) TestPopulateChunksCSVHeader() { Chunk: mydump.Chunk{ Offset: 48, EndOffset: 101, - PrevRowIDMax: 35, - RowIDMax: 48, + PrevRowIDMax: 17, + RowIDMax: 20, Columns: []string{"c", "a", "b"}, }, Timestamp: 1234567897, @@ -551,8 +553,8 @@ func (s *tableRestoreSuite) TestPopulateChunksCSVHeader() { Chunk: mydump.Chunk{ Offset: 101, EndOffset: 102, - PrevRowIDMax: 48, - RowIDMax: 48, + PrevRowIDMax: 20, + RowIDMax: 21, Columns: []string{"c", "a", "b"}, }, Timestamp: 1234567897, @@ -564,8 +566,8 @@ func (s *tableRestoreSuite) TestPopulateChunksCSVHeader() { Chunk: mydump.Chunk{ Offset: 4, EndOffset: 59, - PrevRowIDMax: 48, - RowIDMax: 61, + PrevRowIDMax: 21, + RowIDMax: 23, Columns: []string{"b", "c"}, }, Timestamp: 1234567897, @@ -582,8 +584,8 @@ func (s *tableRestoreSuite) TestPopulateChunksCSVHeader() { Chunk: mydump.Chunk{ Offset: 59, EndOffset: 60, - PrevRowIDMax: 61, - RowIDMax: 61, + PrevRowIDMax: 23, + RowIDMax: 24, Columns: []string{"b", "c"}, }, Timestamp: 1234567897, @@ -718,7 +720,7 @@ func (s *tableRestoreSuite) TestInitializeColumnsGenerated() { require.NoError(s.T(), err) core.State = model.StatePublic tableInfo := &checkpoints.TidbTableInfo{Name: "table", DB: "db", Core: core} - s.tr, err = NewTableRestore("`db`.`table`", s.tableMeta, s.dbInfo, tableInfo, &checkpoints.TableCheckpoint{}, nil) + s.tr, err = NewTableRestore("`db`.`table`", s.tableMeta, s.dbInfo, tableInfo, &checkpoints.TableCheckpoint{}, nil, log.L()) require.NoError(s.T(), err) ccp := &checkpoints.ChunkCheckpoint{} @@ -879,12 +881,13 @@ func (s *tableRestoreSuite) TestTableRestoreMetrics() { controller := gomock.NewController(s.T()) defer controller.Finish() - chunkPendingBase := metric.ReadCounter(metric.ChunkCounter.WithLabelValues(metric.ChunkStatePending)) - chunkFinishedBase := metric.ReadCounter(metric.ChunkCounter.WithLabelValues(metric.ChunkStatePending)) - engineFinishedBase := metric.ReadCounter(metric.ProcessedEngineCounter.WithLabelValues("imported", metric.TableResultSuccess)) - tableFinishedBase := metric.ReadCounter(metric.TableCounter.WithLabelValues("index_imported", metric.TableResultSuccess)) + metrics := metric.NewMetrics(promutil.NewDefaultFactory()) + chunkPendingBase := metric.ReadCounter(metrics.ChunkCounter.WithLabelValues(metric.ChunkStatePending)) + chunkFinishedBase := metric.ReadCounter(metrics.ChunkCounter.WithLabelValues(metric.ChunkStatePending)) + engineFinishedBase := metric.ReadCounter(metrics.ProcessedEngineCounter.WithLabelValues("imported", metric.TableResultSuccess)) + tableFinishedBase := metric.ReadCounter(metrics.TableCounter.WithLabelValues("index_imported", metric.TableResultSuccess)) - ctx := context.Background() + ctx := metric.NewContext(context.Background(), metrics) chptCh := make(chan saveCp) defer close(chptCh) cfg := config.NewConfig() @@ -935,7 +938,7 @@ func (s *tableRestoreSuite) TestTableRestoreMetrics() { closedEngineLimit: worker.NewPool(ctx, 1, "closed_engine"), store: s.store, metaMgrBuilder: noopMetaMgrBuilder{}, - errorMgr: errormanager.New(nil, cfg), + errorMgr: errormanager.New(nil, cfg, log.L()), taskMgr: noopTaskMetaMgr{}, } go func() { @@ -956,15 +959,15 @@ func (s *tableRestoreSuite) TestTableRestoreMetrics() { err = rc.restoreTables(ctx) require.NoError(s.T(), err) - chunkPending := metric.ReadCounter(metric.ChunkCounter.WithLabelValues(metric.ChunkStatePending)) - chunkFinished := metric.ReadCounter(metric.ChunkCounter.WithLabelValues(metric.ChunkStatePending)) + chunkPending := metric.ReadCounter(metrics.ChunkCounter.WithLabelValues(metric.ChunkStatePending)) + chunkFinished := metric.ReadCounter(metrics.ChunkCounter.WithLabelValues(metric.ChunkStatePending)) require.Equal(s.T(), float64(7), chunkPending-chunkPendingBase) require.Equal(s.T(), chunkPending-chunkPendingBase, chunkFinished-chunkFinishedBase) - engineFinished := metric.ReadCounter(metric.ProcessedEngineCounter.WithLabelValues("imported", metric.TableResultSuccess)) + engineFinished := metric.ReadCounter(metrics.ProcessedEngineCounter.WithLabelValues("imported", metric.TableResultSuccess)) require.Equal(s.T(), float64(8), engineFinished-engineFinishedBase) - tableFinished := metric.ReadCounter(metric.TableCounter.WithLabelValues("index_imported", metric.TableResultSuccess)) + tableFinished := metric.ReadCounter(metrics.TableCounter.WithLabelValues("index_imported", metric.TableResultSuccess)) require.Equal(s.T(), float64(1), tableFinished-tableFinishedBase) } @@ -987,7 +990,7 @@ func (s *tableRestoreSuite) TestSaveStatusCheckpoint() { checkpointsDB: checkpoints.NewNullCheckpointsDB(), } rc.checkpointsWg.Add(1) - go rc.listenCheckpointUpdates() + go rc.listenCheckpointUpdates(log.L()) rc.errorSummaries = makeErrorSummaries(log.L()) @@ -1324,11 +1327,11 @@ func (s *tableRestoreSuite) TestEstimate() { require.NoError(s.T(), err) mockBackend.EXPECT().MakeEmptyRows().Return(kv.MakeRowsFromKvPairs(nil)).AnyTimes() - mockBackend.EXPECT().NewEncoder(gomock.Any(), gomock.Any()).Return(kv.NewTableKVEncoder(tbl, &kv.SessionOptions{ + mockBackend.EXPECT().NewEncoder(gomock.Any(), gomock.Any(), gomock.Any()).Return(kv.NewTableKVEncoder(tbl, &kv.SessionOptions{ SQLMode: s.cfg.TiDB.SQLMode, Timestamp: 0, AutoRandomSeed: 0, - })).AnyTimes() + }, nil, log.L())).AnyTimes() importer := backend.MakeBackend(mockBackend) s.cfg.TikvImporter.Backend = config.BackendLocal diff --git a/br/pkg/lightning/restore/tidb.go b/br/pkg/lightning/restore/tidb.go index 0d09b8bd3f576..9cf278a67d1cc 100644 --- a/br/pkg/lightning/restore/tidb.go +++ b/br/pkg/lightning/restore/tidb.go @@ -104,7 +104,7 @@ func DBFromConfig(ctx context.Context, dsn config.DBStore) (*sql.DB, error) { for k, v := range vars { q := fmt.Sprintf("SET SESSION %s = '%s';", k, v) if _, err1 := db.ExecContext(ctx, q); err1 != nil { - log.L().Warn("set session variable failed, will skip this query", zap.String("query", q), + log.FromContext(ctx).Warn("set session variable failed, will skip this query", zap.String("query", q), zap.Error(err1)) delete(vars, k) } @@ -142,7 +142,7 @@ func (timgr *TiDBManager) Close() { } func InitSchema(ctx context.Context, g glue.Glue, database string, tablesSchema map[string]string) error { - logger := log.With(zap.String("db", database)) + logger := log.FromContext(ctx).With(zap.String("db", database)) sqlExecutor := g.GetSQLExecutor() var createDatabase strings.Builder @@ -223,7 +223,7 @@ func createIfNotExistsStmt(p *parser.Parser, createTable, dbName, tblName string func (timgr *TiDBManager) DropTable(ctx context.Context, tableName string) error { sql := common.SQLWithRetry{ DB: timgr.db, - Logger: log.With(zap.String("table", tableName)), + Logger: log.FromContext(ctx).With(zap.String("table", tableName)), } return sql.Exec(ctx, "drop table", "DROP TABLE "+tableName) } @@ -258,10 +258,14 @@ func LoadSchemaInfo( tableName := tblInfo.Name.String() if tblInfo.State != model.StatePublic { err := errors.Errorf("table [%s.%s] state is not public", schema.Name, tableName) - metric.RecordTableCount(metric.TableStatePending, err) + if m, ok := metric.FromContext(ctx); ok { + m.RecordTableCount(metric.TableStatePending, err) + } return nil, err } - metric.RecordTableCount(metric.TableStatePending, err) + if m, ok := metric.FromContext(ctx); ok { + m.RecordTableCount(metric.TableStatePending, err) + } if err != nil { return nil, errors.Trace(err) } @@ -283,7 +287,7 @@ func LoadSchemaInfo( func ObtainGCLifeTime(ctx context.Context, db *sql.DB) (string, error) { var gcLifeTime string - err := common.SQLWithRetry{DB: db, Logger: log.L()}.QueryRow( + err := common.SQLWithRetry{DB: db, Logger: log.FromContext(ctx)}.QueryRow( ctx, "obtain GC lifetime", "SELECT VARIABLE_VALUE FROM mysql.tidb WHERE VARIABLE_NAME = 'tikv_gc_life_time'", @@ -295,7 +299,7 @@ func ObtainGCLifeTime(ctx context.Context, db *sql.DB) (string, error) { func UpdateGCLifeTime(ctx context.Context, db *sql.DB, gcLifeTime string) error { sql := common.SQLWithRetry{ DB: db, - Logger: log.With(zap.String("gcLifeTime", gcLifeTime)), + Logger: log.FromContext(ctx).With(zap.String("gcLifeTime", gcLifeTime)), } return sql.Exec(ctx, "update GC lifetime", "UPDATE mysql.tidb SET VARIABLE_VALUE = ? WHERE VARIABLE_NAME = 'tikv_gc_life_time'", @@ -322,10 +326,10 @@ func ObtainImportantVariables(ctx context.Context, g glue.SQLExecutor, needTiDBV } } query.WriteString("')") - kvs, err := g.QueryStringsWithLog(ctx, query.String(), "obtain system variables", log.L()) + kvs, err := g.QueryStringsWithLog(ctx, query.String(), "obtain system variables", log.FromContext(ctx)) if err != nil { // error is not fatal - log.L().Warn("obtain system variables failed, use default variables instead", log.ShortError(err)) + log.FromContext(ctx).Warn("obtain system variables failed, use default variables instead", log.ShortError(err)) } // convert result into a map. fill in any missing variables with default values. @@ -355,7 +359,7 @@ func ObtainNewCollationEnabled(ctx context.Context, g glue.SQLExecutor) (bool, e ctx, "SELECT variable_value FROM mysql.tidb WHERE variable_name = 'new_collation_enabled'", "obtain new collation enabled", - log.L(), + log.FromContext(ctx), ) if err == nil && newCollationVal == "True" { newCollationEnabled = true @@ -375,7 +379,7 @@ func ObtainNewCollationEnabled(ctx context.Context, g glue.SQLExecutor) (bool, e // See: https://github.com/pingcap/tidb/blob/64698ef9a3358bfd0fdc323996bb7928a56cadca/ddl/ddl_api.go#L2528-L2533 func AlterAutoIncrement(ctx context.Context, g glue.SQLExecutor, tableName string, incr uint64) error { var query string - logger := log.With(zap.String("table", tableName), zap.Uint64("auto_increment", incr)) + logger := log.FromContext(ctx).With(zap.String("table", tableName), zap.Uint64("auto_increment", incr)) if incr > math.MaxInt64 { // automatically set max value logger.Warn("auto_increment out of the maximum value TiDB supports, automatically set to the max", zap.Uint64("auto_increment", incr)) @@ -397,7 +401,7 @@ func AlterAutoIncrement(ctx context.Context, g glue.SQLExecutor, tableName strin } func AlterAutoRandom(ctx context.Context, g glue.SQLExecutor, tableName string, randomBase uint64, maxAutoRandom uint64) error { - logger := log.With(zap.String("table", tableName), zap.Uint64("auto_random", randomBase)) + logger := log.FromContext(ctx).With(zap.String("table", tableName), zap.Uint64("auto_random", randomBase)) if randomBase == maxAutoRandom+1 { // insert a tuple with key maxAutoRandom randomBase = maxAutoRandom diff --git a/br/pkg/lightning/restore/tidb_test.go b/br/pkg/lightning/restore/tidb_test.go index 5d05b041e6fdb..69c5d6e43df8e 100644 --- a/br/pkg/lightning/restore/tidb_test.go +++ b/br/pkg/lightning/restore/tidb_test.go @@ -33,6 +33,7 @@ import ( "github.com/pingcap/tidb/parser/model" tmysql "github.com/pingcap/tidb/parser/mysql" "github.com/pingcap/tidb/util/mock" + "github.com/pingcap/tidb/util/promutil" "github.com/stretchr/testify/require" ) @@ -277,9 +278,11 @@ func TestDropTable(t *testing.T) { func TestLoadSchemaInfo(t *testing.T) { s, clean := newTiDBSuite(t) defer clean() - ctx := context.Background() - tableCntBefore := metric.ReadCounter(metric.TableCounter.WithLabelValues(metric.TableStatePending, metric.TableResultSuccess)) + metrics := metric.NewMetrics(promutil.NewDefaultFactory()) + ctx := metric.NewContext(context.Background(), metrics) + + tableCntBefore := metric.ReadCounter(metrics.TableCounter.WithLabelValues(metric.TableStatePending, metric.TableResultSuccess)) // Prepare the mock reply. nodes, _, err := s.timgr.parser.Parse( @@ -351,7 +354,7 @@ func TestLoadSchemaInfo(t *testing.T) { }, }, loaded) - tableCntAfter := metric.ReadCounter(metric.TableCounter.WithLabelValues(metric.TableStatePending, metric.TableResultSuccess)) + tableCntAfter := metric.ReadCounter(metrics.TableCounter.WithLabelValues(metric.TableStatePending, metric.TableResultSuccess)) require.Equal(t, 3.0, tableCntAfter-tableCntBefore) } diff --git a/br/pkg/lightning/run_options.go b/br/pkg/lightning/run_options.go index 8182794df3eaa..a7b5b90770c02 100644 --- a/br/pkg/lightning/run_options.go +++ b/br/pkg/lightning/run_options.go @@ -16,7 +16,10 @@ package lightning import ( "github.com/pingcap/tidb/br/pkg/lightning/glue" + "github.com/pingcap/tidb/br/pkg/lightning/log" "github.com/pingcap/tidb/br/pkg/storage" + "github.com/pingcap/tidb/util/promutil" + "go.uber.org/zap" ) type options struct { @@ -24,6 +27,9 @@ type options struct { dumpFileStorage storage.ExternalStorage checkpointStorage storage.ExternalStorage checkpointName string + promFactory promutil.Factory + promRegistry promutil.Registry + logger log.Logger } type Option func(*options) @@ -52,3 +58,26 @@ func WithCheckpointStorage(s storage.ExternalStorage, cpName string) Option { o.checkpointName = cpName } } + +// WithPromFactory sets the prometheus factory to a lightning task. +func WithPromFactory(f promutil.Factory) Option { + return func(o *options) { + o.promFactory = f + } +} + +// WithPromRegistry sets the prometheus registry to a lightning task. +// The task metrics will be registered to the registry before the task starts +// and unregistered after the task ends. +func WithPromRegistry(r promutil.Registry) Option { + return func(o *options) { + o.promRegistry = r + } +} + +// WithLogger sets the logger to a lightning task. +func WithLogger(logger *zap.Logger) Option { + return func(o *options) { + o.logger = log.Logger{Logger: logger} + } +} diff --git a/br/pkg/lightning/tikv/BUILD.bazel b/br/pkg/lightning/tikv/BUILD.bazel new file mode 100644 index 0000000000000..8de419abe3389 --- /dev/null +++ b/br/pkg/lightning/tikv/BUILD.bazel @@ -0,0 +1,36 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "tikv", + srcs = ["tikv.go"], + importpath = "github.com/pingcap/tidb/br/pkg/lightning/tikv", + visibility = ["//visibility:public"], + deps = [ + "//br/pkg/lightning/common", + "//br/pkg/lightning/log", + "//br/pkg/pdutil", + "//br/pkg/version", + "//parser/model", + "@com_github_coreos_go_semver//semver", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_kvproto//pkg/debugpb", + "@com_github_pingcap_kvproto//pkg/import_sstpb", + "@org_golang_google_grpc//:grpc", + "@org_golang_google_grpc//codes", + "@org_golang_google_grpc//status", + "@org_golang_x_sync//errgroup", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "tikv_test", + srcs = ["tikv_test.go"], + deps = [ + ":tikv", + "//br/pkg/lightning/common", + "@com_github_coreos_go_semver//semver", + "@com_github_pingcap_kvproto//pkg/import_sstpb", + "@com_github_stretchr_testify//require", + ], +) diff --git a/br/pkg/lightning/verification/BUILD.bazel b/br/pkg/lightning/verification/BUILD.bazel new file mode 100644 index 0000000000000..daea16acd40dc --- /dev/null +++ b/br/pkg/lightning/verification/BUILD.bazel @@ -0,0 +1,22 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "verification", + srcs = ["checksum.go"], + importpath = "github.com/pingcap/tidb/br/pkg/lightning/verification", + visibility = ["//visibility:public"], + deps = [ + "//br/pkg/lightning/common", + "@org_uber_go_zap//zapcore", + ], +) + +go_test( + name = "verification_test", + srcs = ["checksum_test.go"], + deps = [ + ":verification", + "//br/pkg/lightning/common", + "@com_github_stretchr_testify//require", + ], +) diff --git a/br/pkg/lightning/web/BUILD.bazel b/br/pkg/lightning/web/BUILD.bazel new file mode 100644 index 0000000000000..842eb48fb3dd3 --- /dev/null +++ b/br/pkg/lightning/web/BUILD.bazel @@ -0,0 +1,19 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "web", + srcs = [ + "progress.go", + "res.go", + "res_vfsdata.go", + ], + importpath = "github.com/pingcap/tidb/br/pkg/lightning/web", + visibility = ["//visibility:public"], + deps = [ + "//br/pkg/lightning/checkpoints", + "//br/pkg/lightning/common", + "//br/pkg/lightning/mydump", + "@com_github_pingcap_errors//:errors", + "@org_uber_go_atomic//:atomic", + ], +) diff --git a/br/pkg/lightning/worker/BUILD.bazel b/br/pkg/lightning/worker/BUILD.bazel new file mode 100644 index 0000000000000..77de52ee964cc --- /dev/null +++ b/br/pkg/lightning/worker/BUILD.bazel @@ -0,0 +1,18 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "worker", + srcs = ["worker.go"], + importpath = "github.com/pingcap/tidb/br/pkg/lightning/worker", + visibility = ["//visibility:public"], + deps = ["//br/pkg/lightning/metric"], +) + +go_test( + name = "worker_test", + srcs = ["worker_test.go"], + deps = [ + ":worker", + "@com_github_stretchr_testify//require", + ], +) diff --git a/br/pkg/lightning/worker/worker.go b/br/pkg/lightning/worker/worker.go index 8690798269150..73bab3d53f521 100644 --- a/br/pkg/lightning/worker/worker.go +++ b/br/pkg/lightning/worker/worker.go @@ -25,6 +25,7 @@ type Pool struct { limit int workers chan *Worker name string + metrics *metric.Metrics } type Worker struct { @@ -37,19 +38,25 @@ func NewPool(ctx context.Context, limit int, name string) *Pool { workers <- &Worker{ID: int64(i + 1)} } - metric.IdleWorkersGauge.WithLabelValues(name).Set(float64(limit)) + metrics, ok := metric.FromContext(ctx) + if ok { + metrics.IdleWorkersGauge.WithLabelValues(name).Set(float64(limit)) + } return &Pool{ limit: limit, workers: workers, name: name, + metrics: metrics, } } func (pool *Pool) Apply() *Worker { start := time.Now() worker := <-pool.workers - metric.IdleWorkersGauge.WithLabelValues(pool.name).Set(float64(len(pool.workers))) - metric.ApplyWorkerSecondsHistogram.WithLabelValues(pool.name).Observe(time.Since(start).Seconds()) + if pool.metrics != nil { + pool.metrics.IdleWorkersGauge.WithLabelValues(pool.name).Set(float64(len(pool.workers))) + pool.metrics.ApplyWorkerSecondsHistogram.WithLabelValues(pool.name).Observe(time.Since(start).Seconds()) + } return worker } @@ -58,7 +65,9 @@ func (pool *Pool) Recycle(worker *Worker) { panic("invalid restore worker") } pool.workers <- worker - metric.IdleWorkersGauge.WithLabelValues(pool.name).Set(float64(len(pool.workers))) + if pool.metrics != nil { + pool.metrics.IdleWorkersGauge.WithLabelValues(pool.name).Set(float64(len(pool.workers))) + } } func (pool *Pool) HasWorker() bool { diff --git a/br/pkg/logutil/BUILD.bazel b/br/pkg/logutil/BUILD.bazel new file mode 100644 index 0000000000000..5a8df97911de6 --- /dev/null +++ b/br/pkg/logutil/BUILD.bazel @@ -0,0 +1,43 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "logutil", + srcs = [ + "context.go", + "logging.go", + "rate.go", + ], + importpath = "github.com/pingcap/tidb/br/pkg/logutil", + visibility = ["//visibility:public"], + deps = [ + "//br/pkg/lightning/metric", + "//br/pkg/redact", + "@com_github_google_uuid//:uuid", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_kvproto//pkg/brpb", + "@com_github_pingcap_kvproto//pkg/import_sstpb", + "@com_github_pingcap_kvproto//pkg/metapb", + "@com_github_pingcap_log//:log", + "@com_github_prometheus_client_golang//prometheus", + "@org_uber_go_zap//:zap", + "@org_uber_go_zap//zapcore", + ], +) + +go_test( + name = "logutil_test", + srcs = ["logging_test.go"], + deps = [ + ":logutil", + "//br/pkg/errors", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_kvproto//pkg/brpb", + "@com_github_pingcap_kvproto//pkg/import_sstpb", + "@com_github_pingcap_kvproto//pkg/metapb", + "@com_github_prometheus_client_golang//prometheus", + "@com_github_stretchr_testify//require", + "@org_uber_go_zap//:zap", + "@org_uber_go_zap//zapcore", + "@org_uber_go_zap//zaptest/observer", + ], +) diff --git a/br/pkg/membuf/BUILD.bazel b/br/pkg/membuf/BUILD.bazel new file mode 100644 index 0000000000000..43bf5d6da93dc --- /dev/null +++ b/br/pkg/membuf/BUILD.bazel @@ -0,0 +1,15 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "membuf", + srcs = ["buffer.go"], + importpath = "github.com/pingcap/tidb/br/pkg/membuf", + visibility = ["//visibility:public"], +) + +go_test( + name = "membuf_test", + srcs = ["buffer_test.go"], + embed = [":membuf"], + deps = ["@com_github_stretchr_testify//require"], +) diff --git a/br/pkg/metautil/BUILD.bazel b/br/pkg/metautil/BUILD.bazel new file mode 100644 index 0000000000000..4a325fbe49c13 --- /dev/null +++ b/br/pkg/metautil/BUILD.bazel @@ -0,0 +1,44 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "metautil", + srcs = ["metafile.go"], + importpath = "github.com/pingcap/tidb/br/pkg/metautil", + visibility = ["//visibility:public"], + deps = [ + "//br/pkg/errors", + "//br/pkg/logutil", + "//br/pkg/storage", + "//br/pkg/summary", + "//parser/model", + "//statistics/handle", + "//tablecodec", + "//util/encrypt", + "@com_github_docker_go_units//:go-units", + "@com_github_gogo_protobuf//proto", + "@com_github_opentracing_opentracing_go//:opentracing-go", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_kvproto//pkg/brpb", + "@com_github_pingcap_kvproto//pkg/encryptionpb", + "@com_github_pingcap_log//:log", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "metautil_test", + srcs = [ + "main_test.go", + "metafile_test.go", + ], + embed = [":metautil"], + deps = [ + "//br/pkg/mock/storage", + "//testkit/testsetup", + "@com_github_golang_mock//gomock", + "@com_github_pingcap_kvproto//pkg/brpb", + "@com_github_pingcap_kvproto//pkg/encryptionpb", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/br/pkg/mock/BUILD.bazel b/br/pkg/mock/BUILD.bazel new file mode 100644 index 0000000000000..04cbf93a6dd5b --- /dev/null +++ b/br/pkg/mock/BUILD.bazel @@ -0,0 +1,61 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "mock", + srcs = [ + "backend.go", + "glue.go", + "glue_checkpoint.go", + "importer.go", + "kv.go", + "mock_cluster.go", + "s3iface.go", + ], + importpath = "github.com/pingcap/tidb/br/pkg/mock", + visibility = ["//visibility:public"], + deps = [ + "//br/pkg/lightning/backend", + "//br/pkg/lightning/backend/kv", + "//br/pkg/lightning/checkpoints", + "//br/pkg/lightning/config", + "//br/pkg/lightning/glue", + "//br/pkg/lightning/log", + "//br/pkg/lightning/verification", + "//config", + "//domain", + "//kv", + "//parser", + "//parser/ast", + "//parser/model", + "//server", + "//session", + "//store/mockstore", + "//table", + "//types", + "//util/sqlexec", + "@com_github_aws_aws_sdk_go//aws/request", + "@com_github_aws_aws_sdk_go//service/s3", + "@com_github_go_sql_driver_mysql//:mysql", + "@com_github_golang_mock//gomock", + "@com_github_google_uuid//:uuid", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_kvproto//pkg/import_kvpb", + "@com_github_pingcap_log//:log", + "@com_github_tikv_client_go_v2//testutils", + "@com_github_tikv_client_go_v2//tikv", + "@com_github_tikv_pd_client//:client", + "@org_golang_google_grpc//:grpc", + "@org_golang_google_grpc//metadata", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "mock_test", + srcs = ["mock_cluster_test.go"], + deps = [ + ":mock", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/br/pkg/mock/backend.go b/br/pkg/mock/backend.go index 7eba5180694ac..04896d4a8efd1 100644 --- a/br/pkg/mock/backend.go +++ b/br/pkg/mock/backend.go @@ -1,8 +1,6 @@ // Code generated by MockGen. DO NOT EDIT. // Source: github.com/pingcap/tidb/br/pkg/lightning/backend (interfaces: AbstractBackend,EngineWriter) -// $ mockgen -package mock -mock_names 'AbstractBackend=MockBackend' github.com/pingcap/tidb/br/pkg/lightning/backend AbstractBackend,EngineWriter - // Package mock is a generated GoMock package. package mock @@ -228,18 +226,18 @@ func (mr *MockBackendMockRecorder) MakeEmptyRows() *gomock.Call { } // NewEncoder mocks base method. -func (m *MockBackend) NewEncoder(arg0 table.Table, arg1 *kv.SessionOptions) (kv.Encoder, error) { +func (m *MockBackend) NewEncoder(arg0 context.Context, arg1 table.Table, arg2 *kv.SessionOptions) (kv.Encoder, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "NewEncoder", arg0, arg1) + ret := m.ctrl.Call(m, "NewEncoder", arg0, arg1, arg2) ret0, _ := ret[0].(kv.Encoder) ret1, _ := ret[1].(error) return ret0, ret1 } // NewEncoder indicates an expected call of NewEncoder. -func (mr *MockBackendMockRecorder) NewEncoder(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockBackendMockRecorder) NewEncoder(arg0, arg1, arg2 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "NewEncoder", reflect.TypeOf((*MockBackend)(nil).NewEncoder), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "NewEncoder", reflect.TypeOf((*MockBackend)(nil).NewEncoder), arg0, arg1, arg2) } // OpenEngine mocks base method. diff --git a/br/pkg/mock/mockid/BUILD.bazel b/br/pkg/mock/mockid/BUILD.bazel new file mode 100644 index 0000000000000..149fb0315f08f --- /dev/null +++ b/br/pkg/mock/mockid/BUILD.bazel @@ -0,0 +1,8 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "mockid", + srcs = ["mockid.go"], + importpath = "github.com/pingcap/tidb/br/pkg/mock/mockid", + visibility = ["//visibility:public"], +) diff --git a/br/pkg/mock/storage/BUILD.bazel b/br/pkg/mock/storage/BUILD.bazel new file mode 100644 index 0000000000000..defc41fb3ef31 --- /dev/null +++ b/br/pkg/mock/storage/BUILD.bazel @@ -0,0 +1,12 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "storage", + srcs = ["storage.go"], + importpath = "github.com/pingcap/tidb/br/pkg/mock/storage", + visibility = ["//visibility:public"], + deps = [ + "//br/pkg/storage", + "@com_github_golang_mock//gomock", + ], +) diff --git a/br/pkg/pdutil/BUILD.bazel b/br/pkg/pdutil/BUILD.bazel new file mode 100644 index 0000000000000..f2e997d3d833c --- /dev/null +++ b/br/pkg/pdutil/BUILD.bazel @@ -0,0 +1,47 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "pdutil", + srcs = [ + "pd.go", + "utils.go", + ], + importpath = "github.com/pingcap/tidb/br/pkg/pdutil", + visibility = ["//visibility:public"], + deps = [ + "//br/pkg/errors", + "//br/pkg/httputil", + "//br/pkg/lightning/common", + "//store/pdtypes", + "//tablecodec", + "//util/codec", + "@com_github_coreos_go_semver//semver", + "@com_github_docker_go_units//:go-units", + "@com_github_opentracing_opentracing_go//:opentracing-go", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_pingcap_log//:log", + "@com_github_tikv_pd_client//:client", + "@org_golang_google_grpc//:grpc", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "pdutil_test", + srcs = [ + "main_test.go", + "pd_serial_test.go", + ], + embed = [":pdutil"], + deps = [ + "//store/pdtypes", + "//testkit/testsetup", + "//util/codec", + "@com_github_coreos_go_semver//semver", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_pingcap_kvproto//pkg/metapb", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/br/pkg/redact/BUILD.bazel b/br/pkg/redact/BUILD.bazel new file mode 100644 index 0000000000000..90e747acbc261 --- /dev/null +++ b/br/pkg/redact/BUILD.bazel @@ -0,0 +1,19 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "redact", + srcs = ["redact.go"], + importpath = "github.com/pingcap/tidb/br/pkg/redact", + visibility = ["//visibility:public"], + deps = ["@com_github_pingcap_errors//:errors"], +) + +go_test( + name = "redact_test", + srcs = ["redact_test.go"], + deps = [ + ":redact", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/br/pkg/restore/BUILD.bazel b/br/pkg/restore/BUILD.bazel new file mode 100644 index 0000000000000..94dd07ccb1384 --- /dev/null +++ b/br/pkg/restore/BUILD.bazel @@ -0,0 +1,145 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "restore", + srcs = [ + "batcher.go", + "client.go", + "db.go", + "import.go", + "import_retry.go", + "merge.go", + "pipeline_items.go", + "range.go", + "rawkv_client.go", + "split.go", + "split_client.go", + "stream_metas.go", + "systable_restore.go", + "util.go", + ], + importpath = "github.com/pingcap/tidb/br/pkg/restore", + visibility = ["//visibility:public"], + deps = [ + "//br/pkg/checksum", + "//br/pkg/conn", + "//br/pkg/errors", + "//br/pkg/glue", + "//br/pkg/httputil", + "//br/pkg/logutil", + "//br/pkg/metautil", + "//br/pkg/pdutil", + "//br/pkg/redact", + "//br/pkg/rtree", + "//br/pkg/storage", + "//br/pkg/stream", + "//br/pkg/summary", + "//br/pkg/utils", + "//ddl/util", + "//domain", + "//kv", + "//meta", + "//parser/model", + "//parser/mysql", + "//sessionctx/variable", + "//statistics/handle", + "//store/pdtypes", + "//tablecodec", + "//util/codec", + "//util/hack", + "//util/mathutil", + "//util/table-filter", + "@com_github_go_sql_driver_mysql//:mysql", + "@com_github_google_uuid//:uuid", + "@com_github_opentracing_opentracing_go//:opentracing-go", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_pingcap_kvproto//pkg/brpb", + "@com_github_pingcap_kvproto//pkg/errorpb", + "@com_github_pingcap_kvproto//pkg/import_sstpb", + "@com_github_pingcap_kvproto//pkg/kvrpcpb", + "@com_github_pingcap_kvproto//pkg/metapb", + "@com_github_pingcap_kvproto//pkg/pdpb", + "@com_github_pingcap_kvproto//pkg/tikvpb", + "@com_github_pingcap_log//:log", + "@com_github_tikv_client_go_v2//config", + "@com_github_tikv_client_go_v2//kv", + "@com_github_tikv_client_go_v2//oracle", + "@com_github_tikv_client_go_v2//rawkv", + "@com_github_tikv_pd_client//:client", + "@org_golang_google_grpc//:grpc", + "@org_golang_google_grpc//backoff", + "@org_golang_google_grpc//codes", + "@org_golang_google_grpc//credentials", + "@org_golang_google_grpc//keepalive", + "@org_golang_google_grpc//status", + "@org_golang_x_sync//errgroup", + "@org_uber_go_multierr//:multierr", + "@org_uber_go_zap//:zap", + "@org_uber_go_zap//zapcore", + ], +) + +go_test( + name = "restore_test", + srcs = [ + "batcher_test.go", + "client_test.go", + "db_test.go", + "import_retry_test.go", + "main_test.go", + "merge_fuzz_test.go", + "merge_test.go", + "range_test.go", + "rawkv_client_test.go", + "split_test.go", + "stream_metas_test.go", + "util_test.go", + ], + deps = [ + ":restore", + "//br/pkg/backup", + "//br/pkg/conn", + "//br/pkg/errors", + "//br/pkg/glue", + "//br/pkg/gluetidb", + "//br/pkg/logutil", + "//br/pkg/metautil", + "//br/pkg/mock", + "//br/pkg/rtree", + "//br/pkg/storage", + "//br/pkg/utils", + "//kv", + "//meta/autoid", + "//parser/model", + "//parser/mysql", + "//parser/types", + "//sessionctx/stmtctx", + "//store/pdtypes", + "//tablecodec", + "//testkit", + "//testkit/testsetup", + "//types", + "//util/codec", + "@com_github_golang_protobuf//proto", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_kvproto//pkg/brpb", + "@com_github_pingcap_kvproto//pkg/encryptionpb", + "@com_github_pingcap_kvproto//pkg/errorpb", + "@com_github_pingcap_kvproto//pkg/import_sstpb", + "@com_github_pingcap_kvproto//pkg/metapb", + "@com_github_pingcap_kvproto//pkg/pdpb", + "@com_github_pingcap_log//:log", + "@com_github_stretchr_testify//assert", + "@com_github_stretchr_testify//require", + "@com_github_tikv_client_go_v2//oracle", + "@com_github_tikv_client_go_v2//rawkv", + "@com_github_tikv_pd_client//:client", + "@org_golang_google_grpc//codes", + "@org_golang_google_grpc//keepalive", + "@org_golang_google_grpc//status", + "@org_uber_go_goleak//:goleak", + "@org_uber_go_multierr//:multierr", + "@org_uber_go_zap//:zap", + ], +) diff --git a/br/pkg/restore/import.go b/br/pkg/restore/import.go index ed97af87a71e4..eb29b63b47f2f 100644 --- a/br/pkg/restore/import.go +++ b/br/pkg/restore/import.go @@ -401,7 +401,8 @@ func (importer *FileImporter) ImportKVFiles( logutil.Key("startKey", startKey), logutil.Key("endKey", endKey)) - rs := utils.InitialRetryState(32, 100*time.Millisecond, 8*time.Second) + // This RetryState will retry 48 time, for 5 min - 6 min. + rs := utils.InitialRetryState(48, 100*time.Millisecond, 8*time.Second) ctl := OverRegionsInRange(startKey, endKey, importer.metaClient, &rs) err = ctl.Run(ctx, func(ctx context.Context, r *RegionInfo) RPCResult { return importer.ImportKVFileForRegion(ctx, file, rule, startTS, restoreTS, r) diff --git a/br/pkg/restore/import_retry.go b/br/pkg/restore/import_retry.go index d6d07b3b0e500..f770ab79eba30 100644 --- a/br/pkg/restore/import_retry.go +++ b/br/pkg/restore/import_retry.go @@ -151,16 +151,16 @@ func (o *OverRegionsInRangeController) runInRegion(ctx context.Context, f Region if !result.OK() { o.onError(ctx, result, region) switch result.StrategyForRetry() { - case giveUp: + case StrategyGiveUp: logutil.CL(ctx).Warn("unexpected error, should stop to retry", logutil.ShortError(&result), logutil.Region(region.Region)) return false, o.errors - case fromThisRegion: + case StrategyFromThisRegion: logutil.CL(ctx).Warn("retry for region", logutil.Region(region.Region), logutil.ShortError(&result)) if !o.handleInRegionError(ctx, result, region) { return false, o.Run(ctx, f) } return o.runInRegion(ctx, f, region) - case fromStart: + case StrategyFromStart: logutil.CL(ctx).Warn("retry for execution over regions", logutil.ShortError(&result)) // TODO: make a backoffer considering more about the error info, // instead of ingore the result and retry. @@ -196,48 +196,48 @@ func RPCResultOK() RPCResult { return RPCResult{} } -type retryStrategy int +type RetryStrategy int const ( - giveUp retryStrategy = iota - fromThisRegion - fromStart + StrategyGiveUp RetryStrategy = iota + StrategyFromThisRegion + StrategyFromStart ) -func (r *RPCResult) StrategyForRetry() retryStrategy { +func (r *RPCResult) StrategyForRetry() RetryStrategy { if r.Err != nil { return r.StrategyForRetryGoError() } return r.StrategyForRetryStoreError() } -func (r *RPCResult) StrategyForRetryStoreError() retryStrategy { +func (r *RPCResult) StrategyForRetryStoreError() RetryStrategy { if r.StoreError == nil && r.ImportError == "" { - return giveUp + return StrategyGiveUp } if r.StoreError.GetServerIsBusy() != nil || r.StoreError.GetRegionNotInitialized() != nil || r.StoreError.GetNotLeader() != nil { - return fromThisRegion + return StrategyFromThisRegion } - return fromStart + return StrategyFromStart } -func (r *RPCResult) StrategyForRetryGoError() retryStrategy { +func (r *RPCResult) StrategyForRetryGoError() RetryStrategy { if r.Err == nil { - return giveUp + return StrategyGiveUp } - - if gRPCErr, ok := status.FromError(r.Err); ok { + // we should unwrap the error or we cannot get the write gRPC status. + if gRPCErr, ok := status.FromError(errors.Cause(r.Err)); ok { switch gRPCErr.Code() { case codes.Unavailable, codes.Aborted, codes.ResourceExhausted: - return fromThisRegion + return StrategyFromThisRegion } } - return giveUp + return StrategyGiveUp } func (r *RPCResult) Error() string { diff --git a/br/pkg/restore/import_retry_test.go b/br/pkg/restore/import_retry_test.go index b62102b333d45..62817eaf92173 100644 --- a/br/pkg/restore/import_retry_test.go +++ b/br/pkg/restore/import_retry_test.go @@ -9,6 +9,7 @@ import ( "testing" "time" + "github.com/pingcap/errors" "github.com/pingcap/kvproto/pkg/errorpb" "github.com/pingcap/kvproto/pkg/import_sstpb" "github.com/pingcap/kvproto/pkg/metapb" @@ -17,6 +18,8 @@ import ( "github.com/pingcap/tidb/store/pdtypes" "github.com/pingcap/tidb/util/codec" "github.com/stretchr/testify/require" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" ) func assertDecode(t *testing.T, key []byte) []byte { @@ -306,3 +309,10 @@ func TestRetryBackoff(t *testing.T) { require.Equal(t, 2*time.Millisecond, rs.ExponentialBackoff()) require.NoError(t, err) } + +func TestWrappedError(t *testing.T) { + result := restore.RPCResultFromError(errors.Trace(status.Error(codes.Unavailable, "the server is slacking. ><=·>"))) + require.Equal(t, result.StrategyForRetry(), restore.StrategyFromThisRegion) + result = restore.RPCResultFromError(errors.Trace(status.Error(codes.Unknown, "the server said something hard to understand"))) + require.Equal(t, result.StrategyForRetry(), restore.StrategyGiveUp) +} diff --git a/br/pkg/restore/split.go b/br/pkg/restore/split.go index be6a41112aa98..00ff0dc44cbde 100644 --- a/br/pkg/restore/split.go +++ b/br/pkg/restore/split.go @@ -451,7 +451,9 @@ func PaginateScanRegion( var batch []*RegionInfo batch, err = client.ScanRegions(ctx, scanStartKey, endKey, limit) if err != nil { - return errors.Trace(err) + err = errors.Annotatef(berrors.ErrPDBatchScanRegion, "scan regions from start-key:%s, err: %s", + redact.Key(scanStartKey), err.Error()) + return err } regions = append(regions, batch...) if len(batch) < limit { diff --git a/br/pkg/restore/split_client.go b/br/pkg/restore/split_client.go index 7c2d5549d6608..2e2a89a45d0ed 100755 --- a/br/pkg/restore/split_client.go +++ b/br/pkg/restore/split_client.go @@ -33,6 +33,7 @@ import ( "go.uber.org/multierr" "go.uber.org/zap" "google.golang.org/grpc" + "google.golang.org/grpc/codes" "google.golang.org/grpc/credentials" "google.golang.org/grpc/status" ) @@ -499,6 +500,11 @@ func (c *pdClient) GetOperator(ctx context.Context, regionID uint64) (*pdpb.GetO } func (c *pdClient) ScanRegions(ctx context.Context, key, endKey []byte, limit int) ([]*RegionInfo, error) { + failpoint.Inject("no-leader-error", func(_ failpoint.Value) { + logutil.CL(ctx).Debug("failpoint no-leader-error injected.") + failpoint.Return(nil, status.Error(codes.Unavailable, "not leader")) + }) + regions, err := c.client.ScanRegions(ctx, key, endKey, limit) if err != nil { return nil, errors.Trace(err) diff --git a/br/pkg/restore/split_test.go b/br/pkg/restore/split_test.go index 19a4b2a43f8e0..1e37a7975b205 100644 --- a/br/pkg/restore/split_test.go +++ b/br/pkg/restore/split_test.go @@ -38,8 +38,9 @@ type TestClient struct { injectInScatter func(*restore.RegionInfo) error supportBatchScatter bool - scattered map[uint64]bool - InjectErr bool + scattered map[uint64]bool + InjectErr bool + InjectTimes int32 } func NewTestClient( @@ -216,8 +217,9 @@ func (c *TestClient) GetOperator(ctx context.Context, regionID uint64) (*pdpb.Ge } func (c *TestClient) ScanRegions(ctx context.Context, key, endKey []byte, limit int) ([]*restore.RegionInfo, error) { - if c.InjectErr { - return nil, errors.New("mock scan error") + if c.InjectErr && c.InjectTimes > 0 { + c.InjectTimes -= 1 + return nil, status.Error(codes.Unavailable, "not leader") } infos := c.regionsInfo.ScanRange(key, endKey, limit) diff --git a/br/pkg/restore/util_test.go b/br/pkg/restore/util_test.go index 3fff9cc4cc355..23fe2de3d3dc0 100644 --- a/br/pkg/restore/util_test.go +++ b/br/pkg/restore/util_test.go @@ -233,7 +233,10 @@ func TestPaginateScanRegion(t *testing.T) { require.Regexp(t, ".*scan region return empty result.*", err.Error()) regionMap, regions = makeRegions(1) - batch, err = restore.PaginateScanRegion(ctx, NewTestClient(stores, regionMap, 0), []byte{}, []byte{}, 3) + tc := NewTestClient(stores, regionMap, 0) + tc.InjectErr = true + tc.InjectTimes = 10 + batch, err = restore.PaginateScanRegion(ctx, tc, []byte{}, []byte{}, 3) require.NoError(t, err) require.Equal(t, regions, batch) @@ -273,11 +276,12 @@ func TestPaginateScanRegion(t *testing.T) { require.True(t, berrors.ErrRestoreInvalidRange.Equal(err)) require.Regexp(t, ".*startKey > endKey.*", err.Error()) - tc := NewTestClient(stores, regionMap, 0) + tc = NewTestClient(stores, regionMap, 0) tc.InjectErr = true - _, err = restore.PaginateScanRegion(ctx, tc, regions[1].Region.EndKey, regions[5].Region.EndKey, 3) + tc.InjectTimes = 65 + _, err = restore.PaginateScanRegion(ctx, tc, []byte{}, []byte{}, 3) require.Error(t, err) - require.Regexp(t, ".*mock scan error.*", err.Error()) + require.True(t, berrors.ErrPDBatchScanRegion.Equal(err)) // make the regionMap losing some region, this will cause scan region check fails delete(regionMap, uint64(3)) diff --git a/br/pkg/rtree/BUILD.bazel b/br/pkg/rtree/BUILD.bazel new file mode 100644 index 0000000000000..5c5b0546ab03b --- /dev/null +++ b/br/pkg/rtree/BUILD.bazel @@ -0,0 +1,38 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "rtree", + srcs = [ + "logging.go", + "rtree.go", + ], + importpath = "github.com/pingcap/tidb/br/pkg/rtree", + visibility = ["//visibility:public"], + deps = [ + "//br/pkg/logutil", + "//br/pkg/redact", + "@com_github_google_btree//:btree", + "@com_github_pingcap_kvproto//pkg/brpb", + "@com_github_pingcap_log//:log", + "@org_uber_go_zap//:zap", + "@org_uber_go_zap//zapcore", + ], +) + +go_test( + name = "rtree_test", + srcs = [ + "logging_test.go", + "main_test.go", + "rtree_test.go", + ], + deps = [ + ":rtree", + "//testkit/testsetup", + "@com_github_pingcap_kvproto//pkg/brpb", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + "@org_uber_go_zap//:zap", + "@org_uber_go_zap//zapcore", + ], +) diff --git a/br/pkg/storage/BUILD.bazel b/br/pkg/storage/BUILD.bazel new file mode 100644 index 0000000000000..46150497b872b --- /dev/null +++ b/br/pkg/storage/BUILD.bazel @@ -0,0 +1,78 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "storage", + srcs = [ + "azblob.go", + "compress.go", + "flags.go", + "gcs.go", + "hdfs.go", + "local.go", + "local_unix.go", + "local_windows.go", + "memstore.go", + "noop.go", + "parse.go", + "s3.go", + "storage.go", + "writer.go", + ], + importpath = "github.com/pingcap/tidb/br/pkg/storage", + visibility = ["//visibility:public"], + deps = [ + "//br/pkg/errors", + "//br/pkg/logutil", + "@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", + "@com_github_aws_aws_sdk_go//aws/awserr", + "@com_github_aws_aws_sdk_go//aws/client", + "@com_github_aws_aws_sdk_go//aws/credentials", + "@com_github_aws_aws_sdk_go//aws/request", + "@com_github_aws_aws_sdk_go//aws/session", + "@com_github_aws_aws_sdk_go//service/s3", + "@com_github_aws_aws_sdk_go//service/s3/s3iface", + "@com_github_azure_azure_sdk_for_go_sdk_azidentity//:azidentity", + "@com_github_azure_azure_sdk_for_go_sdk_storage_azblob//:azblob", + "@com_github_google_uuid//:uuid", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_kvproto//pkg/brpb", + "@com_github_pingcap_log//:log", + "@com_github_spf13_pflag//:pflag", + "@com_google_cloud_go_storage//:storage", + "@org_golang_google_api//iterator", + "@org_golang_google_api//option", + "@org_golang_x_oauth2//google", + "@org_uber_go_atomic//:atomic", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "storage_test", + srcs = [ + "azblob_test.go", + "compress_test.go", + "gcs_test.go", + "local_test.go", + "memstore_test.go", + "parse_test.go", + "s3_test.go", + "writer_test.go", + ], + embed = [":storage"], + deps = [ + "//br/pkg/mock", + "@com_github_aws_aws_sdk_go//aws", + "@com_github_aws_aws_sdk_go//aws/awserr", + "@com_github_aws_aws_sdk_go//aws/request", + "@com_github_aws_aws_sdk_go//service/s3", + "@com_github_azure_azure_sdk_for_go_sdk_storage_azblob//:azblob", + "@com_github_fsouza_fake_gcs_server//fakestorage", + "@com_github_golang_mock//gomock", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_kvproto//pkg/brpb", + "@com_github_stretchr_testify//require", + ], +) diff --git a/br/pkg/storage/memstore.go b/br/pkg/storage/memstore.go new file mode 100644 index 0000000000000..0d60edc04de7c --- /dev/null +++ b/br/pkg/storage/memstore.go @@ -0,0 +1,329 @@ +// 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, +// See the License for the specific language governing permissions and +// limitations under the License. + +package storage + +import ( + "bytes" + "context" + "io" + "path" + "sort" + "strings" + "sync" + + "github.com/pingcap/errors" + "go.uber.org/atomic" +) + +type memFile struct { + Data atomic.Value // the atomic value is a byte slice, which can only be get/set atomically +} + +// GetData gets the underlying byte slice of the atomic value +func (f *memFile) GetData() []byte { + var fileData []byte + fileDataVal := f.Data.Load() + if fileDataVal != nil { + fileData = fileDataVal.([]byte) + } + return fileData +} + +// MemStorage represents a in-memory storage. +type MemStorage struct { + rwm sync.RWMutex + dataStore map[string]*memFile +} + +func NewMemStorage() *MemStorage { + return &MemStorage{ + dataStore: make(map[string]*memFile), + } +} + +func (s *MemStorage) loadMap(name string) (*memFile, bool) { + s.rwm.RLock() + defer s.rwm.RUnlock() + theFile, ok := s.dataStore[name] + return theFile, ok +} + +// DeleteFile delete the file in storage +// It implements the `ExternalStorage` interface +func (s *MemStorage) DeleteFile(ctx context.Context, name string) error { + select { + case <-ctx.Done(): + return ctx.Err() + default: + // continue on + } + if !path.IsAbs(name) { + return errors.Errorf("file name is not an absolute path: %s", name) + } + s.rwm.Lock() + defer s.rwm.Unlock() + if _, ok := s.dataStore[name]; !ok { + return errors.Errorf("cannot find the file: %s", name) + } + delete(s.dataStore, name) + return nil +} + +// WriteFile file to storage. +// It implements the `ExternalStorage` interface +func (s *MemStorage) WriteFile(ctx context.Context, name string, data []byte) error { + select { + case <-ctx.Done(): + return ctx.Err() + default: + // continue on + } + if !path.IsAbs(name) { + return errors.Errorf("file name is not an absolute path: %s", name) + } + fileData := append([]byte{}, data...) + s.rwm.Lock() + defer s.rwm.Unlock() + theFile, ok := s.dataStore[name] + if ok { + theFile.Data.Store(fileData) + } else { + theFile := new(memFile) + theFile.Data.Store(fileData) + s.dataStore[name] = theFile + } + return nil +} + +// ReadFile reads the storage file. +// It implements the `ExternalStorage` interface +func (s *MemStorage) ReadFile(ctx context.Context, name string) ([]byte, error) { + select { + case <-ctx.Done(): + return nil, ctx.Err() + default: + // continue on + } + if !path.IsAbs(name) { + return nil, errors.Errorf("file name is not an absolute path: %s", name) + } + theFile, ok := s.loadMap(name) + if !ok { + return nil, errors.Errorf("cannot find the file: %s", name) + } + fileData := theFile.GetData() + return append([]byte{}, fileData...), nil +} + +// FileExists return true if file exists. +// It implements the `ExternalStorage` interface +func (s *MemStorage) FileExists(ctx context.Context, name string) (bool, error) { + select { + case <-ctx.Done(): + return false, ctx.Err() + default: + // continue on + } + if !path.IsAbs(name) { + return false, errors.Errorf("file name is not an absolute path: %s", name) + } + _, ok := s.loadMap(name) + return ok, nil +} + +// Open opens a Reader by file path. +// It implements the `ExternalStorage` interface +func (s *MemStorage) Open(ctx context.Context, filePath string) (ExternalFileReader, error) { + select { + case <-ctx.Done(): + return nil, ctx.Err() + default: + // continue on + } + if !path.IsAbs(filePath) { + return nil, errors.Errorf("file name is not an absolute path: %s", filePath) + } + theFile, ok := s.loadMap(filePath) + if !ok { + return nil, errors.Errorf("cannot find the file: %s", filePath) + } + r := bytes.NewReader(theFile.GetData()) + return &memFileReader{ + br: r, + }, nil +} + +// WalkDir traverse all the files in a dir. +// It implements the `ExternalStorage` interface +func (s *MemStorage) WalkDir(ctx context.Context, opt *WalkOption, fn func(string, int64) error) error { + allFileNames := func() []string { + fileNames := []string{} + s.rwm.RLock() + defer s.rwm.RUnlock() + for fileName := range s.dataStore { + if opt != nil { + if len(opt.SubDir) > 0 { + if !strings.HasPrefix(fileName, opt.SubDir) { + continue + } + } + if len(opt.ObjPrefix) > 0 { + baseName := path.Base(fileName) + if !strings.HasPrefix(baseName, opt.ObjPrefix) { + continue + } + } + } + fileNames = append(fileNames, fileName) + } + return fileNames + }() + sort.Strings(allFileNames) + + for _, fileName := range allFileNames { + select { + case <-ctx.Done(): + return ctx.Err() + default: + // continue on + } + theFile, ok := s.loadMap(fileName) + if !ok { + continue + } + fileSize := len(theFile.GetData()) + if err := fn(fileName, int64(fileSize)); err != nil { + return err + } + } + return nil +} + +func (s *MemStorage) URI() string { + return "memstore://" +} + +// Create creates a file and returning a writer to write data into. +// When the writer is closed, the data is stored in the file. +// It implements the `ExternalStorage` interface +func (s *MemStorage) Create(ctx context.Context, name string) (ExternalFileWriter, error) { + select { + case <-ctx.Done(): + return nil, ctx.Err() + default: + // continue on + } + if !path.IsAbs(name) { + return nil, errors.Errorf("file name is not an absolute path: %s", name) + } + s.rwm.Lock() + defer s.rwm.Unlock() + if _, ok := s.dataStore[name]; ok { + return nil, errors.Errorf("the file already exists: %s", name) + } + theFile := new(memFile) + s.dataStore[name] = theFile + return &memFileWriter{ + file: theFile, + }, nil +} + +// Rename renames a file name to another file name. +// It implements the `ExternalStorage` interface +func (s *MemStorage) Rename(ctx context.Context, oldFileName, newFileName string) error { + select { + case <-ctx.Done(): + return ctx.Err() + default: + // continue on + } + if !path.IsAbs(newFileName) { + return errors.Errorf("new file name is not an absolute path: %s", newFileName) + } + s.rwm.Lock() + defer s.rwm.Unlock() + theFile, ok := s.dataStore[oldFileName] + if !ok { + return errors.Errorf("the file doesn't exist: %s", oldFileName) + } + s.dataStore[newFileName] = theFile + delete(s.dataStore, oldFileName) + return nil +} + +// memFileReader is the struct to read data from an opend mem storage file +type memFileReader struct { + br *bytes.Reader + isClosed atomic.Bool +} + +// Read reads the mem storage file data +// It implements the `io.Reader` interface +func (r *memFileReader) Read(p []byte) (int, error) { + if r.isClosed.Load() { + return 0, io.EOF + } + return r.br.Read(p) +} + +// Close closes the mem storage file data +// It implements the `io.Closer` interface +func (r *memFileReader) Close() error { + r.isClosed.Store(true) + return nil +} + +// Seeker seekds the offset inside the mem storage file +// It implements the `io.Seeker` interface +func (r *memFileReader) Seek(offset int64, whence int) (int64, error) { + if r.isClosed.Load() { + return 0, errors.New("reader closed") + } + return r.br.Seek(offset, whence) +} + +// memFileReader is the struct to write data into the opened mem storage file +type memFileWriter struct { + buf bytes.Buffer + file *memFile + isClosed atomic.Bool +} + +// Write writes the data into the mem storage file buffer. +// It implements the `ExternalFileWriter` interface +func (w *memFileWriter) Write(ctx context.Context, p []byte) (int, error) { + select { + case <-ctx.Done(): + return 0, ctx.Err() + default: + // continue on + } + if w.isClosed.Load() { + return 0, errors.New("writer closed") + } + return w.buf.Write(p) +} + +func (w *memFileWriter) Close(ctx context.Context) error { + select { + case <-ctx.Done(): + return ctx.Err() + default: + // continue on + } + fileData := append([]byte{}, w.buf.Bytes()...) + w.file.Data.Store(fileData) + w.isClosed.Store(true) + return nil +} diff --git a/br/pkg/storage/memstore_test.go b/br/pkg/storage/memstore_test.go new file mode 100644 index 0000000000000..a85a2ff467fa1 --- /dev/null +++ b/br/pkg/storage/memstore_test.go @@ -0,0 +1,268 @@ +// 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, +// See the License for the specific language governing permissions and +// limitations under the License. + +package storage + +import ( + "bytes" + "context" + "io" + "io/ioutil" + "sync" + "testing" + "time" + + "github.com/pingcap/errors" + "github.com/stretchr/testify/require" +) + +func TestMemStoreBasic(t *testing.T) { + store := NewMemStorage() + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + var err error + // write and then read + require.Nil(t, store.WriteFile(ctx, "/hello.txt", []byte("hello world"))) + fileContent, err := store.ReadFile(ctx, "/hello.txt") + require.Nil(t, err) + require.True(t, bytes.Equal([]byte("hello world"), fileContent)) + + // write the same file and then read + require.Nil(t, store.WriteFile(ctx, "/hello.txt", []byte("hello world 2"))) + fileContent, err = store.ReadFile(ctx, "/hello.txt") + require.Nil(t, err) + require.True(t, bytes.Equal([]byte("hello world 2"), fileContent)) + + // delete the file and then delete & read + require.Nil(t, store.DeleteFile(ctx, "/hello.txt")) + require.NotNil(t, store.DeleteFile(ctx, "/hello.txt")) + _, err = store.ReadFile(ctx, "/hello.txt") + require.NotNil(t, err) + + // create a writer to write + w, err := store.Create(ctx, "/hello.txt") + require.Nil(t, err) + _, err = w.Write(ctx, []byte("hello world 3")) + require.Nil(t, err) + // read the file content before writer closing + fileContent, err = store.ReadFile(ctx, "/hello.txt") + require.Nil(t, err) + require.True(t, bytes.Equal([]byte(""), fileContent)) + require.Nil(t, w.Close(ctx)) + // read the file content after writer closing + fileContent, err = store.ReadFile(ctx, "/hello.txt") + require.Nil(t, err) + require.True(t, bytes.Equal([]byte("hello world 3"), fileContent)) + + // simultaneously create two readers on the same file + r, err := store.Open(ctx, "/hello.txt") + require.Nil(t, err) + r2, err := store.Open(ctx, "/hello.txt") + require.Nil(t, err) + fileContent, err = ioutil.ReadAll(r) + require.Nil(t, err) + require.True(t, bytes.Equal([]byte("hello world 3"), fileContent)) + require.Nil(t, r.Close()) + // operations after close + _, err = r.Read(make([]byte, 3)) + require.NotNil(t, err) + + // delete the file, but there is an existing reader on this file + require.Nil(t, store.DeleteFile(ctx, "/hello.txt")) + + _, err = r2.Seek(5, io.SeekStart) + require.Nil(t, err) + fileContent, err = ioutil.ReadAll(r2) + require.Nil(t, err) + require.True(t, bytes.Equal([]byte(" world 3"), fileContent)) + + // rename the file + var exists bool + require.Nil(t, store.WriteFile(ctx, "/hello.txt", []byte("hello world 3"))) + require.Nil(t, store.WriteFile(ctx, "/hello2.txt", []byte("hello world 2"))) + exists, err = store.FileExists(ctx, "/hello.txt") + require.Nil(t, err) + require.True(t, exists) + exists, err = store.FileExists(ctx, "/hello2.txt") + require.Nil(t, err) + require.True(t, exists) + require.NotNil(t, store.Rename(ctx, "/NOT_EXIST.txt", "/NEW_FILE.txt")) + require.Nil(t, store.Rename(ctx, "/hello2.txt", "/hello3.txt")) + require.Nil(t, store.Rename(ctx, "/hello.txt", "/hello3.txt")) + exists, err = store.FileExists(ctx, "/hello.txt") + require.Nil(t, err) + require.False(t, exists) + exists, err = store.FileExists(ctx, "/hello2.txt") + require.Nil(t, err) + require.False(t, exists) + exists, err = store.FileExists(ctx, "/hello3.txt") + require.Nil(t, err) + require.True(t, exists) +} + +type iterFileInfo struct { + Name string + Size int64 + Content []byte +} + +func TestMemStoreWalkDir(t *testing.T) { + store := NewMemStorage() + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + allTestFiles := map[string][]byte{ + "/hello.txt": []byte("hello world"), + "/hello2.txt": []byte("hello world 2"), + "/aaa/hello.txt": []byte("aaa: hello world"), + "/aaa/world.txt": []byte("aaa: world"), + "/dummy.txt": []byte("dummy"), + } + for fileName, content := range allTestFiles { + require.Nil(t, store.WriteFile(ctx, fileName, content)) + } + + iterFileInfos := []*iterFileInfo{} + iterFn := func(fileName string, fileSize int64) error { + fileContent, err := store.ReadFile(ctx, fileName) + if err != nil { + return err + } + iterFileInfos = append(iterFileInfos, &iterFileInfo{ + Name: fileName, + Size: fileSize, + Content: fileContent, + }) + return nil + } + require.Nil(t, store.WalkDir(ctx, &WalkOption{}, iterFn)) + require.Equal(t, len(allTestFiles), len(iterFileInfos)) + for _, info := range iterFileInfos { + expectContent, ok := allTestFiles[info.Name] + require.True(t, ok, info.Name) + require.Equal(t, int64(len(info.Content)), info.Size, info.Name) + require.True(t, bytes.Equal(expectContent, info.Content), info.Name) + } + + iterFileInfos = iterFileInfos[:0] + expectFiles := make(map[string][]byte) + expectFiles["/aaa/hello.txt"] = allTestFiles["/aaa/hello.txt"] + expectFiles["/aaa/world.txt"] = allTestFiles["/aaa/world.txt"] + require.Nil(t, store.WalkDir(ctx, &WalkOption{ + SubDir: "/aaa", + }, iterFn)) + require.Equal(t, len(expectFiles), len(iterFileInfos)) + for _, info := range iterFileInfos { + expectContent, ok := expectFiles[info.Name] + require.True(t, ok, info.Name) + require.Equal(t, int64(len(info.Content)), info.Size, info.Name) + require.True(t, bytes.Equal(expectContent, info.Content), info.Name) + } + + iterFileInfos = iterFileInfos[:0] + expectFiles = make(map[string][]byte) + expectFiles["/hello.txt"] = allTestFiles["/hello.txt"] + expectFiles["/hello2.txt"] = allTestFiles["/hello2.txt"] + expectFiles["/aaa/hello.txt"] = allTestFiles["/aaa/hello.txt"] + require.Nil(t, store.WalkDir(ctx, &WalkOption{ + ObjPrefix: "hello", + }, iterFn)) + require.Equal(t, len(expectFiles), len(iterFileInfos)) + for _, info := range iterFileInfos { + expectContent, ok := expectFiles[info.Name] + require.True(t, ok, info.Name) + require.Equal(t, int64(len(info.Content)), info.Size, info.Name) + require.True(t, bytes.Equal(expectContent, info.Content), info.Name) + } +} + +func TestMemStoreManipulateBytes(t *testing.T) { + store := NewMemStorage() + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + testStr := "aaa1" + testBytes := []byte(testStr) + require.Nil(t, store.WriteFile(ctx, "/aaa.txt", testBytes)) + testBytes[3] = '2' + require.Equal(t, testStr, string(store.dataStore["/aaa.txt"].Data.Load().([]byte))) + + readBytes, err := store.ReadFile(ctx, "/aaa.txt") + require.Nil(t, err) + require.Equal(t, testStr, string(readBytes)) + readBytes[3] = '2' + require.Equal(t, testStr, string(store.dataStore["/aaa.txt"].Data.Load().([]byte))) +} + +func TestMemStoreWriteDuringWalkDir(t *testing.T) { + store := NewMemStorage() + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + var deleteFileName string + allTestFiles := map[string][]byte{ + "/hello1.txt": []byte("hello world 1"), + "/hello2.txt": []byte("hello world 2"), + "/hello3.txt": []byte("hello world 3"), + } + var remainFilesMap sync.Map + for fileName, content := range allTestFiles { + require.Nil(t, store.WriteFile(ctx, fileName, content)) + remainFilesMap.Store(fileName, true) + } + + pendingCh := make(chan struct{}) + ch1 := make(chan error) + ch2 := make(chan error) + go func() { + <-pendingCh + ch1 <- store.WalkDir(ctx, nil, func(fileName string, size int64) error { + t.Logf("iterating: %s", fileName) + remainFilesMap.Delete(fileName) + time.Sleep(1 * time.Second) + return nil + }) + close(ch1) + }() + go func() { + defer close(ch2) + <-pendingCh + time.Sleep(100 * time.Millisecond) // set some lag, to let 'WalkDir' go-routine run first + err := store.WriteFile(ctx, "/hello4.txt", []byte("hello world4")) + if err != nil { + ch2 <- err + return + } + t.Log("new file written") + remainFilesMap.Range(func(k any, v any) bool { + deleteFileName = k.(string) + return false + }) + ch2 <- store.DeleteFile(ctx, deleteFileName) + t.Logf("%s deleted", deleteFileName) + }() + close(pendingCh) + // see how long does the write returns + var err error + select { + case <-time.After(1 * time.Second): + err = errors.New("writing file timeout") + case err = <-ch2: + //continue on + } + require.Nil(t, err) + require.Nil(t, <-ch1) + _, ok := remainFilesMap.Load(deleteFileName) + require.True(t, ok) +} diff --git a/br/pkg/stream/BUILD.bazel b/br/pkg/stream/BUILD.bazel new file mode 100644 index 0000000000000..7d2ac25a863c9 --- /dev/null +++ b/br/pkg/stream/BUILD.bazel @@ -0,0 +1,75 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "stream", + srcs = [ + "client.go", + "decode_kv.go", + "meta_kv.go", + "models.go", + "prefix_scanner.go", + "rewrite_meta_rawkv.go", + "stream_mgr.go", + "stream_status.go", + ], + importpath = "github.com/pingcap/tidb/br/pkg/stream", + visibility = ["//visibility:public"], + deps = [ + "//br/pkg/backup", + "//br/pkg/conn", + "//br/pkg/errors", + "//br/pkg/glue", + "//br/pkg/httputil", + "//br/pkg/logutil", + "//br/pkg/redact", + "//br/pkg/storage", + "//kv", + "//meta", + "//parser/model", + "//tablecodec", + "//util", + "//util/codec", + "//util/table-filter", + "@com_github_fatih_color//:color", + "@com_github_gogo_protobuf//proto", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_kvproto//pkg/brpb", + "@com_github_pingcap_kvproto//pkg/metapb", + "@com_github_pingcap_log//:log", + "@com_github_tikv_client_go_v2//kv", + "@com_github_tikv_client_go_v2//oracle", + "@io_etcd_go_etcd_client_v3//:client", + "@org_golang_x_sync//errgroup", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "stream_test", + srcs = [ + "decode_kv_test.go", + "integration_test.go", + "meta_kv_test.go", + "rewrite_meta_rawkv_test.go", + "stream_misc_test.go", + ], + embed = [":stream"], + deps = [ + "//br/pkg/errors", + "//br/pkg/logutil", + "//br/pkg/storage", + "//meta", + "//parser/model", + "//tablecodec", + "//util/codec", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_kvproto//pkg/brpb", + "@com_github_pingcap_log//:log", + "@com_github_stretchr_testify//require", + "@com_github_tikv_client_go_v2//kv", + "@io_etcd_go_etcd_client_v3//:client", + "@io_etcd_go_etcd_server_v3//embed", + "@io_etcd_go_etcd_server_v3//mvcc", + "@org_uber_go_zap//:zap", + ], +) diff --git a/br/pkg/summary/BUILD.bazel b/br/pkg/summary/BUILD.bazel new file mode 100644 index 0000000000000..897dda0614a1f --- /dev/null +++ b/br/pkg/summary/BUILD.bazel @@ -0,0 +1,32 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "summary", + srcs = [ + "collector.go", + "summary.go", + ], + importpath = "github.com/pingcap/tidb/br/pkg/summary", + visibility = ["//visibility:public"], + deps = [ + "@com_github_docker_go_units//:go-units", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_log//:log", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "summary_test", + srcs = [ + "collector_test.go", + "main_test.go", + ], + embed = [":summary"], + deps = [ + "//testkit/testsetup", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + "@org_uber_go_zap//:zap", + ], +) diff --git a/br/pkg/task/BUILD.bazel b/br/pkg/task/BUILD.bazel new file mode 100644 index 0000000000000..334babfd6d85c --- /dev/null +++ b/br/pkg/task/BUILD.bazel @@ -0,0 +1,97 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "task", + srcs = [ + "backup.go", + "backup_raw.go", + "common.go", + "restore.go", + "restore_raw.go", + "stream.go", + ], + importpath = "github.com/pingcap/tidb/br/pkg/task", + visibility = ["//visibility:public"], + deps = [ + "//br/pkg/backup", + "//br/pkg/checksum", + "//br/pkg/conn", + "//br/pkg/errors", + "//br/pkg/glue", + "//br/pkg/httputil", + "//br/pkg/logutil", + "//br/pkg/metautil", + "//br/pkg/pdutil", + "//br/pkg/restore", + "//br/pkg/rtree", + "//br/pkg/storage", + "//br/pkg/stream", + "//br/pkg/summary", + "//br/pkg/utils", + "//br/pkg/version", + "//config", + "//kv", + "//parser/mysql", + "//sessionctx/stmtctx", + "//sessionctx/variable", + "//statistics/handle", + "//types", + "//util/mathutil", + "//util/table-filter", + "@com_github_docker_go_units//:go-units", + "@com_github_fatih_color//:color", + "@com_github_gogo_protobuf//proto", + "@com_github_opentracing_opentracing_go//:opentracing-go", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_pingcap_kvproto//pkg/brpb", + "@com_github_pingcap_kvproto//pkg/encryptionpb", + "@com_github_pingcap_log//:log", + "@com_github_spf13_cobra//:cobra", + "@com_github_spf13_pflag//:pflag", + "@com_github_tikv_client_go_v2//config", + "@com_github_tikv_client_go_v2//oracle", + "@com_github_tikv_pd_client//:client", + "@com_google_cloud_go_storage//:storage", + "@io_etcd_go_etcd_client_pkg_v3//transport", + "@io_etcd_go_etcd_client_v3//:client", + "@org_golang_google_grpc//:grpc", + "@org_golang_google_grpc//keepalive", + "@org_uber_go_multierr//:multierr", + "@org_uber_go_zap//:zap", + "@org_uber_go_zap//zapcore", + ], +) + +go_test( + name = "task_test", + srcs = [ + "backup_test.go", + "common_test.go", + "restore_test.go", + "stream_test.go", + ], + embed = [":task"], + deps = [ + "//br/pkg/conn", + "//br/pkg/metautil", + "//br/pkg/pdutil", + "//br/pkg/restore", + "//br/pkg/storage", + "//br/pkg/utils", + "//config", + "//parser/model", + "//statistics/handle", + "//tablecodec", + "@com_github_golang_protobuf//proto", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_kvproto//pkg/brpb", + "@com_github_pingcap_kvproto//pkg/encryptionpb", + "@com_github_pingcap_kvproto//pkg/metapb", + "@com_github_spf13_pflag//:pflag", + "@com_github_stretchr_testify//require", + "@com_github_tikv_client_go_v2//oracle", + "@com_github_tikv_pd_client//:client", + "@org_golang_google_grpc//keepalive", + ], +) diff --git a/br/pkg/task/restore.go b/br/pkg/task/restore.go index e432497b56098..1e6cbd2432065 100644 --- a/br/pkg/task/restore.go +++ b/br/pkg/task/restore.go @@ -265,7 +265,7 @@ func (cfg *RestoreConfig) adjustRestoreConfig() { func (cfg *RestoreConfig) adjustRestoreConfigForStreamRestore() { if cfg.Config.Concurrency == 0 { - cfg.Config.Concurrency = 32 + cfg.Config.Concurrency = 16 } } diff --git a/br/pkg/task/restore_raw.go b/br/pkg/task/restore_raw.go index d8fcb46475809..452cccfad8c42 100644 --- a/br/pkg/task/restore_raw.go +++ b/br/pkg/task/restore_raw.go @@ -146,8 +146,7 @@ func RunRestoreRaw(c context.Context, g glue.Glue, cmdName string, cfg *RestoreR !cfg.LogProgress) // RawKV restore does not need to rewrite keys. - rewrite := &restore.RewriteRules{} - err = restore.SplitRanges(ctx, client, ranges, rewrite, updateCh, true) + err = restore.SplitRanges(ctx, client, ranges, nil, updateCh, true) if err != nil { return errors.Trace(err) } diff --git a/br/pkg/task/restore_test.go b/br/pkg/task/restore_test.go index 78cfcd26ad7b4..74748a663f3b3 100644 --- a/br/pkg/task/restore_test.go +++ b/br/pkg/task/restore_test.go @@ -11,6 +11,7 @@ import ( "github.com/golang/protobuf/proto" backuppb "github.com/pingcap/kvproto/pkg/brpb" "github.com/pingcap/kvproto/pkg/encryptionpb" + "github.com/pingcap/kvproto/pkg/metapb" "github.com/pingcap/tidb/br/pkg/conn" "github.com/pingcap/tidb/br/pkg/metautil" "github.com/pingcap/tidb/br/pkg/restore" @@ -20,6 +21,8 @@ import ( "github.com/pingcap/tidb/statistics/handle" "github.com/pingcap/tidb/tablecodec" "github.com/stretchr/testify/require" + pd "github.com/tikv/pd/client" + "google.golang.org/grpc/keepalive" ) func TestRestoreConfigAdjust(t *testing.T) { @@ -32,7 +35,15 @@ func TestRestoreConfigAdjust(t *testing.T) { require.Equal(t, conn.DefaultMergeRegionSizeBytes, cfg.MergeSmallRegionSizeBytes) } -func TestconfigureRestoreClient(t *testing.T) { +type mockPDClient struct { + pd.Client +} + +func (m mockPDClient) GetAllStores(ctx context.Context, opts ...pd.GetStoreOption) ([]*metapb.Store, error) { + return []*metapb.Store{}, nil +} + +func TestConfigureRestoreClient(t *testing.T) { cfg := Config{ Concurrency: 1024, } @@ -44,13 +55,12 @@ func TestconfigureRestoreClient(t *testing.T) { RestoreCommonConfig: restoreComCfg, DdlBatchSize: 128, } - client := &restore.Client{} - + client := restore.NewRestoreClient(mockPDClient{}, nil, keepalive.ClientParameters{}, false) ctx := context.Background() err := configureRestoreClient(ctx, client, restoreCfg) require.NoError(t, err) - require.Equal(t, client.GetBatchDdlSize(), 128) - require.True(t, true, client.IsOnline()) + require.Equal(t, uint(128), client.GetBatchDdlSize()) + require.True(t, client.IsOnline()) } func TestCheckRestoreDBAndTable(t *testing.T) { diff --git a/br/pkg/task/stream.go b/br/pkg/task/stream.go index d257eb868fb55..7d8b717f07e0d 100644 --- a/br/pkg/task/stream.go +++ b/br/pkg/task/stream.go @@ -932,7 +932,17 @@ func RunStreamRestore( g glue.Glue, cmdName string, cfg *RestoreConfig, -) error { +) (err error) { + startTime := time.Now() + defer func() { + dur := time.Since(startTime) + if err != nil { + summary.Log(cmdName+" failed summary", zap.Error(err)) + } else { + summary.Log(cmdName+" success summary", zap.Duration("total-take", dur), + zap.Uint64("restore-from", cfg.StartTS), zap.Uint64("restore-to", cfg.RestoreTS)) + } + }() ctx, cancelFn := context.WithCancel(c) defer cancelFn() diff --git a/br/pkg/trace/BUILD.bazel b/br/pkg/trace/BUILD.bazel new file mode 100644 index 0000000000000..f02690cdb63ab --- /dev/null +++ b/br/pkg/trace/BUILD.bazel @@ -0,0 +1,31 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "trace", + srcs = ["tracing.go"], + importpath = "github.com/pingcap/tidb/br/pkg/trace", + visibility = ["//visibility:public"], + deps = [ + "@com_github_cheynewallace_tabby//:tabby", + "@com_github_opentracing_opentracing_go//:opentracing-go", + "@com_github_pingcap_log//:log", + "@com_sourcegraph_sourcegraph_appdash//:appdash", + "@com_sourcegraph_sourcegraph_appdash//opentracing", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "trace_test", + srcs = [ + "main_test.go", + "tracing_serial_test.go", + ], + embed = [":trace"], + deps = [ + "//testkit/testsetup", + "@com_github_opentracing_opentracing_go//:opentracing-go", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/br/pkg/utils/BUILD.bazel b/br/pkg/utils/BUILD.bazel new file mode 100644 index 0000000000000..a000479c29696 --- /dev/null +++ b/br/pkg/utils/BUILD.bazel @@ -0,0 +1,83 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "utils", + srcs = [ + "backoff.go", + "db.go", + "dyn_pprof_other.go", + "dyn_pprof_unix.go", + "env.go", + "json.go", + "key.go", + "math.go", + "permission.go", + "pprof.go", + "progress.go", + "retry.go", + "safe_point.go", + "schema.go", + "worker.go", + ], + importpath = "github.com/pingcap/tidb/br/pkg/utils", + visibility = ["//visibility:public"], + deps = [ + "//br/pkg/errors", + "//br/pkg/metautil", + "//errno", + "//parser/model", + "//parser/mysql", + "//parser/terror", + "//util", + "@com_github_cheggaaa_pb_v3//:pb", + "@com_github_google_uuid//:uuid", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_pingcap_kvproto//pkg/brpb", + "@com_github_pingcap_kvproto//pkg/metapb", + "@com_github_pingcap_log//:log", + "@com_github_tikv_client_go_v2//oracle", + "@com_github_tikv_pd_client//:client", + "@org_golang_google_grpc//codes", + "@org_golang_google_grpc//status", + "@org_golang_x_net//http/httpproxy", + "@org_golang_x_sync//errgroup", + "@org_uber_go_multierr//:multierr", + "@org_uber_go_zap//:zap", + "@org_uber_go_zap//zapcore", + ], +) + +go_test( + name = "utils_test", + srcs = [ + "backoff_test.go", + "env_test.go", + "json_test.go", + "key_test.go", + "main_test.go", + "math_test.go", + "progress_test.go", + "safe_point_test.go", + "schema_test.go", + ], + embed = [":utils"], + deps = [ + "//br/pkg/errors", + "//br/pkg/metautil", + "//br/pkg/storage", + "//parser/model", + "//statistics/handle", + "//tablecodec", + "//testkit/testsetup", + "@com_github_golang_protobuf//proto", + "@com_github_pingcap_kvproto//pkg/brpb", + "@com_github_pingcap_kvproto//pkg/encryptionpb", + "@com_github_stretchr_testify//require", + "@com_github_tikv_pd_client//:client", + "@org_golang_google_grpc//codes", + "@org_golang_google_grpc//status", + "@org_uber_go_goleak//:goleak", + "@org_uber_go_multierr//:multierr", + ], +) diff --git a/br/pkg/version/BUILD.bazel b/br/pkg/version/BUILD.bazel new file mode 100644 index 0000000000000..26bbda74a0d32 --- /dev/null +++ b/br/pkg/version/BUILD.bazel @@ -0,0 +1,34 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "version", + srcs = ["version.go"], + importpath = "github.com/pingcap/tidb/br/pkg/version", + visibility = ["//visibility:public"], + deps = [ + "//br/pkg/errors", + "//br/pkg/logutil", + "//br/pkg/utils", + "//br/pkg/version/build", + "@com_github_coreos_go_semver//semver", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_kvproto//pkg/metapb", + "@com_github_pingcap_log//:log", + "@com_github_tikv_pd_client//:client", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "version_test", + srcs = ["version_test.go"], + embed = [":version"], + deps = [ + "//br/pkg/version/build", + "@com_github_coreos_go_semver//semver", + "@com_github_data_dog_go_sqlmock//:go-sqlmock", + "@com_github_pingcap_kvproto//pkg/metapb", + "@com_github_stretchr_testify//require", + "@com_github_tikv_pd_client//:client", + ], +) diff --git a/br/pkg/version/build/BUILD.bazel b/br/pkg/version/build/BUILD.bazel new file mode 100644 index 0000000000000..87fc4fa0efd9e --- /dev/null +++ b/br/pkg/version/build/BUILD.bazel @@ -0,0 +1,22 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "build", + srcs = ["info.go"], + importpath = "github.com/pingcap/tidb/br/pkg/version/build", + visibility = ["//visibility:public"], + deps = [ + "//parser/mysql", + "//util/israce", + "//util/versioninfo", + "@com_github_pingcap_log//:log", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "build_test", + srcs = ["info_test.go"], + embed = [":build"], + deps = ["@com_github_stretchr_testify//require"], +) diff --git a/br/tests/br_full/run.sh b/br/tests/br_full/run.sh index 8ff3a04804ad6..8d754dbd28af1 100755 --- a/br/tests/br_full/run.sh +++ b/br/tests/br_full/run.sh @@ -80,6 +80,7 @@ for ct in limit lz4 zstd; do # restore full echo "restore with $ct backup start..." export GO_FAILPOINTS="github.com/pingcap/tidb/br/pkg/restore/restore-storage-error=1*return(\"connection refused\");github.com/pingcap/tidb/br/pkg/restore/restore-gRPC-error=1*return(true)" + export GO_FAILPOINTS=$GO_FAILPOINTS";github.com/pingcap/tidb/br/pkg/restore/no-leader-error=3*return(true)" run_br restore full -s "local://$TEST_DIR/$DB-$ct" --pd $PD_ADDR --ratelimit 1024 export GO_FAILPOINTS="" diff --git a/br/tests/br_gcs/BUILD.bazel b/br/tests/br_gcs/BUILD.bazel new file mode 100644 index 0000000000000..b6ebf428740e3 --- /dev/null +++ b/br/tests/br_gcs/BUILD.bazel @@ -0,0 +1,14 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library") + +go_library( + name = "br_gcs_lib", + srcs = ["oauth.go"], + importpath = "github.com/pingcap/tidb/br/tests/br_gcs", + visibility = ["//visibility:private"], +) + +go_binary( + name = "br_gcs", + embed = [":br_gcs_lib"], + visibility = ["//visibility:public"], +) diff --git a/br/tests/br_key_locked/BUILD.bazel b/br/tests/br_key_locked/BUILD.bazel new file mode 100644 index 0000000000000..a6e6a40edf2f2 --- /dev/null +++ b/br/tests/br_key_locked/BUILD.bazel @@ -0,0 +1,36 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library") + +go_library( + name = "br_key_locked_lib", + srcs = [ + "codec.go", + "locker.go", + ], + importpath = "github.com/pingcap/tidb/br/tests/br_key_locked", + visibility = ["//visibility:private"], + deps = [ + "//br/pkg/httputil", + "//br/pkg/task", + "//config", + "//kv", + "//parser/model", + "//store/driver", + "//tablecodec", + "//util/codec", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_kvproto//pkg/kvrpcpb", + "@com_github_pingcap_kvproto//pkg/metapb", + "@com_github_pingcap_log//:log", + "@com_github_tikv_client_go_v2//oracle", + "@com_github_tikv_client_go_v2//tikv", + "@com_github_tikv_client_go_v2//tikvrpc", + "@com_github_tikv_pd_client//:client", + "@org_uber_go_zap//:zap", + ], +) + +go_binary( + name = "br_key_locked", + embed = [":br_key_locked_lib"], + visibility = ["//visibility:public"], +) diff --git a/br/tests/br_rawkv/BUILD.bazel b/br/tests/br_rawkv/BUILD.bazel new file mode 100644 index 0000000000000..f4153a1651d98 --- /dev/null +++ b/br/tests/br_rawkv/BUILD.bazel @@ -0,0 +1,21 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library") + +go_library( + name = "br_rawkv_lib", + srcs = ["client.go"], + importpath = "github.com/pingcap/tidb/br/tests/br_rawkv", + visibility = ["//visibility:private"], + deps = [ + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_log//:log", + "@com_github_tikv_client_go_v2//config", + "@com_github_tikv_client_go_v2//rawkv", + "@org_uber_go_zap//:zap", + ], +) + +go_binary( + name = "br_rawkv", + embed = [":br_rawkv_lib"], + visibility = ["//visibility:public"], +) diff --git a/br/tests/br_rawkv/run.sh b/br/tests/br_rawkv/run.sh index 97450d3e65fc7..b32cca0f8e41f 100755 --- a/br/tests/br_rawkv/run.sh +++ b/br/tests/br_rawkv/run.sh @@ -98,12 +98,23 @@ run_test() { --key "$TEST_DIR/certs/br.key" \ --mode put --put-data "311121:31, 31112100:32, 311122:33, 31112200:34, 3111220000:35, 311123:36" + + # put some keys starts with t. https://github.com/pingcap/tidb/issues/35279 + # t_128_r_12 ----> 745f3132385f725f3132 + # t_128_r_13 ----> 745f3132385f725f3133 + bin/rawkv --pd $PD_ADDR \ + --ca "$TEST_DIR/certs/ca.pem" \ + --cert "$TEST_DIR/certs/br.pem" \ + --key "$TEST_DIR/certs/br.key" \ + --mode put --put-data "745f3132385f725f3132:31, 745f3132385f725f3133:32" + checksum_ori=$(checksum 31 3130303030303030) checksum_partial=$(checksum 311111 311122) + checksum_t_prefix=$(checksum 745f3132385f725f3131 745f3132385f725f3134) # backup rawkv echo "backup start..." - run_br --pd $PD_ADDR backup raw -s "local://$BACKUP_DIR" --start 31 --end 3130303030303030 --format hex --concurrency 4 --crypter.method "aes128-ctr" --crypter.key "0123456789abcdef0123456789abcdef" + run_br --pd $PD_ADDR backup raw -s "local://$BACKUP_DIR" --start 31 --end 745f3132385f725f3134 --format hex --concurrency 4 --crypter.method "aes128-ctr" --crypter.key "0123456789abcdef0123456789abcdef" # delete data in range[start-key, end-key) clean 31 3130303030303030 @@ -153,6 +164,21 @@ run_test() { fail_and_exit fi + echo "t prefix restore start..." + run_br --pd $PD_ADDR restore raw -s "local://$BACKUP_DIR" --start "745f3132385f725f3131" --end "745f3132385f725f3134" --format hex --concurrency 4 --crypter.method "aes128-ctr" --crypter.key "0123456789abcdef0123456789abcdef" + bin/rawkv --pd $PD_ADDR \ + --ca "$TEST_DIR/certs/ca.pem" \ + --cert "$TEST_DIR/certs/br.pem" \ + --key "$TEST_DIR/certs/br.key" \ + --mode scan --start-key 745f3132385f725f3131 --end-key 745f3132385f725f3134 + + checksum_new=$(checksum 745f3132385f725f3131 745f3132385f725f3134) + + if [ "$checksum_new" != "$checksum_t_prefix" ];then + echo "checksum failed after restore" + fail_and_exit + fi + export GO_FAILPOINTS="" } diff --git a/br/tests/br_z_gc_safepoint/BUILD.bazel b/br/tests/br_z_gc_safepoint/BUILD.bazel new file mode 100644 index 0000000000000..4afb866ddc690 --- /dev/null +++ b/br/tests/br_z_gc_safepoint/BUILD.bazel @@ -0,0 +1,20 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library") + +go_library( + name = "br_z_gc_safepoint_lib", + srcs = ["gc.go"], + importpath = "github.com/pingcap/tidb/br/tests/br_z_gc_safepoint", + visibility = ["//visibility:private"], + deps = [ + "@com_github_pingcap_log//:log", + "@com_github_tikv_client_go_v2//oracle", + "@com_github_tikv_pd_client//:client", + "@org_uber_go_zap//:zap", + ], +) + +go_binary( + name = "br_z_gc_safepoint", + embed = [":br_z_gc_safepoint_lib"], + visibility = ["//visibility:public"], +) diff --git a/br/tests/lightning_auto_random_default/run.sh b/br/tests/lightning_auto_random_default/run.sh index 41b9798de4560..c54ca6ac7ee0e 100644 --- a/br/tests/lightning_auto_random_default/run.sh +++ b/br/tests/lightning_auto_random_default/run.sh @@ -40,10 +40,10 @@ for backend in tidb local; do check_contains 'inc: 6' NEXT_AUTO_RAND_VAL=7 else - check_contains 'inc: 25' - check_contains 'inc: 26' - check_contains 'inc: 27' - NEXT_AUTO_RAND_VAL=28 + check_contains 'inc: 6' + check_contains 'inc: 7' + check_contains 'inc: 8' + NEXT_AUTO_RAND_VAL=9 fi # tidb backend randomly generate the auto-random bit for each statement, so with 2 statements, diff --git a/br/tests/lightning_checkpoint_parquet/BUILD.bazel b/br/tests/lightning_checkpoint_parquet/BUILD.bazel new file mode 100644 index 0000000000000..ee879d2d67c1b --- /dev/null +++ b/br/tests/lightning_checkpoint_parquet/BUILD.bazel @@ -0,0 +1,18 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library") + +go_library( + name = "lightning_checkpoint_parquet_lib", + srcs = ["parquet.go"], + importpath = "github.com/pingcap/tidb/br/tests/lightning_checkpoint_parquet", + visibility = ["//visibility:private"], + deps = [ + "@com_github_xitongsys_parquet_go//writer", + "@com_github_xitongsys_parquet_go_source//local", + ], +) + +go_binary( + name = "lightning_checkpoint_parquet", + embed = [":lightning_checkpoint_parquet_lib"], + visibility = ["//visibility:public"], +) diff --git a/br/tests/lightning_realloc_id/config.toml b/br/tests/lightning_realloc_id/config.toml new file mode 100644 index 0000000000000..f32593b43b798 --- /dev/null +++ b/br/tests/lightning_realloc_id/config.toml @@ -0,0 +1,3 @@ +[tikv-importer] +incremental-import = true +backend = 'local' diff --git a/br/tests/lightning_realloc_id/config1.toml b/br/tests/lightning_realloc_id/config1.toml new file mode 100644 index 0000000000000..d2152b47c922a --- /dev/null +++ b/br/tests/lightning_realloc_id/config1.toml @@ -0,0 +1,2 @@ +[tikv-importer] +backend = 'local' diff --git a/br/tests/lightning_realloc_id/config2.toml b/br/tests/lightning_realloc_id/config2.toml new file mode 100644 index 0000000000000..f32593b43b798 --- /dev/null +++ b/br/tests/lightning_realloc_id/config2.toml @@ -0,0 +1,3 @@ +[tikv-importer] +incremental-import = true +backend = 'local' diff --git a/br/tests/lightning_realloc_id/data/db-schema-create.sql b/br/tests/lightning_realloc_id/data/db-schema-create.sql new file mode 100644 index 0000000000000..c88b0e3150e76 --- /dev/null +++ b/br/tests/lightning_realloc_id/data/db-schema-create.sql @@ -0,0 +1 @@ +create database db; \ No newline at end of file diff --git a/br/tests/lightning_realloc_id/data/db.test-schema.sql b/br/tests/lightning_realloc_id/data/db.test-schema.sql new file mode 100644 index 0000000000000..0490cd81e1c2e --- /dev/null +++ b/br/tests/lightning_realloc_id/data/db.test-schema.sql @@ -0,0 +1,4 @@ +create table db.test( + id int auto_increment unique key, + a int primary key +); \ No newline at end of file diff --git a/br/tests/lightning_realloc_id/data/db.test.000000000.csv b/br/tests/lightning_realloc_id/data/db.test.000000000.csv new file mode 100644 index 0000000000000..f2ce71fb561c5 --- /dev/null +++ b/br/tests/lightning_realloc_id/data/db.test.000000000.csv @@ -0,0 +1,11 @@ +a +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 \ No newline at end of file diff --git a/br/tests/lightning_realloc_id/data/db.test.000000001.sql b/br/tests/lightning_realloc_id/data/db.test.000000001.sql new file mode 100644 index 0000000000000..611b5f5dbeba6 --- /dev/null +++ b/br/tests/lightning_realloc_id/data/db.test.000000001.sql @@ -0,0 +1,11 @@ +insert into db.test(a) values +(200), +(201), +(202), +(203), +(204), +(205), +(206), +(207), +(208), +(209); \ No newline at end of file diff --git a/br/tests/lightning_realloc_id/data1/db-schema-create.sql b/br/tests/lightning_realloc_id/data1/db-schema-create.sql new file mode 100644 index 0000000000000..c88b0e3150e76 --- /dev/null +++ b/br/tests/lightning_realloc_id/data1/db-schema-create.sql @@ -0,0 +1 @@ +create database db; \ No newline at end of file diff --git a/br/tests/lightning_realloc_id/data1/db.test-schema.sql b/br/tests/lightning_realloc_id/data1/db.test-schema.sql new file mode 100644 index 0000000000000..0490cd81e1c2e --- /dev/null +++ b/br/tests/lightning_realloc_id/data1/db.test-schema.sql @@ -0,0 +1,4 @@ +create table db.test( + id int auto_increment unique key, + a int primary key +); \ No newline at end of file diff --git a/br/tests/lightning_realloc_id/data1/db.test.000000000.csv b/br/tests/lightning_realloc_id/data1/db.test.000000000.csv new file mode 100644 index 0000000000000..70ae8fd5a20a7 --- /dev/null +++ b/br/tests/lightning_realloc_id/data1/db.test.000000000.csv @@ -0,0 +1,11 @@ +a +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 \ No newline at end of file diff --git a/br/tests/lightning_realloc_id/data1/db.test.000000001.sql b/br/tests/lightning_realloc_id/data1/db.test.000000001.sql new file mode 100644 index 0000000000000..461cf4c3fccaf --- /dev/null +++ b/br/tests/lightning_realloc_id/data1/db.test.000000001.sql @@ -0,0 +1,11 @@ +insert into db.test(a) values +(400), +(401), +(402), +(403), +(404), +(405), +(406), +(407), +(408), +(409); \ No newline at end of file diff --git a/br/tests/lightning_realloc_id/data2/db.test.000000000.csv b/br/tests/lightning_realloc_id/data2/db.test.000000000.csv new file mode 100644 index 0000000000000..12d1d9e0bc948 --- /dev/null +++ b/br/tests/lightning_realloc_id/data2/db.test.000000000.csv @@ -0,0 +1,11 @@ +a +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 \ No newline at end of file diff --git a/br/tests/lightning_realloc_id/run.sh b/br/tests/lightning_realloc_id/run.sh new file mode 100644 index 0000000000000..eead3b2fc1f33 --- /dev/null +++ b/br/tests/lightning_realloc_id/run.sh @@ -0,0 +1,93 @@ +#!/bin/sh +# +# 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. + +# Basic check for whether partitioned tables work. + +set -eu +check_cluster_version 4 0 0 'local backend' +LOG_FILE1="$TEST_DIR/lightning-realloc-import1.log" +LOG_FILE2="$TEST_DIR/lightning-realloc-import2.log" +LOG_FILE3="$TEST_DIR/lightning-realloc-import3.log" + +function run_lightning_expecting_fail() { + set +e + run_lightning "$@" + ERRCODE=$? + set -e + [ "$ERRCODE" != 0 ] +} + +function check_result() { + run_sql 'SHOW DATABASES;' + check_contains 'Database: db'; + run_sql 'SHOW TABLES IN db;' + check_contains 'Tables_in_db: test' + run_sql 'SELECT count(*) FROM db.test;' + check_contains 'count(*): 20' + run_sql 'SELECT * FROM db.test;' + check_contains 'id: 15' + check_contains 'id: 20' +} + +function parallel_import() { + run_lightning -d "tests/$TEST_NAME/data" \ + --sorted-kv-dir "$TEST_DIR/lightning_realloc_import.sorted1" \ + --log-file "$LOG_FILE1" \ + --config "tests/$TEST_NAME/config.toml" & + pid1="$!" + run_lightning -d "tests/$TEST_NAME/data1" \ + --sorted-kv-dir "$TEST_DIR/lightning_realloc_import.sorted2" \ + --log-file "$LOG_FILE2" \ + --config "tests/$TEST_NAME/config.toml" & + pid2="$!" + wait "$pid1" "$pid2" +} + +function overflow_import() { + run_sql 'create database if not exists db' + run_sql 'create table db.test(id int auto_increment primary key, a int)' + run_sql 'alter table db.test auto_increment=2147483640' # too few available rowID + echo "lightning stdout:" > "$TEST_DIR/sql_res.$TEST_NAME.txt" + run_lightning_expecting_fail -d "tests/$TEST_NAME/data2" \ + --sorted-kv-dir "$TEST_DIR/lightning_realloc_import.sorted3" \ + --log-file "$LOG_FILE3" \ + --config "tests/$TEST_NAME/config2.toml" 2>&1 | tee -a "$TEST_DIR/sql_res.$TEST_NAME.txt" + if ! grep -q "out of range" "$TEST_DIR/sql_res.$TEST_NAME.txt"; then + echo "TEST FAILED: OUTPUT DOES NOT CONTAIN 'out of range'" + exit 1 + fi +} + +function check_parallel_result() { + run_sql 'SHOW DATABASES;' + check_contains 'Database: db'; + run_sql 'SHOW TABLES IN db;' + check_contains 'Tables_in_db: test' + run_sql 'SELECT count(*) FROM db.test;' + check_contains 'count(*): 40' +} + +run_sql 'DROP DATABASE IF EXISTS db;' +export GO_FAILPOINTS='github.com/pingcap/tidb/br/pkg/lightning/mydump/MockInaccurateRowID=return(true)' +run_lightning --config "tests/$TEST_NAME/config1.toml" +check_result +run_sql 'DROP DATABASE IF EXISTS db;' +parallel_import +check_parallel_result +run_sql 'DROP DATABASE IF EXISTS db;' +overflow_import +run_sql 'DROP DATABASE IF EXISTS db;' +unset GO_FAILPOINTS \ No newline at end of file diff --git a/br/tests/lightning_write_limit/config.toml b/br/tests/lightning_write_limit/config.toml new file mode 100644 index 0000000000000..e45e694126964 --- /dev/null +++ b/br/tests/lightning_write_limit/config.toml @@ -0,0 +1,5 @@ +[tikv-importer] +store-write-bwlimit = "1Mi" + +[mydumper.csv] +header = false diff --git a/br/tests/lightning_write_limit/run.sh b/br/tests/lightning_write_limit/run.sh new file mode 100644 index 0000000000000..b48d34e79a58d --- /dev/null +++ b/br/tests/lightning_write_limit/run.sh @@ -0,0 +1,49 @@ +#!/bin/bash +# +# 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. + +set -eux + +mkdir -p "$TEST_DIR/data" + +cat <"$TEST_DIR/data/test-schema-create.sql" +CREATE DATABASE test; +EOF +cat <"$TEST_DIR/data/test.t-schema.sql" +CREATE TABLE test.t ( + id int, + a int, + b int, + c int +); +EOF + +# Generate 200k rows. Total size is about 5MiB. +set +x +for i in {1..200000}; do + echo "$i,$i,$i,$i" >>"$TEST_DIR/data/test.t.0.csv" +done +set -x + +start=$(date +%s) +run_lightning --backend local -d "$TEST_DIR/data" --config "tests/$TEST_NAME/config.toml" +end=$(date +%s) +take=$((end - start)) + +# The encoded kv size is 10MiB. Usually it should take more than 10s. +if [ $take -lt 10 ]; then + echo "Lightning runs too fast. The write limiter doesn't work." + exit 1 +fi diff --git a/br/tidb-lightning.toml b/br/tidb-lightning.toml index 8840eba06bb1d..a33eb46500104 100644 --- a/br/tidb-lightning.toml +++ b/br/tidb-lightning.toml @@ -136,6 +136,8 @@ addr = "127.0.0.1:8287" # The memory cache used in for local sorting during the encode-KV phase before flushing into the engines. The memory # usage is bound by region-concurrency * local-writer-mem-cache-size. #local-writer-mem-cache-size = '128MiB' +# Limit the write bandwidth to each tikv store. The unit is 'Bytes per second'. 0 means no limit. +#store-write-bwlimit = 0 [mydumper] # block size of file reading diff --git a/build/BUILD.bazel b/build/BUILD.bazel new file mode 100644 index 0000000000000..4264907bb1fb9 --- /dev/null +++ b/build/BUILD.bazel @@ -0,0 +1,89 @@ +package(default_visibility = ["//visibility:public"]) + +load("@io_bazel_rules_go//go:def.bzl", "nogo") +load("//build/linter/staticcheck:def.bzl", "staticcheck_analyzers") + +STATICHECK_ANALYZERS = [ + "S1002", + "S1004", + "S1007", + "S1009", + "S1010", + "S1012", + "S1019", + "S1020", + "S1021", + "S1024", + "S1030", + "SA2000", + "SA2001", + "SA2003", + "SA3000", + "SA3001", + "SA4009", + "SA5000", + "SA5001", + "SA5002", + "SA5003", + "SA5004", + "SA5005", + "SA5007", + "SA5008", + "SA5009", + "SA5010", + #"SA5011", + "SA5012", + "SA6000", + "SA6001", + "SA6005", +] + +nogo( + name = "tidb_nogo", + config = ":nogo_config.json", + visibility = ["//visibility:public"], # must have public visibility + deps = [ + # https://github.com/golang/go/issues/48525 + # "@com_github_timakin_bodyclose//passes/bodyclose:go_default_library", + "@org_golang_x_tools//go/analysis/passes/asmdecl:go_default_library", + "@org_golang_x_tools//go/analysis/passes/assign:go_default_library", + "@org_golang_x_tools//go/analysis/passes/atomic:go_default_library", + "@org_golang_x_tools//go/analysis/passes/atomicalign:go_default_library", + "@org_golang_x_tools//go/analysis/passes/bools:go_default_library", + # https://github.com/golang/go/issues/48525 + # "@org_golang_x_tools//go/analysis/passes/buildssa:go_default_library", + "@org_golang_x_tools//go/analysis/passes/buildtag:go_default_library", + # https://github.com/bazelbuild/rules_go/issues/2396 + # "@org_golang_x_tools//go/analysis/passes/cgocall:go_default_library", + "@org_golang_x_tools//go/analysis/passes/composite:go_default_library", + "@org_golang_x_tools//go/analysis/passes/copylock:go_default_library", + "@org_golang_x_tools//go/analysis/passes/ctrlflow:go_default_library", + "@org_golang_x_tools//go/analysis/passes/deepequalerrors:go_default_library", + "@org_golang_x_tools//go/analysis/passes/errorsas:go_default_library", + "@org_golang_x_tools//go/analysis/passes/findcall:go_default_library", + "@org_golang_x_tools//go/analysis/passes/httpresponse:go_default_library", + "@org_golang_x_tools//go/analysis/passes/ifaceassert:go_default_library", + "@org_golang_x_tools//go/analysis/passes/inspect:go_default_library", + "@org_golang_x_tools//go/analysis/passes/loopclosure:go_default_library", + "@org_golang_x_tools//go/analysis/passes/lostcancel:go_default_library", + "@org_golang_x_tools//go/analysis/passes/nilfunc:go_default_library", + #"@org_golang_x_tools//go/analysis/passes/nilness:go_default_library", + "@org_golang_x_tools//go/analysis/passes/pkgfact:go_default_library", + "@org_golang_x_tools//go/analysis/passes/printf:go_default_library", + "@org_golang_x_tools//go/analysis/passes/shift:go_default_library", + "@org_golang_x_tools//go/analysis/passes/sortslice:go_default_library", + "@org_golang_x_tools//go/analysis/passes/stdmethods:go_default_library", + "@org_golang_x_tools//go/analysis/passes/stringintconv:go_default_library", + "@org_golang_x_tools//go/analysis/passes/structtag:go_default_library", + "@org_golang_x_tools//go/analysis/passes/testinggoroutine:go_default_library", + "@org_golang_x_tools//go/analysis/passes/tests:go_default_library", + "@org_golang_x_tools//go/analysis/passes/unmarshal:go_default_library", + "@org_golang_x_tools//go/analysis/passes/unreachable:go_default_library", + "@org_golang_x_tools//go/analysis/passes/unsafeptr:go_default_library", + "@org_golang_x_tools//go/analysis/passes/unusedresult:go_default_library", + "//build/linter/durationcheck:durationcheck", + "//build/linter/exportloopref:exportloopref", + "//build/linter/ineffassign:ineffassign", + "//build/linter/prealloc:prealloc", + ] + staticcheck_analyzers(STATICHECK_ANALYZERS), +) diff --git a/build/jenkins_unit_test.sh b/build/jenkins_unit_test.sh new file mode 100755 index 0000000000000..a3b17f3a3eaae --- /dev/null +++ b/build/jenkins_unit_test.sh @@ -0,0 +1,29 @@ +#!/bin/bash +# +# 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. + +# This test is used to test compatible for BR restore. +# It will download backup data from internal file server. +# And make sure these backup data can restore through newly BR tools to newly cluster. + +set -o pipefail + +make bazel_coverage_test +EXIT_STATUS=$? +# collect the junit and coverage report +bazel_collect +mkdir -p test_coverage +mv bazel.xml test_coverage/bazel.xml +exit ${EXIT_STATUS} diff --git a/build/lint.bzl b/build/lint.bzl new file mode 100644 index 0000000000000..fc7103a750e2e --- /dev/null +++ b/build/lint.bzl @@ -0,0 +1,21 @@ +load("@bazel_gazelle//:deps.bzl", "go_repository") + +def nogo_deps(): + go_repository( + name = "com_github_gostaticanalysis_analysisutil", + importpath = "github.com/gostaticanalysis/analysisutil", + sum = "h1:ZMCjoue3DtDWQ5WyU16YbjbQEQ3VuzwxALrpYd+HeKk=", + version = "v0.7.1", + ) + go_repository( + name = "com_github_gostaticanalysis_comment", + importpath = "github.com/gostaticanalysis/comment", + sum = "h1:hlnx5+S2fY9Zo9ePo4AhgYsYHbM2+eAv8m/s1JiCd6Q=", + version = "v1.4.2", + ) + go_repository( + name = "com_github_timakin_bodyclose", + importpath = "github.com/timakin/bodyclose", + sum = "h1:kl4KhGNsJIbDHS9/4U9yQo1UcPQM0kOMJHn29EoH/Ro=", + version = "v0.0.0-20210704033933-f49887972144", + ) diff --git a/build/linter/durationcheck/BUILD.bazel b/build/linter/durationcheck/BUILD.bazel new file mode 100644 index 0000000000000..556720ba0609c --- /dev/null +++ b/build/linter/durationcheck/BUILD.bazel @@ -0,0 +1,12 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "durationcheck", + srcs = ["analyzer.go"], + importpath = "github.com/pingcap/tidb/build/linter/durationcheck", + visibility = ["//visibility:public"], + deps = [ + "//build/linter/util", + "@com_github_charithe_durationcheck//:durationcheck", + ], +) diff --git a/build/linter/durationcheck/analyzer.go b/build/linter/durationcheck/analyzer.go new file mode 100644 index 0000000000000..1ebee429959fd --- /dev/null +++ b/build/linter/durationcheck/analyzer.go @@ -0,0 +1,27 @@ +// 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 durationcheck + +import ( + "github.com/charithe/durationcheck" + "github.com/pingcap/tidb/build/linter/util" +) + +// Analyzer is the analyzer struct of durationcheck. +var Analyzer = durationcheck.Analyzer + +func init() { + util.SkipAnalyzer(Analyzer) +} diff --git a/build/linter/exportloopref/BUILD.bazel b/build/linter/exportloopref/BUILD.bazel new file mode 100644 index 0000000000000..29070c40f343c --- /dev/null +++ b/build/linter/exportloopref/BUILD.bazel @@ -0,0 +1,9 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "exportloopref", + srcs = ["analyzer.go"], + importpath = "github.com/pingcap/tidb/build/linter/exportloopref", + visibility = ["//visibility:public"], + deps = ["@com_github_kyoh86_exportloopref//:exportloopref"], +) diff --git a/build/linter/exportloopref/analyzer.go b/build/linter/exportloopref/analyzer.go new file mode 100644 index 0000000000000..4a448a8092ed4 --- /dev/null +++ b/build/linter/exportloopref/analyzer.go @@ -0,0 +1,20 @@ +// 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 exportloopref + +import "github.com/kyoh86/exportloopref" + +// Analyzer is the analyzer struct of exportloopref. +var Analyzer = exportloopref.Analyzer diff --git a/build/linter/ineffassign/BUILD.bazel b/build/linter/ineffassign/BUILD.bazel new file mode 100644 index 0000000000000..706ea59702019 --- /dev/null +++ b/build/linter/ineffassign/BUILD.bazel @@ -0,0 +1,9 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "ineffassign", + srcs = ["analyzer.go"], + importpath = "github.com/pingcap/tidb/build/linter/ineffassign", + visibility = ["//visibility:public"], + deps = ["@com_github_gordonklaus_ineffassign//pkg/ineffassign"], +) diff --git a/build/linter/ineffassign/analyzer.go b/build/linter/ineffassign/analyzer.go new file mode 100644 index 0000000000000..42179cb3ad567 --- /dev/null +++ b/build/linter/ineffassign/analyzer.go @@ -0,0 +1,20 @@ +// 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 ineffassign + +import "github.com/gordonklaus/ineffassign/pkg/ineffassign" + +// Analyzer is the analyzer struct of ineffassign. +var Analyzer = ineffassign.Analyzer diff --git a/build/linter/prealloc/BUILD.bazel b/build/linter/prealloc/BUILD.bazel new file mode 100644 index 0000000000000..452108a450df5 --- /dev/null +++ b/build/linter/prealloc/BUILD.bazel @@ -0,0 +1,13 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "prealloc", + srcs = ["analyzer.go"], + importpath = "github.com/pingcap/tidb/build/linter/prealloc", + visibility = ["//visibility:public"], + deps = [ + "//build/linter/util", + "@com_github_golangci_prealloc//:prealloc", + "@org_golang_x_tools//go/analysis", + ], +) diff --git a/build/linter/prealloc/analyzer.go b/build/linter/prealloc/analyzer.go new file mode 100644 index 0000000000000..5e9d38aa8daa9 --- /dev/null +++ b/build/linter/prealloc/analyzer.go @@ -0,0 +1,60 @@ +// 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 prealloc + +import ( + "go/ast" + + "github.com/golangci/prealloc" + "github.com/pingcap/tidb/build/linter/util" + "golang.org/x/tools/go/analysis" +) + +// Settings is the settings for preallocation. +type Settings struct { + Simple bool + RangeLoops bool `mapstructure:"range-loops"` + ForLoops bool `mapstructure:"range-loops"` +} + +// Name is the name of the analyzer. +const Name = "prealloc" + +// Analyzer is the analyzer struct of prealloc. +var Analyzer = &analysis.Analyzer{ + Name: Name, + Doc: "Finds slice declarations that could potentially be preallocated", + Run: run, +} + +func run(pass *analysis.Pass) (interface{}, error) { + s := &Settings{ + Simple: true, + RangeLoops: true, + ForLoops: false, + } + for _, f := range pass.Files { + hints := prealloc.Check([]*ast.File{f}, s.Simple, s.RangeLoops, s.ForLoops) + for _, hint := range hints { + pass.Reportf(hint.Pos, "[%s] Consider preallocating %s", Name, util.FormatCode(hint.DeclaredSliceName)) + } + } + + return nil, nil +} + +func init() { + util.SkipAnalyzer(Analyzer) +} diff --git a/build/linter/staticcheck/BUILD.bazel b/build/linter/staticcheck/BUILD.bazel new file mode 100644 index 0000000000000..6525dc6be346a --- /dev/null +++ b/build/linter/staticcheck/BUILD.bazel @@ -0,0 +1,26 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") +load("//build/linter/staticcheck:def.bzl", "ANALYZERS") + +[ + go_library( + name = analyzer, + srcs = [ + "analyzer.go", + "util.go", + ], + importpath = "github.com/pingcap/tidb/build/linter/staticcheck/" + analyzer, + visibility = ["//visibility:public"], + x_defs = {"name": analyzer}, + deps = [ + "//build/linter/util", + "@co_honnef_go_tools//analysis/lint", + "@co_honnef_go_tools//quickfix", + "@co_honnef_go_tools//simple", + "@co_honnef_go_tools//staticcheck", + "@co_honnef_go_tools//stylecheck", + "@co_honnef_go_tools//unused", + "@org_golang_x_tools//go/analysis", + ], + ) + for analyzer in ANALYZERS +] diff --git a/build/linter/staticcheck/analyzer.go b/build/linter/staticcheck/analyzer.go new file mode 100644 index 0000000000000..cb13969093aa9 --- /dev/null +++ b/build/linter/staticcheck/analyzer.go @@ -0,0 +1,33 @@ +// 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 staticcheck + +import ( + "github.com/pingcap/tidb/build/linter/util" + "golang.org/x/tools/go/analysis" +) + +var ( + // Value to be added during stamping + name = "dummy value please replace using x_defs" + + // Analyzer is an analyzer from staticcheck. + Analyzer *analysis.Analyzer +) + +func init() { + Analyzer = FindAnalyzerByName(name) + util.SkipAnalyzer(Analyzer) +} diff --git a/build/linter/staticcheck/def.bzl b/build/linter/staticcheck/def.bzl new file mode 100644 index 0000000000000..2e375d543b710 --- /dev/null +++ b/build/linter/staticcheck/def.bzl @@ -0,0 +1,167 @@ +# All analyzers in staticcheck. +# +# Generate this list by running: +# +# > bazel run //staticcheck/cmd/list_analyzers +# +ANALYZERS = [ + "QF1001", + "QF1002", + "QF1003", + "QF1004", + "QF1005", + "QF1006", + "QF1007", + "QF1008", + "QF1009", + "QF1010", + "QF1011", + "QF1012", + "S1000", + "S1001", + "S1002", + "S1003", + "S1004", + "S1005", + "S1006", + "S1007", + "S1008", + "S1009", + "S1010", + "S1011", + "S1012", + "S1016", + "S1017", + "S1018", + "S1019", + "S1020", + "S1021", + "S1023", + "S1024", + "S1025", + "S1028", + "S1029", + "S1030", + "S1031", + "S1032", + "S1033", + "S1034", + "S1035", + "S1036", + "S1037", + "S1038", + "S1039", + "S1040", + "SA1000", + "SA1001", + "SA1002", + "SA1003", + "SA1004", + "SA1005", + "SA1006", + "SA1007", + "SA1008", + "SA1010", + "SA1011", + "SA1012", + "SA1013", + "SA1014", + "SA1015", + "SA1016", + "SA1017", + "SA1018", + "SA1019", + "SA1020", + "SA1021", + "SA1023", + "SA1024", + "SA1025", + "SA1026", + "SA1027", + "SA1028", + "SA1029", + "SA1030", + "SA2000", + "SA2001", + "SA2002", + "SA2003", + "SA3000", + "SA3001", + "SA4000", + "SA4001", + "SA4003", + "SA4004", + "SA4005", + "SA4006", + "SA4008", + "SA4009", + "SA4010", + "SA4011", + "SA4012", + "SA4013", + "SA4014", + "SA4015", + "SA4016", + "SA4017", + "SA4018", + "SA4019", + "SA4020", + "SA4021", + "SA4022", + "SA4023", + "SA4024", + "SA4025", + "SA4026", + "SA4027", + "SA4028", + "SA4029", + "SA4030", + "SA4031", + "SA5000", + "SA5001", + "SA5002", + "SA5003", + "SA5004", + "SA5005", + "SA5007", + "SA5008", + "SA5009", + "SA5010", + "SA5011", + "SA5012", + "SA6000", + "SA6001", + "SA6002", + "SA6003", + "SA6005", + "SA9001", + "SA9002", + "SA9003", + "SA9004", + "SA9005", + "SA9006", + "SA9007", + "SA9008", + "ST1000", + "ST1001", + "ST1003", + "ST1005", + "ST1006", + "ST1008", + "ST1011", + "ST1012", + "ST1013", + "ST1015", + "ST1016", + "ST1017", + "ST1018", + "ST1019", + "ST1020", + "ST1021", + "ST1022", + "ST1023", + "U1000", +] + +def staticcheck_analyzers(analyzers, prefix_path = "//build/linter/staticcheck"): + return [prefix_path + ":" + a for a in analyzers] diff --git a/build/linter/staticcheck/util.go b/build/linter/staticcheck/util.go new file mode 100644 index 0000000000000..0c1928d564268 --- /dev/null +++ b/build/linter/staticcheck/util.go @@ -0,0 +1,55 @@ +// 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 staticcheck + +import ( + "fmt" + + "golang.org/x/tools/go/analysis" + "honnef.co/go/tools/analysis/lint" + "honnef.co/go/tools/quickfix" + "honnef.co/go/tools/simple" + "honnef.co/go/tools/staticcheck" + "honnef.co/go/tools/stylecheck" + "honnef.co/go/tools/unused" +) + +// Analyzers is the analyzers of staticcheck. +var Analyzers = func() map[string]*analysis.Analyzer { + resMap := make(map[string]*analysis.Analyzer) + + for _, analyzers := range [][]*lint.Analyzer{ + quickfix.Analyzers, + simple.Analyzers, + staticcheck.Analyzers, + stylecheck.Analyzers, + {unused.Analyzer}, + } { + for _, a := range analyzers { + resMap[a.Analyzer.Name] = a.Analyzer + } + } + + return resMap +}() + +// FindAnalyzerByName finds the analyzer with the given name. +func FindAnalyzerByName(name string) *analysis.Analyzer { + if a, ok := Analyzers[name]; ok { + return a + } + + panic(fmt.Sprintf("not a valid staticcheck analyzer: %s", name)) +} diff --git a/build/linter/util/BUILD.bazel b/build/linter/util/BUILD.bazel new file mode 100644 index 0000000000000..4ac3fec064d07 --- /dev/null +++ b/build/linter/util/BUILD.bazel @@ -0,0 +1,12 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "util", + srcs = ["util.go"], + importpath = "github.com/pingcap/tidb/build/linter/util", + visibility = ["//visibility:public"], + deps = [ + "@co_honnef_go_tools//analysis/report", + "@org_golang_x_tools//go/analysis", + ], +) diff --git a/build/linter/util/util.go b/build/linter/util/util.go new file mode 100644 index 0000000000000..d476173a973a0 --- /dev/null +++ b/build/linter/util/util.go @@ -0,0 +1,149 @@ +// 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 util + +import ( + "fmt" + "go/ast" + "go/token" + "reflect" + "strings" + + "golang.org/x/tools/go/analysis" + "honnef.co/go/tools/analysis/report" +) + +// +type skipType int + +const ( + skipNone skipType = iota + skipLinter + skipFile +) + +// Directive is a comment of the form '//lint: [arguments...]' and `//nolint:`. +// It represents instructions to the static analysis tool. +type Directive struct { + Command skipType + Linters []string + Directive *ast.Comment + Node ast.Node +} + +func parseDirective(s string) (cmd skipType, args []string) { + if strings.HasPrefix(s, "//lint:") { + s = strings.TrimPrefix(s, "//lint:") + fields := strings.Split(s, " ") + switch fields[0] { + case "ignore": + return skipLinter, fields[1:] + case "file-ignore": + return skipFile, fields[1:] + } + return skipNone, nil + } + s = strings.TrimPrefix(s, "//nolint:") + return skipLinter, []string{s} +} + +// ParseDirectives extracts all directives from a list of Go files. +func ParseDirectives(files []*ast.File, fset *token.FileSet) []Directive { + var dirs []Directive + for _, f := range files { + cm := ast.NewCommentMap(fset, f, f.Comments) + for node, cgs := range cm { + for _, cg := range cgs { + for _, c := range cg.List { + if !strings.HasPrefix(c.Text, "//lint:") && !strings.HasPrefix(c.Text, "//nolint:") { + continue + } + cmd, args := parseDirective(c.Text) + d := Directive{ + Command: cmd, + Linters: args, + Directive: c, + Node: node, + } + dirs = append(dirs, d) + } + } + } + } + return dirs +} + +func doDirectives(pass *analysis.Pass) (interface{}, error) { + return ParseDirectives(pass.Files, pass.Fset), nil +} + +// Directives is a fact that contains a list of directives. +var Directives = &analysis.Analyzer{ + Name: "directives", + Doc: "extracts linter directives", + Run: doDirectives, + RunDespiteErrors: true, + ResultType: reflect.TypeOf([]Directive{}), +} + +// SkipAnalyzer updates an analyzer from `staticcheck` and `golangci-linter` to make it work on nogo. +// They have "lint:ignore" or "nolint" to make the analyzer ignore the code. +func SkipAnalyzer(analyzer *analysis.Analyzer) { + analyzer.Requires = append(analyzer.Requires, Directives) + oldRun := analyzer.Run + analyzer.Run = func(p *analysis.Pass) (interface{}, error) { + pass := *p + oldReport := p.Report + pass.Report = func(diag analysis.Diagnostic) { + dirs := pass.ResultOf[Directives].([]Directive) + for _, dir := range dirs { + cmd := dir.Command + linters := dir.Linters + switch cmd { + case skipLinter: + ignorePos := report.DisplayPosition(pass.Fset, dir.Node.Pos()) + nodePos := report.DisplayPosition(pass.Fset, diag.Pos) + if ignorePos.Filename != nodePos.Filename || ignorePos.Line != nodePos.Line { + continue + } + for _, check := range strings.Split(linters[0], ",") { + if strings.TrimSpace(check) == analyzer.Name { + return + } + } + case skipFile: + ignorePos := report.DisplayPosition(pass.Fset, dir.Node.Pos()) + nodePos := report.DisplayPosition(pass.Fset, diag.Pos) + if ignorePos.Filename == nodePos.Filename { + return + } + default: + continue + } + } + oldReport(diag) + } + return oldRun(&pass) + } +} + +// FormatCode is to format code for nogo. +func FormatCode(code string) string { + if strings.Contains(code, "`") { + return code // TODO: properly escape or remove + } + + return fmt.Sprintf("`%s`", code) +} diff --git a/build/nogo_config.json b/build/nogo_config.json new file mode 100644 index 0000000000000..d0d99435f146b --- /dev/null +++ b/build/nogo_config.json @@ -0,0 +1,425 @@ +{ + "asmdecl": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "assign": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "atomic": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "atomicalign": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "bodyclose": { + "exclude_files": { + "external/": "no need to vet third party code" + } + }, + "bools": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "buildtag": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "printf": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "unreachable": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "composites": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code", + "br/pkg/glue/console_glue_test.go": "ignore code", + "br/pkg/restore/db_test.go": "ignore code", + ".*_/testmain\\.go$": "ignore code" + } + }, + "copylocks": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code", + "/cgo/": "ignore cgo code" + } + }, + "ctrlflow": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "deepequalerrors": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "durationcheck": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "errorsas": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "exportloopref": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "findcall": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "httpresponse": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "ifaceassert": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "ineffassign": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "inspect": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "loopclosure": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "lostcancel": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "nilfunc": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "nilness": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "pkgfact": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "shift": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "sortslice": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "stdmethods": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "stringintconv": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "structtag": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "testinggoroutine": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "tests": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "unmarshal": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "unsafeptr": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code", + "parser/digester.go": "ignore code" + } + }, + "unusedresult": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code", + "parser/digester_test.go": "ignore code" + } + }, + "S1002": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "S1004": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "S1007": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "S1009": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "S1010": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "S1012": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "S1019": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code", + "parser/parser.go": "ignore code" + } + }, + "S1020": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "S1021": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code", + "tools/check/ut.go": "ignore code" + } + }, + "S1024": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "S1030": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "SA2000": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "SA2001": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "SA2003": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "SA3000": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "SA3001": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "SA4009": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "SA5000": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "SA5001": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "SA5002": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "SA5003": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "SA5004": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "SA5005": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "SA5007": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "SA5008": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "SA5009": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "SA5010": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "SA5011": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "SA5012": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "SA6000": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "SA6001": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "SA6005": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code" + } + }, + "prealloc": { + "exclude_files": { + "/external/": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code", + "parser/yy_parser.go": "ignore generated code", + "/cgo/": "no need to vet third party code for cgo" + } + } +} diff --git a/build/patches/BUILD.bazel b/build/patches/BUILD.bazel new file mode 100644 index 0000000000000..9cc646793da3d --- /dev/null +++ b/build/patches/BUILD.bazel @@ -0,0 +1,5 @@ +filegroup( + name = "all_patches", + srcs = glob(["*.patch"]), + visibility = ["//visibility:public"], +) diff --git a/build/patches/com_github_golang_protobuf.patch b/build/patches/com_github_golang_protobuf.patch new file mode 100644 index 0000000000000..41f0137881a67 --- /dev/null +++ b/build/patches/com_github_golang_protobuf.patch @@ -0,0 +1,12 @@ +diff -urN a/descriptor/BUILD.bazel b/descriptor/BUILD.bazel +--- a/descriptor/BUILD.bazel 1969-12-31 19:00:00.000000000 -0500 ++++ b/descriptor/BUILD.bazel 2000-01-01 00:00:00.000000000 -0000 +@@ -21,7 +21,7 @@ + visibility = ["//visibility:public"], + deps = [ + "//proto:go_default_library", +- "@io_bazel_rules_go//proto/wkt:descriptor_go_proto", ++ "@com_github_golang_protobuf//protoc-gen-go/descriptor:go_default_library", + "@org_golang_google_protobuf//reflect/protodesc:go_default_library", + "@org_golang_google_protobuf//reflect/protoreflect:go_default_library", + "@org_golang_google_protobuf//runtime/protoimpl:go_default_library", diff --git a/build/patches/com_github_grpc_ecosystem_grpc_gateway.patch b/build/patches/com_github_grpc_ecosystem_grpc_gateway.patch new file mode 100644 index 0000000000000..62e17eebceaea --- /dev/null +++ b/build/patches/com_github_grpc_ecosystem_grpc_gateway.patch @@ -0,0 +1,73 @@ +diff --git a/internal/BUILD.bazel b/internal/BUILD.bazel +index 5242751fb..b3b6fa842 100644 +--- a/internal/BUILD.bazel ++++ b/internal/BUILD.bazel +@@ -4,20 +4,12 @@ load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library") + + package(default_visibility = ["//visibility:public"]) + +-proto_library( +- name = "internal_proto", +- srcs = ["errors.proto"], +- deps = ["@com_google_protobuf//:any_proto"], +-) +- +-go_proto_library( +- name = "internal_go_proto", +- importpath = "github.com/grpc-ecosystem/grpc-gateway/internal", +- proto = ":internal_proto", +-) +- + go_library( + name = "go_default_library", +- embed = [":internal_go_proto"], ++ srcs = ["errors.pb.go"], ++ deps = [ ++ "@com_github_golang_protobuf//proto:go_default_library", ++ "@com_github_golang_protobuf//ptypes/any:go_default_library", ++ ], + importpath = "github.com/grpc-ecosystem/grpc-gateway/internal", + ) +diff --git a/protoc-gen-grpc-gateway/descriptor/BUILD.bazel b/protoc-gen-grpc-gateway/descriptor/BUILD.bazel +index 02aa7d2a8..fd922a156 100644 +--- a/protoc-gen-grpc-gateway/descriptor/BUILD.bazel ++++ b/protoc-gen-grpc-gateway/descriptor/BUILD.bazel +@@ -19,8 +19,8 @@ go_library( + "@com_github_golang_glog//:go_default_library", + "@com_github_golang_protobuf//jsonpb:go_default_library_gen", + "@com_github_golang_protobuf//proto:go_default_library", +- "@go_googleapis//google/api:annotations_go_proto", ++ "@com_github_golang_protobuf//protoc-gen-go/descriptor:go_default_library", + "@io_bazel_rules_go//proto/wkt:compiler_plugin_go_proto", +- "@io_bazel_rules_go//proto/wkt:descriptor_go_proto", ++ "@org_golang_google_genproto//googleapis/api/annotations:go_default_library", + ], + ) + +diff --git a/runtime/BUILD.bazel b/runtime/BUILD.bazel +index c4d18f624..41d5319fb 100644 +--- a/runtime/BUILD.bazel ++++ b/runtime/BUILD.bazel +@@ -30,13 +30,14 @@ go_library( +- "@com_github_golang_protobuf//descriptor:go_default_library_gen", ++ "@com_github_golang_protobuf//descriptor:descriptor", + "@com_github_golang_protobuf//jsonpb:go_default_library_gen", + "@com_github_golang_protobuf//proto:go_default_library", +- "@go_googleapis//google/api:httpbody_go_proto", +- "@io_bazel_rules_go//proto/wkt:any_go_proto", +- "@io_bazel_rules_go//proto/wkt:descriptor_go_proto", +- "@io_bazel_rules_go//proto/wkt:duration_go_proto", +- "@io_bazel_rules_go//proto/wkt:field_mask_go_proto", +- "@io_bazel_rules_go//proto/wkt:timestamp_go_proto", +- "@io_bazel_rules_go//proto/wkt:wrappers_go_proto", ++ "@com_github_golang_protobuf//protoc-gen-go/descriptor:go_default_library", ++ "@com_github_golang_protobuf//ptypes:go_default_library", ++ "@com_github_golang_protobuf//ptypes/any:go_default_library", ++ "@com_github_golang_protobuf//ptypes/duration:go_default_library", ++ "@com_github_golang_protobuf//ptypes/timestamp:go_default_library", ++ "@com_github_golang_protobuf//ptypes/wrappers:go_default_library", ++ "@org_golang_google_genproto//googleapis/api/httpbody:go_default_library", ++ "@org_golang_google_genproto//protobuf/field_mask:go_default_library", + "@org_golang_google_grpc//codes:go_default_library", + "@org_golang_google_grpc//grpclog:go_default_library", + "@org_golang_google_grpc//metadata:go_default_library", diff --git a/build/patches/io_etcd_go_etcd_api_v3.patch b/build/patches/io_etcd_go_etcd_api_v3.patch new file mode 100644 index 0000000000000..becde9e5eb6e1 --- /dev/null +++ b/build/patches/io_etcd_go_etcd_api_v3.patch @@ -0,0 +1,24 @@ +diff -uprN old/io_etcd_go_etcd_api_v3/etcdserverpb/BUILD.bazel new/io_etcd_go_etcd_api_v3/etcdserverpb/BUILD.bazel +--- old/io_etcd_go_etcd_api_v3/etcdserverpb/BUILD.bazel 2022-04-12 02:09:57.000000000 +0800 ++++ new/io_etcd_go_etcd_api_v3/etcdserverpb/BUILD.bazel 2022-04-12 02:12:31.000000000 +0800 +@@ -17,7 +17,7 @@ go_library( + "//mvccpb", + "@com_github_gogo_protobuf//gogoproto", + "@com_github_golang_protobuf//proto:go_default_library", +- "@go_googleapis//google/api:annotations_go_proto", ++ "@org_golang_google_genproto//googleapis/api/annotations:annotations", + "@org_golang_google_grpc//:go_default_library", + "@org_golang_google_grpc//codes", + "@org_golang_google_grpc//status", +diff -uprN old/io_etcd_go_etcd_api_v3/etcdserverpb/gw/BUILD.bazel new/io_etcd_go_etcd_api_v3/etcdserverpb/gw/BUILD.bazel +--- old/io_etcd_go_etcd_api_v3/etcdserverpb/gw/BUILD.bazel 2022-04-12 02:12:01.000000000 +0800 ++++ new/io_etcd_go_etcd_api_v3/etcdserverpb/gw/BUILD.bazel 2022-04-12 02:09:59.000000000 +0800 +@@ -8,7 +8,7 @@ go_library( + visibility = ["//visibility:public"], + deps = [ + "//etcdserverpb", +- "@com_github_golang_protobuf//descriptor:go_default_library_gen", ++ "@com_github_golang_protobuf//descriptor:descriptor", + "@com_github_golang_protobuf//proto:go_default_library", + "@com_github_grpc_ecosystem_grpc_gateway//runtime:go_default_library", + "@com_github_grpc_ecosystem_grpc_gateway//utilities:go_default_library", diff --git a/build/patches/io_etcd_go_etcd_raft_v3.patch b/build/patches/io_etcd_go_etcd_raft_v3.patch new file mode 100644 index 0000000000000..11c777b38f4de --- /dev/null +++ b/build/patches/io_etcd_go_etcd_raft_v3.patch @@ -0,0 +1,22 @@ +diff -urN a/raftpb/BUILD.bazel b/raftpb/BUILD.bazel +--- a/raftpb/BUILD.bazel 1969-12-31 19:00:00.000000000 -0500 ++++ b/raftpb/BUILD.bazel 2000-01-01 00:00:00.000000000 -0000 +@@ -1,4 +1,5 @@ + load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") ++load("@rules_proto//proto:defs.bzl", "proto_library") + + go_library( + name = "raftpb", +@@ -28,3 +29,12 @@ + srcs = ["confstate_test.go"], + embed = [":raftpb"], + ) ++ ++# keep ++proto_library( ++ name = "raftpb_proto", ++ srcs = ["raft.proto"], ++ deps = ["@com_github_gogo_protobuf//gogoproto:gogo_proto"], ++ import_prefix = "etcd/raft/v3/", ++ visibility = ["//visibility:public"], ++) diff --git a/build/patches/io_etcd_go_etcd_server_v3.patch b/build/patches/io_etcd_go_etcd_server_v3.patch new file mode 100644 index 0000000000000..84b9e31a78577 --- /dev/null +++ b/build/patches/io_etcd_go_etcd_server_v3.patch @@ -0,0 +1,12 @@ +diff -urN a/etcdserver/api/v3election/v3electionpb/gw/BUILD.bazel b/etcdserver/api/v3election/v3electionpb/gw/BUILD.bazel +--- old/etcdserver/api/v3election/v3electionpb/gw/BUILD.bazel 2022-04-12 01:52:44.000000000 +0800 ++++ new/etcdserver/api/v3election/v3electionpb/gw/BUILD.bazel 2022-04-12 01:53:38.000000000 +0800 +@@ -8,7 +8,7 @@ go_library( + visibility = ["//visibility:public"], + deps = [ + "//etcdserver/api/v3election/v3electionpb", +- "@com_github_golang_protobuf//descriptor:go_default_library_gen", ++ "@com_github_golang_protobuf//descriptor:descriptor", + "@com_github_golang_protobuf//proto:go_default_library", + "@com_github_grpc_ecosystem_grpc_gateway//runtime:go_default_library", + "@com_github_grpc_ecosystem_grpc_gateway//utilities:go_default_library", diff --git a/build/print-workspace-status.sh b/build/print-workspace-status.sh new file mode 100755 index 0000000000000..dd2bd490812c7 --- /dev/null +++ b/build/print-workspace-status.sh @@ -0,0 +1,37 @@ +#!/bin/bash +# +# 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. + +# This test is used to test compatible for BR restore. +# It will download backup data from internal file server. +# And make sure these backup data can restore through newly BR tools to newly cluster. + +set -o errexit +set -o nounset +set -o pipefail + +TiDB_RELEASE_VERSION=$(git describe --tags --dirty --always) +TiDB_BUILD_UTCTIME=$(date -u '+%Y-%m-%d %H:%M:%S') +TIDB_GIT_HASH=$(git rev-parse HEAD) +TIDB_GIT_BRANCH=$(git rev-parse --abbrev-ref HEAD) +TIDB_EDITION=${TIDB_EDITION:-Community} + +cat < 'nSWYrpTH' or not( tbl_2.col_27 col_25 select col_25 from tbl_2 use index(primary) where ( tbl_2.col_27 > 'nSWYrpTH' or not( tbl_2.col_27 between 'CsWIuxlSjU' and 'SfwoyjUEzgg' ) ) and ( tbl_2.col_23 <= -95); col_25 +drop table if exists t1; +drop table if exists t2; +create table t1(a char(20)); +create table t2(b binary(20), c binary(20)); +insert into t1 value('-1'); +insert into t2 value(0x2D31, 0x67); +insert into t2 value(0x2D31, 0x73); +select a from t1, t2 where t1.a between t2.b and t2.c; +a +select a from t1, t2 where cast(t1.a as binary(20)) between t2.b and t2.c; +a +-1 +-1 +drop table if exists t1; +drop table if exists t2; +create table t1(a char(20)) collate utf8mb4_general_ci; +create table t2(b binary(20), c char(20)) collate utf8mb4_general_ci; +insert into t1 values ('a'); +insert into t2 values (0x0, 'A'); +select * from t1, t2 where t1.a between t2.b and t2.c; +a b c +insert into t1 values ('-1'); +insert into t2 values (0x2d31, ''); +select * from t1, t2 where t1.a in (t2.b, 3); +a b c use test diff --git a/cmd/explaintest/r/collation_check_use_collation_enabled.result b/cmd/explaintest/r/collation_check_use_collation_enabled.result index 7aee634a8f0df..5bf70a6a73a09 100644 --- a/cmd/explaintest/r/collation_check_use_collation_enabled.result +++ b/cmd/explaintest/r/collation_check_use_collation_enabled.result @@ -147,4 +147,29 @@ col_25 select col_25 from tbl_2 use index(primary) where ( tbl_2.col_27 > 'nSWYrpTH' or not( tbl_2.col_27 between 'CsWIuxlSjU' and 'SfwoyjUEzgg' ) ) and ( tbl_2.col_23 <= -95); col_25 89 +drop table if exists t1; +drop table if exists t2; +create table t1(a char(20)); +create table t2(b binary(20), c binary(20)); +insert into t1 value('-1'); +insert into t2 value(0x2D31, 0x67); +insert into t2 value(0x2D31, 0x73); +select a from t1, t2 where t1.a between t2.b and t2.c; +a +select a from t1, t2 where cast(t1.a as binary(20)) between t2.b and t2.c; +a +-1 +-1 +drop table if exists t1; +drop table if exists t2; +create table t1(a char(20)) collate utf8mb4_general_ci; +create table t2(b binary(20), c char(20)) collate utf8mb4_general_ci; +insert into t1 values ('a'); +insert into t2 values (0x0, 'A'); +select * from t1, t2 where t1.a between t2.b and t2.c; +a b c +insert into t1 values ('-1'); +insert into t2 values (0x2d31, ''); +select * from t1, t2 where t1.a in (t2.b, 3); +a b c use test diff --git a/cmd/explaintest/r/explain_cte.result b/cmd/explaintest/r/explain_cte.result index cc8804b4fc077..e4837878d3054 100644 --- a/cmd/explaintest/r/explain_cte.result +++ b/cmd/explaintest/r/explain_cte.result @@ -479,3 +479,22 @@ CTE_1 8000.00 root Non-Recursive CTE CTE_0 10000.00 root Non-Recursive CTE └─TableReader(Seed Part) 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo +drop table if exists tbl; +create table tbl (id int); +explain with t1 as (select id from tbl), t2 as (select a.id from t1 a join t1 b on a.id = b.id) select * from t2 where id in (select id from t2); +id estRows task access object operator info +HashJoin_33 8000.00 root inner join, equal:[eq(test.tbl.id, test.tbl.id)] +├─HashAgg_37(Build) 5120.00 root group by:test.tbl.id, funcs:firstrow(test.tbl.id)->test.tbl.id +│ └─Selection_38 8000.00 root not(isnull(test.tbl.id)) +│ └─CTEFullScan_39 10000.00 root CTE:t2 data:CTE_1 +└─Selection_35(Probe) 8000.00 root not(isnull(test.tbl.id)) + └─CTEFullScan_36 10000.00 root CTE:t2 data:CTE_1 +CTE_1 10000.00 root Non-Recursive CTE +└─HashJoin_25(Seed Part) 10000.00 root inner join, equal:[eq(test.tbl.id, test.tbl.id)] + ├─Selection_29(Build) 8000.00 root not(isnull(test.tbl.id)) + │ └─CTEFullScan_30 10000.00 root CTE:b data:CTE_0 + └─Selection_27(Probe) 8000.00 root not(isnull(test.tbl.id)) + └─CTEFullScan_28 10000.00 root CTE:a data:CTE_0 +CTE_0 10000.00 root Non-Recursive CTE +└─TableReader_22(Seed Part) 10000.00 root data:TableFullScan_21 + └─TableFullScan_21 10000.00 cop[tikv] table:tbl keep order:false, stats:pseudo diff --git a/cmd/explaintest/t/collation_check_use_collation.test b/cmd/explaintest/t/collation_check_use_collation.test index 04d4642656de9..ebaa37588d153 100644 --- a/cmd/explaintest/t/collation_check_use_collation.test +++ b/cmd/explaintest/t/collation_check_use_collation.test @@ -86,5 +86,28 @@ insert ignore into tbl_2 values ( 5888267793391993829,5371,94.63,-109,5728076076 select col_25 from tbl_2 where ( tbl_2.col_27 > 'nSWYrpTH' or not( tbl_2.col_27 between 'CsWIuxlSjU' and 'SfwoyjUEzgg' ) ) and ( tbl_2.col_23 <= -95); select col_25 from tbl_2 use index(primary) where ( tbl_2.col_27 > 'nSWYrpTH' or not( tbl_2.col_27 between 'CsWIuxlSjU' and 'SfwoyjUEzgg' ) ) and ( tbl_2.col_23 <= -95); +# check implicit binary collation cast +drop table if exists t1; +drop table if exists t2; +# issue 34823 +create table t1(a char(20)); +create table t2(b binary(20), c binary(20)); +insert into t1 value('-1'); +insert into t2 value(0x2D31, 0x67); +insert into t2 value(0x2D31, 0x73); +select a from t1, t2 where t1.a between t2.b and t2.c; +select a from t1, t2 where cast(t1.a as binary(20)) between t2.b and t2.c; +# binary collation in single side +drop table if exists t1; +drop table if exists t2; +create table t1(a char(20)) collate utf8mb4_general_ci; +create table t2(b binary(20), c char(20)) collate utf8mb4_general_ci; +insert into t1 values ('a'); +insert into t2 values (0x0, 'A'); +select * from t1, t2 where t1.a between t2.b and t2.c; +insert into t1 values ('-1'); +insert into t2 values (0x2d31, ''); +select * from t1, t2 where t1.a in (t2.b, 3); + # cleanup environment use test diff --git a/cmd/explaintest/t/explain_cte.test b/cmd/explaintest/t/explain_cte.test index fd6ba042c9fed..87ea10662e1c2 100644 --- a/cmd/explaintest/t/explain_cte.test +++ b/cmd/explaintest/t/explain_cte.test @@ -258,3 +258,8 @@ desc format='brief' with all_data as select v1.tps v1_tps,v2.tps v2_tps from version1 v1, version2 v2 where v1.bench_type =v2.bench_type; + +# issue 35404 +drop table if exists tbl; +create table tbl (id int); +explain with t1 as (select id from tbl), t2 as (select a.id from t1 a join t1 b on a.id = b.id) select * from t2 where id in (select id from t2); diff --git a/cmd/importer/BUILD.bazel b/cmd/importer/BUILD.bazel new file mode 100644 index 0000000000000..4f3907a2535ce --- /dev/null +++ b/cmd/importer/BUILD.bazel @@ -0,0 +1,47 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library", "go_test") + +go_library( + name = "importer_lib", + srcs = [ + "config.go", + "data.go", + "db.go", + "job.go", + "main.go", + "parser.go", + "rand.go", + "stats.go", + ], + importpath = "github.com/pingcap/tidb/cmd/importer", + visibility = ["//visibility:private"], + deps = [ + "//ddl", + "//parser", + "//parser/ast", + "//parser/model", + "//parser/mysql", + "//planner/core", + "//statistics", + "//statistics/handle", + "//types", + "//util/mathutil", + "//util/mock", + "@com_github_burntsushi_toml//:toml", + "@com_github_go_sql_driver_mysql//:mysql", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_log//:log", + "@org_uber_go_zap//:zap", + ], +) + +go_binary( + name = "importer", + embed = [":importer_lib"], + visibility = ["//visibility:public"], +) + +go_test( + name = "importer_test", + srcs = ["db_test.go"], + embed = [":importer_lib"], +) diff --git a/cmd/importer/db.go b/cmd/importer/db.go index 49f3d0ec67ad5..8b0d7353b9adf 100644 --- a/cmd/importer/db.go +++ b/cmd/importer/db.go @@ -117,7 +117,7 @@ func genRowDatas(table *table, count int) ([]string, error) { } func genRowData(table *table) (string, error) { - var values []byte // nolint: prealloc + var values []byte //nolint: prealloc for _, column := range table.columns { data, err := genColumnData(table, column) if err != nil { diff --git a/cmd/pluginpkg/BUILD.bazel b/cmd/pluginpkg/BUILD.bazel new file mode 100644 index 0000000000000..1f45577f8ef84 --- /dev/null +++ b/cmd/pluginpkg/BUILD.bazel @@ -0,0 +1,15 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library") + +go_library( + name = "pluginpkg_lib", + srcs = ["pluginpkg.go"], + importpath = "github.com/pingcap/tidb/cmd/pluginpkg", + visibility = ["//visibility:private"], + deps = ["@com_github_burntsushi_toml//:toml"], +) + +go_binary( + name = "pluginpkg", + embed = [":pluginpkg_lib"], + visibility = ["//visibility:public"], +) diff --git a/cmd/portgenerator/BUILD.bazel b/cmd/portgenerator/BUILD.bazel new file mode 100644 index 0000000000000..da9509e7de48c --- /dev/null +++ b/cmd/portgenerator/BUILD.bazel @@ -0,0 +1,19 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library") + +go_library( + name = "portgenerator_lib", + srcs = ["portgenerator.go"], + importpath = "github.com/pingcap/tidb/cmd/portgenerator", + visibility = ["//visibility:private"], + deps = [ + "@com_github_phayes_freeport//:freeport", + "@com_github_pingcap_log//:log", + "@org_uber_go_zap//:zap", + ], +) + +go_binary( + name = "portgenerator", + embed = [":portgenerator_lib"], + visibility = ["//visibility:public"], +) diff --git a/config/BUILD.bazel b/config/BUILD.bazel new file mode 100644 index 0000000000000..222adfd336194 --- /dev/null +++ b/config/BUILD.bazel @@ -0,0 +1,47 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "config", + srcs = [ + "config.go", + "config_util.go", + "const.go", + ], + importpath = "github.com/pingcap/tidb/config", + visibility = ["//visibility:public"], + deps = [ + "//parser/terror", + "//types/json", + "//util/logutil", + "//util/tikvutil", + "//util/versioninfo", + "@com_github_burntsushi_toml//:toml", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_log//:log", + "@com_github_tikv_client_go_v2//config", + "@com_github_uber_jaeger_client_go//config", + "@org_uber_go_atomic//:atomic", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "config_test", + srcs = [ + "config_test.go", + "config_util_test.go", + "main_test.go", + ], + data = glob(["**"]), + embed = [":config"], + deps = [ + "//testkit/testsetup", + "//util/logutil", + "@com_github_burntsushi_toml//:toml", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_log//:log", + "@com_github_stretchr_testify//require", + "@com_github_uber_jaeger_client_go//config", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/config/config.go b/config/config.go index fc335c3f75850..0dc6cabc75727 100644 --- a/config/config.go +++ b/config/config.go @@ -117,6 +117,7 @@ var ( map[string]string{ "check-mb4-value-in-utf8": "tidb_check_mb4_value_in_utf8", "enable-collect-execution-info": "tidb_enable_collect_execution_info", + "max-server-connections": "max_connections", }, }, { @@ -255,7 +256,8 @@ type Config struct { // BallastObjectSize set the initial size of the ballast object, the unit is byte. BallastObjectSize int `toml:"ballast-object-size" json:"ballast-object-size"` // EnableGlobalKill indicates whether to enable global kill. - EnableGlobalKill bool `toml:"enable-global-kill" json:"enable-global-kill"` + EnableGlobalKill bool `toml:"enable-global-kill" json:"enable-global-kill"` + TrxSummary TrxSummary `toml:"transaction-summary" json:"transaction-summary"` // The following items are deprecated. We need to keep them here temporarily // to support the upgrade process. They can be removed in future. @@ -473,6 +475,7 @@ type Instance struct { EnableCollectExecutionInfo bool `toml:"tidb_enable_collect_execution_info" json:"tidb_enable_collect_execution_info"` PluginDir string `toml:"plugin_dir" json:"plugin_dir"` PluginLoad string `toml:"plugin_load" json:"plugin_load"` + MaxConnections uint32 `toml:"max_connections" json:"max_connections"` } func (l *Log) getDisableTimestamp() bool { @@ -641,6 +644,8 @@ type Performance struct { // ForcePriority, MemoryUsageAlarmRatio are deprecated. ForcePriority string `toml:"force-priority" json:"force-priority"` MemoryUsageAlarmRatio float64 `toml:"memory-usage-alarm-ratio" json:"memory-usage-alarm-ratio"` + + EnableLoadFMSketch bool `toml:"enable-load-fmsketch" json:"enable-load-fmsketch"` } // PlanCache is the PlanCache section of the config. @@ -719,6 +724,22 @@ type PessimisticTxn struct { PessimisticAutoCommit AtomicBool `toml:"pessimistic-auto-commit" json:"pessimistic-auto-commit"` } +// TrxSummary is the config for transaction summary collecting. +type TrxSummary struct { + // how many transaction summary in `transaction_summary` each TiDB node should keep. + TransactionSummaryCapacity uint `toml:"transaction-summary-capacity" json:"transaction-summary-capacity"` + // how long a transaction should be executed to make it be recorded in `transaction_id_digest`. + TransactionIDDigestMinDuration uint `toml:"transaction-id-digest-min-duration" json:"transaction-id-digest-min-duration"` +} + +// Valid Validatse TrxSummary configs +func (config *TrxSummary) Valid() error { + if config.TransactionSummaryCapacity > 5000 { + return errors.New("transaction-summary.transaction-summary-capacity should not be larger than 5000") + } + return nil +} + // DefaultPessimisticTxn returns the default configuration for PessimisticTxn func DefaultPessimisticTxn() PessimisticTxn { return PessimisticTxn{ @@ -729,6 +750,15 @@ func DefaultPessimisticTxn() PessimisticTxn { } } +// DefaultTrxSummary returns the default configuration for TrxSummary collector +func DefaultTrxSummary() TrxSummary { + // TrxSummary is not enabled by default before GA + return TrxSummary{ + TransactionSummaryCapacity: 500, + TransactionIDDigestMinDuration: 2147483647, + } +} + // Plugin is the config for plugin type Plugin struct { Dir string `toml:"dir" json:"dir"` @@ -822,6 +852,7 @@ var defaultConf = Config{ EnableCollectExecutionInfo: true, PluginDir: "/data/deploy/plugin", PluginLoad: "", + MaxConnections: 0, }, Status: Status{ ReportStatus: true, @@ -864,6 +895,7 @@ var defaultConf = Config{ StatsLoadQueueSize: 1000, EnableStatsCacheMemQuota: false, RunAutoAnalyze: true, + EnableLoadFMSketch: false, }, ProxyProtocol: ProxyProtocol{ Networks: "", @@ -913,6 +945,7 @@ var defaultConf = Config{ EnableForwarding: defTiKVCfg.EnableForwarding, NewCollationsEnabledOnFirstBootstrap: true, EnableGlobalKill: true, + TrxSummary: DefaultTrxSummary(), } var ( @@ -1180,6 +1213,9 @@ func (c *Config) Valid() error { if err := c.TiKVClient.Valid(); err != nil { return err } + if err := c.TrxSummary.Valid(); err != nil { + return err + } if c.Performance.TxnTotalSizeLimit > 1<<40 { return fmt.Errorf("txn-total-size-limit should be less than %d", 1<<40) diff --git a/config/config.toml.example b/config/config.toml.example index e23f390e23efb..afc97e60e74f8 100644 --- a/config/config.toml.example +++ b/config/config.toml.example @@ -89,9 +89,6 @@ repair-mode = false # In repair mode, repairing table which is not in repair list will get wrong database or wrong table error. repair-table-list = [] -# The maximum permitted number of simultaneous client connections. When the value is 0, the number of connections is unlimited. -max-server-connections = 0 - # Whether new collations are enabled, as indicated by its name, this configuration entry take effect ONLY when a TiDB cluster bootstraps for the first time. new_collations_enabled_on_first_bootstrap = true @@ -226,6 +223,9 @@ stmt-count-limit = 5000 # Set keep alive option for tcp connection. tcp-keep-alive = true +# Set nodelay option for tcp connection. +tcp-no-delay = true + # Whether support cartesian product. cross-join = true @@ -465,3 +465,6 @@ tidb_slow_log_threshold = 300 # tidb_record_plan_in_slow_log is used to enable record query plan in slow log. # 0 is disable. 1 is enable. tidb_record_plan_in_slow_log = 1 + +# The maximum permitted number of simultaneous client connections. When the value is 0, the number of connections is unlimited. +max_connections = 0 diff --git a/config/config_test.go b/config/config_test.go index 16b5e90a5dce3..2e044062bd4e8 100644 --- a/config/config_test.go +++ b/config/config_test.go @@ -23,7 +23,6 @@ import ( "path/filepath" "reflect" "regexp" - "runtime" "strings" "testing" @@ -283,9 +282,6 @@ repair-mode = false # In repair mode, repairing table which is not in repair list will get wrong database or wrong table error. repair-table-list = [] -# The maximum permitted number of simultaneous client connections. When the value is 0, the number of connections is unlimited. -max-server-connections = 0 - # Whether new collations are enabled, as indicated by its name, this configuration entry take effect ONLY when a TiDB cluster bootstraps for the first time. new_collations_enabled_on_first_bootstrap = true @@ -310,6 +306,11 @@ deprecate-integer-display-length = false # See https://dev.mysql.com/doc/refman/8.0/en/string-type-syntax.html for more details. enable-enum-length-limit = true +[instance] + +# The maximum permitted number of simultaneous client connections. When the value is 0, the number of connections is unlimited. +max_connections = 0 + [log] # Log level: debug, info, warn, error, fatal. level = "info" @@ -708,7 +709,7 @@ unrecognized-option-test = true match, err := regexp.Match("(?:.|\n)*invalid configuration option(?:.|\n)*", []byte(err.Error())) require.NoError(t, err) require.True(t, match) - require.Equal(t, uint32(0), conf.MaxServerConnections) + require.Equal(t, uint32(0), conf.Instance.MaxConnections) err = f.Truncate(0) require.NoError(t, err) @@ -723,7 +724,6 @@ delay-clean-table-lock = 5 split-region-max-num=10000 server-version = "test_version" repair-mode = true -max-server-connections = 200 max-index-length = 3080 index-limit = 70 table-column-count-limit = 4000 @@ -736,6 +736,7 @@ enable-global-kill = true [performance] txn-total-size-limit=2000 tcp-no-delay = false +enable-load-fmsketch = true [tikv-client] commit-timeout="41s" max-batch-size=128 @@ -768,6 +769,8 @@ grpc-keepalive-timeout = 10 grpc-concurrent-streams = 2048 grpc-initial-window-size = 10240 grpc-max-send-msg-size = 40960 +[instance] +max_connections = 200 `) require.NoError(t, err) @@ -797,7 +800,7 @@ grpc-max-send-msg-size = 40960 require.Equal(t, uint64(10000), conf.SplitRegionMaxNum) require.True(t, conf.RepairMode) require.Equal(t, uint64(16), conf.TiKVClient.ResolveLockLiteThreshold) - require.Equal(t, uint32(200), conf.MaxServerConnections) + require.Equal(t, uint32(200), conf.Instance.MaxConnections) require.Equal(t, []string{"tiflash"}, conf.IsolationRead.Engines) require.Equal(t, 3080, conf.MaxIndexLength) require.Equal(t, 70, conf.IndexLimit) @@ -822,6 +825,7 @@ grpc-max-send-msg-size = 40960 require.Equal(t, uint(2048), conf.Status.GRPCConcurrentStreams) require.Equal(t, 10240, conf.Status.GRPCInitialWindowSize) require.Equal(t, 40960, conf.Status.GRPCMaxSendMsgSize) + require.True(t, conf.Performance.EnableLoadFMSketch) err = f.Truncate(0) require.NoError(t, err) @@ -1059,8 +1063,6 @@ func TestDeprecatedConfig(t *testing.T) { var expectedNewName string conf := new(Config) configFile := "config.toml" - _, localFile, _, _ := runtime.Caller(0) - configFile = filepath.Join(filepath.Dir(localFile), configFile) f, err := os.Create(configFile) require.NoError(t, err) diff --git a/ddl/BUILD.bazel b/ddl/BUILD.bazel new file mode 100644 index 0000000000000..324d39bc469ec --- /dev/null +++ b/ddl/BUILD.bazel @@ -0,0 +1,233 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "ddl", + srcs = [ + "backfilling.go", + "callback.go", + "column.go", + "ddl.go", + "ddl_algorithm.go", + "ddl_api.go", + "ddl_tiflash_api.go", + "ddl_worker.go", + "delete_range.go", + "foreign_key.go", + "generated_column.go", + "index.go", + "mock.go", + "multi_schema_change.go", + "options.go", + "partition.go", + "placement_policy.go", + "reorg.go", + "rollingback.go", + "sanity_check.go", + "schema.go", + "sequence.go", + "session_pool.go", + "split_region.go", + "stat.go", + "table.go", + "table_lock.go", + ], + importpath = "github.com/pingcap/tidb/ddl", + visibility = ["//visibility:public"], + deps = [ + "//config", + "//ddl/label", + "//ddl/placement", + "//ddl/util", + "//distsql", + "//domain/infosync", + "//expression", + "//infoschema", + "//kv", + "//meta", + "//meta/autoid", + "//metrics", + "//owner", + "//parser", + "//parser/ast", + "//parser/charset", + "//parser/format", + "//parser/model", + "//parser/mysql", + "//parser/terror", + "//parser/types", + "//sessionctx", + "//sessionctx/binloginfo", + "//sessionctx/stmtctx", + "//sessionctx/variable", + "//sessiontxn", + "//statistics", + "//statistics/handle", + "//store/copr", + "//store/driver/backoff", + "//store/helper", + "//table", + "//table/tables", + "//tablecodec", + "//tidb-binlog/pump_client", + "//types", + "//types/parser_driver", + "//util", + "//util/chunk", + "//util/codec", + "//util/collate", + "//util/dbterror", + "//util/domainutil", + "//util/gcutil", + "//util/hack", + "//util/logutil", + "//util/mathutil", + "//util/mock", + "//util/ranger", + "//util/resourcegrouptag", + "//util/rowDecoder", + "//util/set", + "//util/slice", + "//util/sqlexec", + "//util/timeutil", + "//util/topsql", + "//util/topsql/state", + "@com_github_google_uuid//:uuid", + "@com_github_ngaut_pools//:pools", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_pingcap_kvproto//pkg/kvrpcpb", + "@com_github_pingcap_kvproto//pkg/metapb", + "@com_github_pingcap_log//:log", + "@com_github_pingcap_tipb//go-tipb", + "@com_github_prometheus_client_golang//prometheus", + "@com_github_tikv_client_go_v2//error", + "@com_github_tikv_client_go_v2//oracle", + "@com_github_tikv_client_go_v2//tikv", + "@com_github_tikv_client_go_v2//tikvrpc", + "@io_etcd_go_etcd_client_v3//:client", + "@org_uber_go_atomic//:atomic", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "ddl_test", + srcs = [ + "attributes_sql_test.go", + "callback_test.go", + "cancel_test.go", + "column_change_test.go", + "column_modify_test.go", + "column_test.go", + "column_type_change_test.go", + "db_cache_test.go", + "db_change_failpoints_test.go", + "db_change_test.go", + "db_foreign_key_test.go", + "db_integration_test.go", + "db_partition_test.go", + "db_rename_test.go", + "db_table_test.go", + "db_test.go", + "ddl_algorithm_test.go", + "ddl_api_test.go", + "ddl_error_test.go", + "ddl_test.go", + "ddl_tiflash_test.go", + "ddl_worker_test.go", + "export_test.go", + "fail_test.go", + "foreign_key_test.go", + "index_change_test.go", + "index_modify_test.go", + "integration_test.go", + "main_test.go", + "modify_column_test.go", + "options_test.go", + "partition_test.go", + "placement_policy_ddl_test.go", + "placement_policy_test.go", + "placement_sql_test.go", + "primary_key_handle_test.go", + "reorg_test.go", + "repair_table_test.go", + "restart_test.go", + "rollingback_test.go", + "schema_test.go", + "sequence_test.go", + "serial_test.go", + "stat_test.go", + "table_modify_test.go", + "table_split_test.go", + "table_test.go", + "tiflash_replica_test.go", + ], + embed = [":ddl"], + flaky = True, + shard_count = 50, + deps = [ + "//config", + "//ddl/placement", + "//ddl/testutil", + "//ddl/util", + "//domain", + "//domain/infosync", + "//errno", + "//executor", + "//infoschema", + "//kv", + "//meta", + "//meta/autoid", + "//parser", + "//parser/ast", + "//parser/auth", + "//parser/charset", + "//parser/model", + "//parser/mysql", + "//parser/terror", + "//parser/types", + "//planner/core", + "//session", + "//sessionctx", + "//sessionctx/stmtctx", + "//sessionctx/variable", + "//sessiontxn", + "//store/gcworker", + "//store/helper", + "//store/mockstore", + "//store/mockstore/unistore", + "//table", + "//table/tables", + "//tablecodec", + "//testkit", + "//testkit/external", + "//testkit/testsetup", + "//testkit/testutil", + "//types", + "//util", + "//util/codec", + "//util/collate", + "//util/dbterror", + "//util/domainutil", + "//util/gcutil", + "//util/logutil", + "//util/mock", + "//util/sem", + "//util/sqlexec", + "@com_github_ngaut_pools//:pools", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_pingcap_kvproto//pkg/metapb", + "@com_github_pingcap_log//:log", + "@com_github_stretchr_testify//require", + "@com_github_tikv_client_go_v2//oracle", + "@com_github_tikv_client_go_v2//testutils", + "@com_github_tikv_client_go_v2//tikv", + "@io_etcd_go_etcd_client_v3//:client", + "@org_golang_x_exp//slices", + "@org_golang_x_net//context", + "@org_uber_go_atomic//:atomic", + "@org_uber_go_goleak//:goleak", + "@org_uber_go_zap//:zap", + ], +) diff --git a/ddl/cancel_test.go b/ddl/cancel_test.go index c217ef91f8885..cca3047083a99 100644 --- a/ddl/cancel_test.go +++ b/ddl/cancel_test.go @@ -32,12 +32,41 @@ import ( type testCancelJob struct { sql string ok bool - cancelState model.SchemaState + cancelState interface{} // model.SchemaState | []model.SchemaState onJobBefore bool onJobUpdate bool prepareSQL []string } +type subStates = []model.SchemaState + +func testMatchCancelState(t *testing.T, job *model.Job, cancelState interface{}, sql string) bool { + switch v := cancelState.(type) { + case model.SchemaState: + if job.Type == model.ActionMultiSchemaChange { + msg := fmt.Sprintf("unexpected multi-schema change(sql: %s, cancel state: %s)", sql, v) + require.Failf(t, msg, "use []model.SchemaState as cancel states instead") + return false + } + return job.SchemaState == v + case subStates: // For multi-schema change sub-jobs. + if job.MultiSchemaInfo == nil { + msg := fmt.Sprintf("not multi-schema change(sql: %s, cancel state: %v)", sql, v) + require.Failf(t, msg, "use model.SchemaState as the cancel state instead") + return false + } + require.Equal(t, len(job.MultiSchemaInfo.SubJobs), len(v), sql) + for i, subJobSchemaState := range v { + if job.MultiSchemaInfo.SubJobs[i].SchemaState != subJobSchemaState { + return false + } + } + return true + default: + return false + } +} + var allTestCase = []testCancelJob{ // Add index. {"create unique index c3_index on t_partition (c1)", true, model.StateWriteReorganization, true, true, nil}, @@ -246,7 +275,7 @@ func TestCancel(t *testing.T) { cancelWhenReorgNotStart := false hookFunc := func(job *model.Job) { - if job.SchemaState == allTestCase[i.Load()].cancelState && !cancel { + if testMatchCancelState(t, job, allTestCase[i.Load()].cancelState, allTestCase[i.Load()].sql) && !cancel { if !cancelWhenReorgNotStart && job.SchemaState == model.StateWriteReorganization && job.MayNeedReorg() && job.RowCount == 0 { return } diff --git a/ddl/column.go b/ddl/column.go index e271d6a540226..0ac17d69f5bb7 100644 --- a/ddl/column.go +++ b/ddl/column.go @@ -1548,7 +1548,7 @@ func (w *worker) doModifyColumn( newCol, oldCol *model.ColumnInfo, pos *ast.ColumnPosition) (ver int64, _ error) { if oldCol.ID != newCol.ID { job.State = model.JobStateRollingback - return ver, dbterror.ErrKeyColumnDoesNotExits.GenWithStack("column %s id %d does not exist, this column may have been updated by other DDL ran in parallel", oldCol.Name, newCol.ID) + return ver, dbterror.ErrColumnInChange.GenWithStackByArgs(oldCol.Name, newCol.ID) } // Column from null to not null. if !mysql.HasNotNullFlag(oldCol.GetFlag()) && mysql.HasNotNullFlag(newCol.GetFlag()) { diff --git a/ddl/column_change_test.go b/ddl/column_change_test.go index bd9afd6a5a0b7..e1f206514366a 100644 --- a/ddl/column_change_test.go +++ b/ddl/column_change_test.go @@ -63,7 +63,6 @@ func TestColumnAdd(t *testing.T) { var jobID int64 tc.OnJobUpdatedExported = func(job *model.Job) { jobID = job.ID - require.NoError(t, dom.Reload()) tbl, exist := dom.InfoSchema().TableByID(job.TableID) require.True(t, exist) switch job.SchemaState { @@ -96,6 +95,9 @@ func TestColumnAdd(t *testing.T) { } } tc.OnJobUpdatedExported = func(job *model.Job) { + if job.NotStarted() { + return + } jobID = job.ID tbl := external.GetTableByName(t, internal, "test", "t") if job.SchemaState != model.StatePublic { @@ -224,7 +226,7 @@ func checkAddWriteOnly(ctx sessionctx.Context, deleteOnlyTable, writeOnlyTable t return errors.Trace(err) } err = checkResult(ctx, writeOnlyTable, writeOnlyTable.WritableCols(), [][]string{ - {"1", "2", ""}, + {"1", "2", "3"}, {"2", "3", "3"}, }) if err != nil { @@ -236,7 +238,7 @@ func checkAddWriteOnly(ctx sessionctx.Context, deleteOnlyTable, writeOnlyTable t return errors.Trace(err) } got := fmt.Sprintf("%v", row) - expect := fmt.Sprintf("%v", []types.Datum{types.NewDatum(1), types.NewDatum(2), types.NewDatum(nil)}) + expect := fmt.Sprintf("%v", []types.Datum{types.NewDatum(1), types.NewDatum(2), types.NewDatum(3)}) if got != expect { return errors.Errorf("expect %v, got %v", expect, got) } diff --git a/ddl/column_modify_test.go b/ddl/column_modify_test.go index 7967a72e4e952..5fd3c0a932ebb 100644 --- a/ddl/column_modify_test.go +++ b/ddl/column_modify_test.go @@ -643,6 +643,30 @@ func TestColumnModifyingDefinition(t *testing.T) { tk.MustGetErrCode("alter table test2 change c1 a1 bigint not null;", mysql.WarnDataTruncated) } +func TestColumnModifyingDefaultValue(t *testing.T) { + store, clean := testkit.CreateMockStoreWithSchemaLease(t, columnModifyLease) + defer clean() + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create table t (a int default 1);") + tk.MustExec("alter table t change a a int default 0.00;") + ret := tk.MustQuery("show create table t").Rows()[0][1] + require.True(t, strings.Contains(ret.(string), "`a` int(11) DEFAULT '0'")) + + tk.MustExec("drop table if exists t;") + tk.MustExec("create table t (a int default 1.25);") + tk.MustExec("alter table t change a a int default 2.8;") + ret = tk.MustQuery("show create table t").Rows()[0][1] + require.True(t, strings.Contains(ret.(string), "`a` int(11) DEFAULT '3'")) + + tk.MustExec("drop table if exists t;") + tk.MustExec("create table t (a float default 1.25);") + tk.MustExec("alter table t change a a float default '0012.32';") + ret = tk.MustQuery("show create table t").Rows()[0][1] + require.True(t, strings.Contains(ret.(string), "`a` float DEFAULT '12.32'")) +} + func TestTransactionWithWriteOnlyColumn(t *testing.T) { store, dom, clean := testkit.CreateMockStoreAndDomainWithSchemaLease(t, columnModifyLease) defer clean() diff --git a/ddl/column_test.go b/ddl/column_test.go index fe6fd52ee5558..b29ea2d32101e 100644 --- a/ddl/column_test.go +++ b/ddl/column_test.go @@ -890,7 +890,7 @@ func TestDropColumns(t *testing.T) { d.SetHook(tc) - jobID := testDropColumns(tk, t, testNewContext(store), tableID, colNames, false, dom) + jobID := testDropColumns(tk, t, testkit.NewTestKit(t, store).Session(), tableID, colNames, false, dom) testCheckJobDone(t, store, jobID, false) mu.Lock() hErr := hookErr diff --git a/ddl/column_type_change_test.go b/ddl/column_type_change_test.go index e6672616ace29..c68f87c9a7dde 100644 --- a/ddl/column_type_change_test.go +++ b/ddl/column_type_change_test.go @@ -102,8 +102,7 @@ func TestColumnTypeChangeBetweenInteger(t *testing.T) { tk.MustGetErrCode("alter table t modify column a mediumint", errno.ErrDataOutOfRange) tk.MustGetErrCode("alter table t modify column a smallint", errno.ErrDataOutOfRange) tk.MustGetErrCode("alter table t modify column a tinyint", errno.ErrDataOutOfRange) - _, err = tk.Exec("admin check table t") - require.NoError(t, err) + tk.MustExec("admin check table t") } func TestColumnTypeChangeStateBetweenInteger(t *testing.T) { @@ -662,7 +661,7 @@ func TestColumnTypeChangeFromStringToOthers(t *testing.T) { // MySQL will get "ERROR 1366 (HY000): Incorrect DECIMAL value: '0' for column '' at row -1" error. tk.MustExec("insert into t(vc) values ('abc')") - tk.MustGetErrCode("alter table t modify vc decimal(5,3)", errno.ErrBadNumber) + tk.MustGetErrCode("alter table t modify vc decimal(5,3)", errno.ErrTruncatedWrongValue) } func TestColumnTypeChangeFromNumericToOthers(t *testing.T) { @@ -1299,7 +1298,7 @@ func TestColumnTypeChangeFromJsonToOthers(t *testing.T) { tk.MustExec("alter table t modify ui decimal(20, 10)") tk.MustExec("alter table t modify f64 decimal(20, 10)") // MySQL will get "ERROR 1366 (HY000): Incorrect DECIMAL value: '0' for column '' at row -1". - tk.MustGetErrCode("alter table t modify str decimal(20, 10)", errno.ErrBadNumber) + tk.MustGetErrCode("alter table t modify str decimal(20, 10)", errno.ErrTruncatedWrongValue) tk.MustExec("alter table t modify nul decimal(20, 10)") tk.MustQuery("select * from t").Check(testkit.Rows("{\"obj\": 100} [-1, 0, 1] null 1.0000000000 0.0000000000 -22.0000000000 22.0000000000 323232323.3232323500 \"json string\" ")) @@ -1722,7 +1721,7 @@ func TestChangingColOriginDefaultValueAfterAddColAndCastSucc(t *testing.T) { // For writable column: // Insert / Update should set the column with the casted-related column value. sql := fmt.Sprintf("insert into t values(%d, %d, '2021-06-06 12:13:14')", i+3, i+3) - _, err := tk1.Exec(sql) + err := tk1.ExecToErr(sql) if err != nil { checkErr = err return @@ -1730,7 +1729,7 @@ func TestChangingColOriginDefaultValueAfterAddColAndCastSucc(t *testing.T) { if job.SchemaState == model.StateWriteOnly { // The casted value will be inserted into changing column too. // for point get - _, err := tk1.Exec("update t set b = -1 where a = 1") + err := tk1.ExecToErr("update t set b = -1 where a = 1") if err != nil { checkErr = err return @@ -1738,7 +1737,7 @@ func TestChangingColOriginDefaultValueAfterAddColAndCastSucc(t *testing.T) { } else { // The casted value will be inserted into changing column too. // for point get - _, err := tk1.Exec("update t set b = -2 where a = 2") + err := tk1.ExecToErr("update t set b = -2 where a = 2") if err != nil { checkErr = err return @@ -2332,19 +2331,13 @@ func TestChangeNullValueFromOtherTypeToTimestamp(t *testing.T) { prepare2() // only from other type NULL to timestamp type NOT NULL, it should be successful. (timestamp to timestamp excluded) - _, err = tk.Exec("alter table t modify column a timestamp NOT NULL") - require.Error(t, err) - require.Equal(t, "[ddl:1265]Data truncated for column 'a' at row 1", err.Error()) + tk.MustGetErrMsg("alter table t modify column a timestamp NOT NULL", "[ddl:1265]Data truncated for column 'a' at row 1") // Some dml cases. tk.MustExec("drop table if exists t") tk.MustExec("create table t(a timestamp NOT NULL)") - _, err = tk.Exec("insert into t values()") - require.Error(t, err) - require.Equal(t, "[table:1364]Field 'a' doesn't have a default value", err.Error()) - - _, err = tk.Exec("insert into t values(null)") - require.Equal(t, "[table:1048]Column 'a' cannot be null", err.Error()) + tk.MustGetErrMsg("insert into t values()", "[table:1364]Field 'a' doesn't have a default value") + tk.MustGetErrMsg("insert into t values(null)", "[table:1048]Column 'a' cannot be null") } func TestColumnTypeChangeBetweenFloatAndDouble(t *testing.T) { diff --git a/ddl/db_cache_test.go b/ddl/db_cache_test.go index 3ffcbcb18b576..8343cad58f37b 100644 --- a/ddl/db_cache_test.go +++ b/ddl/db_cache_test.go @@ -22,7 +22,6 @@ import ( "github.com/pingcap/tidb/errno" "github.com/pingcap/tidb/parser/auth" "github.com/pingcap/tidb/parser/model" - "github.com/pingcap/tidb/parser/terror" "github.com/pingcap/tidb/session" "github.com/pingcap/tidb/store/mockstore" "github.com/pingcap/tidb/testkit" @@ -170,8 +169,7 @@ func TestAlterTableCache(t *testing.T) { tk.MustExec("begin") tk.MustExec("insert into t1 set a=1;") tk2.MustExec("alter table t1 cache;") - _, err = tk.Exec("commit") - require.True(t, terror.ErrorEqual(domain.ErrInfoSchemaChanged, err)) + tk.MustGetDBError("commit", domain.ErrInfoSchemaChanged) /* Test can skip schema checker */ tk.MustExec("begin") tk.MustExec("alter table t1 nocache") diff --git a/ddl/db_change_test.go b/ddl/db_change_test.go index 2ac1d1974eea2..e715890e67bca 100644 --- a/ddl/db_change_test.go +++ b/ddl/db_change_test.go @@ -983,7 +983,7 @@ func TestParallelAlterModifyColumnWithData(t *testing.T) { sql := "ALTER TABLE t MODIFY COLUMN c int;" f := func(err1, err2 error) { require.NoError(t, err1) - require.EqualError(t, err2, "[ddl:1072]column c id 3 does not exist, this column may have been updated by other DDL ran in parallel") + require.EqualError(t, err2, "[ddl:8245]column c id 3 does not exist, this column may have been updated by other DDL ran in parallel") rs, err := tk.Exec("select * from t") require.NoError(t, err) sRows, err := session.ResultSetToStringSlice(context.Background(), tk.Session(), rs) @@ -1057,7 +1057,7 @@ func TestParallelAlterModifyColumnToNotNullWithData(t *testing.T) { sql := "ALTER TABLE t MODIFY COLUMN c int not null;" f := func(err1, err2 error) { require.NoError(t, err1) - require.EqualError(t, err2, "[ddl:1072]column c id 3 does not exist, this column may have been updated by other DDL ran in parallel") + require.EqualError(t, err2, "[ddl:8245]column c id 3 does not exist, this column may have been updated by other DDL ran in parallel") rs, err := tk.Exec("select * from t") require.NoError(t, err) sRows, err := session.ResultSetToStringSlice(context.Background(), tk.Session(), rs) diff --git a/ddl/db_integration_test.go b/ddl/db_integration_test.go index 16dfcdc7ef716..23c10805724be 100644 --- a/ddl/db_integration_test.go +++ b/ddl/db_integration_test.go @@ -119,13 +119,8 @@ func TestInvalidDefault(t *testing.T) { tk.MustExec("USE test;") - _, err := tk.Exec("create table t(c1 decimal default 1.7976931348623157E308)") - require.Error(t, err) - require.Truef(t, terror.ErrorEqual(err, types.ErrInvalidDefault), "err %v", err) - - _, err = tk.Exec("create table t( c1 varchar(2) default 'TiDB');") - require.Error(t, err) - require.Truef(t, terror.ErrorEqual(err, types.ErrInvalidDefault), "err %v", err) + tk.MustGetDBError("create table t(c1 decimal default 1.7976931348623157E308)", types.ErrInvalidDefault) + tk.MustGetDBError("create table t( c1 varchar(2) default 'TiDB');", types.ErrInvalidDefault) } // TestKeyWithoutLength for issue #13452 @@ -133,12 +128,9 @@ func TestKeyWithoutLengthCreateTable(t *testing.T) { store, clean := testkit.CreateMockStore(t) defer clean() tk := testkit.NewTestKit(t, store) - tk.MustExec("USE test") - - _, err := tk.Exec("create table t_without_length (a text primary key)") - require.Error(t, err) - require.Regexp(t, ".*BLOB/TEXT column 'a' used in key specification without a key length", err.Error()) + tk.MustMatchErrMsg("create table t_without_length (a text primary key)", + ".*BLOB/TEXT column 'a' used in key specification without a key length") } // TestInvalidNameWhenCreateTable for issue #3848 @@ -276,16 +268,16 @@ func TestIssue19229(t *testing.T) { _, err := tk.Exec("insert into enumt values('xxx');") terr := errors.Cause(err).(*terror.Error) require.Equal(t, errors.ErrCode(errno.WarnDataTruncated), terr.Code()) - _, err = tk.Exec("insert into enumt values(-1);") + err = tk.ExecToErr("insert into enumt values(-1);") terr = errors.Cause(err).(*terror.Error) require.Equal(t, errors.ErrCode(errno.WarnDataTruncated), terr.Code()) tk.MustExec("drop table enumt") tk.MustExec("CREATE TABLE sett (type set('a', 'b') );") - _, err = tk.Exec("insert into sett values('xxx');") + err = tk.ExecToErr("insert into sett values('xxx');") terr = errors.Cause(err).(*terror.Error) require.Equal(t, errors.ErrCode(errno.WarnDataTruncated), terr.Code()) - _, err = tk.Exec("insert into sett values(-1);") + err = tk.ExecToErr("insert into sett values(-1);") terr = errors.Cause(err).(*terror.Error) require.Equal(t, errors.ErrCode(errno.WarnDataTruncated), terr.Code()) tk.MustExec("drop table sett") @@ -935,14 +927,10 @@ func TestModifyColumnOption(t *testing.T) { assertErrCode("alter table t2 modify column c int references t1(a)", errMsg) _, err := tk.Exec("alter table t1 change a a varchar(16)") require.NoError(t, err) - _, err = tk.Exec("alter table t1 change a a varchar(10)") - require.NoError(t, err) - _, err = tk.Exec("alter table t1 change a a datetime") - require.NoError(t, err) - _, err = tk.Exec("alter table t1 change a a int(11) unsigned") - require.NoError(t, err) - _, err = tk.Exec("alter table t2 change b b int(11) unsigned") - require.NoError(t, err) + tk.MustExec("alter table t1 change a a varchar(10)") + tk.MustExec("alter table t1 change a a datetime") + tk.MustExec("alter table t1 change a a int(11) unsigned") + tk.MustExec("alter table t2 change b b int(11) unsigned") } func TestIndexOnMultipleGeneratedColumn(t *testing.T) { @@ -1618,8 +1606,8 @@ func TestAlterColumn(t *testing.T) { // TODO: After fix issue 2606. // tk.MustExec( "alter table test_alter_column alter column d set default null") tk.MustExec("alter table test_alter_column alter column a drop default") - tk.MustExec("insert into test_alter_column set b = 'd', c = 'dd'") - tk.MustQuery("select a from test_alter_column").Check(testkit.Rows("111", "222", "222", "123", "")) + tk.MustGetErrCode("insert into test_alter_column set b = 'd', c = 'dd'", errno.ErrNoDefaultForField) + tk.MustQuery("select a from test_alter_column").Check(testkit.Rows("111", "222", "222", "123")) // for failing tests sql := "alter table db_not_exist.test_alter_column alter column b set default 'c'" @@ -1635,9 +1623,9 @@ func TestAlterColumn(t *testing.T) { // is forbidden as expected. tk.MustExec("drop table if exists mc") tk.MustExec("create table mc(a int key nonclustered, b int, c int)") - _, err = tk.Exec("alter table mc modify column a int key") // Adds a new primary key + err = tk.ExecToErr("alter table mc modify column a int key") // Adds a new primary key require.Error(t, err) - _, err = tk.Exec("alter table mc modify column c int unique") // Adds a new unique key + err = tk.ExecToErr("alter table mc modify column c int unique") // Adds a new unique key require.Error(t, err) result := tk.MustQuery("show create table mc") createSQL := result.Rows()[0][1] @@ -1663,7 +1651,7 @@ func TestAlterColumn(t *testing.T) { createSQL = result.Rows()[0][1] expected = "CREATE TABLE `mc` (\n `a` bigint(20) NOT NULL AUTO_INCREMENT,\n `b` int(11) DEFAULT NULL,\n PRIMARY KEY (`a`) /*T![clustered_index] NONCLUSTERED */\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin" require.Equal(t, expected, createSQL) - _, err = tk.Exec("alter table mc modify column a bigint") // Droppping auto_increment is not allow when @@tidb_allow_remove_auto_inc == 'off' + err = tk.ExecToErr("alter table mc modify column a bigint") // Droppping auto_increment is not allow when @@tidb_allow_remove_auto_inc == 'off' require.Error(t, err) tk.MustExec("set @@tidb_allow_remove_auto_inc = on") tk.MustExec("alter table mc modify column a bigint") // Dropping auto_increment is ok when @@tidb_allow_remove_auto_inc == 'on' @@ -1672,7 +1660,7 @@ func TestAlterColumn(t *testing.T) { expected = "CREATE TABLE `mc` (\n `a` bigint(20) NOT NULL,\n `b` int(11) DEFAULT NULL,\n PRIMARY KEY (`a`) /*T![clustered_index] NONCLUSTERED */\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin" require.Equal(t, expected, createSQL) - _, err = tk.Exec("alter table mc modify column a bigint auto_increment") // Adds auto_increment should throw error + err = tk.ExecToErr("alter table mc modify column a bigint auto_increment") // Adds auto_increment should throw error require.Error(t, err) tk.MustExec("drop table if exists t") @@ -1705,6 +1693,65 @@ func TestAlterColumn(t *testing.T) { require.NotEqual(t, "000", updateTime3[len(updateTime3)-3:]) updateTime6 := rows[0][2].(string) require.NotEqual(t, "000000", updateTime6[len(updateTime6)-6:]) + + tk.MustExec("set sql_mode=default") + tk.MustExec("drop table if exists t") + tk.MustExec("CREATE TABLE `t` (`a` int auto_increment, b int, key i(a))") + tk.MustExec("alter table t alter column a drop default") + tk.MustGetErrCode("insert into t values ()", errno.ErrNoDefaultForField) + tk.MustExec("insert into t values (1, a + 1)") + + tk.MustExec("drop table if exists t") + tk.MustExec("CREATE TABLE `t` (`a` int)") + tk.MustExec("alter table t alter column a drop default") + tk.MustGetErrCode("insert into t values ()", errno.ErrNoDefaultForField) + + tk.MustExec("drop table if exists t") + tk.MustExec("CREATE TABLE `t` (`a` enum('a', 'b'))") + tk.MustExec("alter table t alter column a drop default") + tk.MustExec("insert into t values ()") + tk.MustQuery("select * from t").Check(testkit.Rows("")) + + tk.MustExec("drop table if exists t") + tk.MustExec("CREATE TABLE `t` (`a` enum('a', 'b') not null)") + tk.MustExec("alter table t alter column a drop default") + tk.MustExec("insert into t values ()") + tk.MustQuery("select * from t").Check(testkit.Rows("a")) + + tk.MustExec("set sql_mode=''") + + tk.MustExec("drop table if exists t") + tk.MustExec("CREATE TABLE `t` (`a` int auto_increment, key i(a))") + tk.MustExec("alter table t alter column a drop default") + tk.MustExec("insert into t values ()") + tk.MustQuery("show warnings").Check(testkit.Rows("Warning 1364 Field 'a' doesn't have a default value")) + tk.MustQuery("select * from t").Check(testkit.Rows("1")) + + tk.MustExec("drop table if exists t") + tk.MustExec("CREATE TABLE `t` (`a` int)") + tk.MustExec("alter table t alter column a drop default") + tk.MustExec("insert into t values ()") + tk.MustQuery("show warnings").Check(testkit.Rows("Warning 1364 Field 'a' doesn't have a default value")) + tk.MustQuery("select * from t").Check(testkit.Rows("")) + + tk.MustExec("drop table if exists t") + tk.MustExec("CREATE TABLE `t` (`a` int not null)") + tk.MustExec("alter table t alter column a drop default") + tk.MustExec("insert into t values ()") + tk.MustQuery("show warnings").Check(testkit.Rows("Warning 1364 Field 'a' doesn't have a default value")) + tk.MustQuery("select * from t").Check(testkit.Rows("0")) + + tk.MustExec("drop table if exists t") + tk.MustExec("CREATE TABLE `t` (`a` enum('a', 'b'))") + tk.MustExec("alter table t alter column a drop default") + tk.MustExec("insert into t values ()") + tk.MustQuery("select * from t").Check(testkit.Rows("")) + + tk.MustExec("drop table if exists t") + tk.MustExec("CREATE TABLE `t` (`a` enum('a', 'b') not null)") + tk.MustExec("alter table t alter column a drop default") + tk.MustExec("insert into t values ()") + tk.MustQuery("select * from t").Check(testkit.Rows("a")) } func assertWarningExec(tk *testkit.TestKit, t *testing.T, sql string, expectedWarn *terror.Error) { @@ -2601,14 +2648,10 @@ func TestCreateTableWithAutoIdCache(t *testing.T) { // Test auto_id_cache overflows int64. tk.MustExec("drop table if exists t;") - _, err = tk.Exec("create table t(a int) auto_id_cache = 9223372036854775808") - require.Error(t, err) - require.Equal(t, "table option auto_id_cache overflows int64", err.Error()) + tk.MustGetErrMsg("create table t(a int) auto_id_cache = 9223372036854775808", "table option auto_id_cache overflows int64") tk.MustExec("create table t(a int) auto_id_cache = 9223372036854775807") - _, err = tk.Exec("alter table t auto_id_cache = 9223372036854775808") - require.Error(t, err) - require.Equal(t, "table option auto_id_cache overflows int64", err.Error()) + tk.MustGetErrMsg("alter table t auto_id_cache = 9223372036854775808", "table option auto_id_cache overflows int64") } func TestAlterIndexVisibility(t *testing.T) { @@ -2745,10 +2788,7 @@ func TestDropLastVisibleColumnOrColumns(t *testing.T) { require.Equal(t, "[ddl:1113]A table must have at least 1 column", err.Error()) // for visible columns tk.MustExec("create table t_drop_last_columns(x int, y int, key((1+1)))") - _, err = tk.Exec("alter table t_drop_last_columns drop column x, drop column y") - require.Error(t, err) - require.Equal(t, "[ddl:1113]A table must have at least 1 column", err.Error()) - + tk.MustGetErrMsg("alter table t_drop_last_columns drop column x, drop column y", "[ddl:1113]A table must have at least 1 column") tk.MustExec("drop table if exists t_drop_last_column, t_drop_last_columns") } @@ -3033,8 +3073,7 @@ func TestIssue22028(t *testing.T) { tk.MustExec("drop table if exists t;") tk.MustExec("create table t(a double);") - _, err = tk.Exec("ALTER TABLE t MODIFY COLUMN a DOUBLE(0,0);") - require.Equal(t, "[types:1439]Display width out of range for column 'a' (max = 255)", err.Error()) + tk.MustGetErrMsg("ALTER TABLE t MODIFY COLUMN a DOUBLE(0,0);", "[types:1439]Display width out of range for column 'a' (max = 255)") } func TestIssue21835(t *testing.T) { @@ -3043,8 +3082,7 @@ func TestIssue21835(t *testing.T) { tk := testkit.NewTestKit(t, store) tk.MustExec("use test") tk.MustExec("drop table if exists t;") - _, err := tk.Exec("create table t( col decimal(1,2) not null default 0);") - require.Equal(t, "[types:1427]For float(M,D), double(M,D) or decimal(M,D), M must be >= D (column 'col').", err.Error()) + tk.MustGetErrMsg("create table t( col decimal(1,2) not null default 0);", "[types:1427]For float(M,D), double(M,D) or decimal(M,D), M must be >= D (column 'col').") } func TestCreateTemporaryTable(t *testing.T) { @@ -3088,7 +3126,7 @@ func TestCreateTemporaryTable(t *testing.T) { tk.MustExec("create temporary table tmp_db.t2 (id int)") tk.MustQuery("select * from t1") // No error tk.MustExec("drop database tmp_db") - _, err := tk.Exec("select * from t1") + err := tk.ExecToErr("select * from t1") require.Error(t, err) // In MySQL, drop DB does not really drop the table, it's back! tk.MustExec("create database tmp_db") @@ -3098,7 +3136,7 @@ func TestCreateTemporaryTable(t *testing.T) { // When local temporary table overlap the normal table, it takes a higher priority. tk.MustExec("create table overlap (id int)") tk.MustExec("create temporary table overlap (a int, b int)") - _, err = tk.Exec("insert into overlap values (1)") // column not match + err = tk.ExecToErr("insert into overlap values (1)") // column not match require.Error(t, err) tk.MustExec("insert into overlap values (1, 1)") @@ -3115,7 +3153,7 @@ func TestCreateTemporaryTable(t *testing.T) { // Check create temporary table for if not exists tk.MustExec("create temporary table b_local_temp_table (id int)") - _, err = tk.Exec("create temporary table b_local_temp_table (id int)") + err = tk.ExecToErr("create temporary table b_local_temp_table (id int)") require.True(t, infoschema.ErrTableExists.Equal(err)) tk.MustExec("create temporary table if not exists b_local_temp_table (id int)") @@ -3297,55 +3335,43 @@ func TestAvoidCreateViewOnLocalTemporaryTable(t *testing.T) { tk.MustExec("create temporary table tt2 (c int, d int)") checkCreateView := func() { - _, err := tk.Exec("create view v1 as select * from tt1") + err := tk.ExecToErr("create view v1 as select * from tt1") require.True(t, core.ErrViewSelectTemporaryTable.Equal(err)) - _, err = tk.Exec("select * from v1") - require.Error(t, err) - require.Equal(t, "[schema:1146]Table 'test.v1' doesn't exist", err.Error()) + tk.MustGetErrMsg("select * from v1", "[schema:1146]Table 'test.v1' doesn't exist") - _, err = tk.Exec("create view v1 as select * from (select * from tt1) as tt") + err = tk.ExecToErr("create view v1 as select * from (select * from tt1) as tt") require.True(t, core.ErrViewSelectTemporaryTable.Equal(err)) - _, err = tk.Exec("select * from v1") - require.Error(t, err) - require.Equal(t, "[schema:1146]Table 'test.v1' doesn't exist", err.Error()) + tk.MustGetErrMsg("select * from v1", "[schema:1146]Table 'test.v1' doesn't exist") - _, err = tk.Exec("create view v2 as select * from tt0 union select * from tt1") + err = tk.ExecToErr("create view v2 as select * from tt0 union select * from tt1") require.True(t, core.ErrViewSelectTemporaryTable.Equal(err)) - _, err = tk.Exec("select * from v2") + err = tk.ExecToErr("select * from v2") require.Error(t, err) require.Equal(t, "[schema:1146]Table 'test.v2' doesn't exist", err.Error()) - _, err = tk.Exec("create view v3 as select * from tt0, tt1 where tt0.a = tt1.a") + err = tk.ExecToErr("create view v3 as select * from tt0, tt1 where tt0.a = tt1.a") require.True(t, core.ErrViewSelectTemporaryTable.Equal(err)) - _, err = tk.Exec("select * from v3") + err = tk.ExecToErr("select * from v3") require.Error(t, err) require.Equal(t, "[schema:1146]Table 'test.v3' doesn't exist", err.Error()) - _, err = tk.Exec("create view v4 as select a, (select count(1) from tt1 where tt1.a = tt0.a) as tt1a from tt0") + err = tk.ExecToErr("create view v4 as select a, (select count(1) from tt1 where tt1.a = tt0.a) as tt1a from tt0") require.True(t, core.ErrViewSelectTemporaryTable.Equal(err)) - _, err = tk.Exec("select * from v4") - require.Error(t, err) - require.Equal(t, "[schema:1146]Table 'test.v4' doesn't exist", err.Error()) + tk.MustGetErrMsg("select * from v4", "[schema:1146]Table 'test.v4' doesn't exist") - _, err = tk.Exec("create view v5 as select a, (select count(1) from tt1 where tt1.a = 1) as tt1a from tt0") + err = tk.ExecToErr("create view v5 as select a, (select count(1) from tt1 where tt1.a = 1) as tt1a from tt0") require.True(t, core.ErrViewSelectTemporaryTable.Equal(err)) - _, err = tk.Exec("select * from v5") - require.Error(t, err) - require.Equal(t, "[schema:1146]Table 'test.v5' doesn't exist", err.Error()) + tk.MustGetErrMsg("select * from v5", "[schema:1146]Table 'test.v5' doesn't exist") - _, err = tk.Exec("create view v6 as select * from tt0 where tt0.a=(select max(tt1.b) from tt1)") + err = tk.ExecToErr("create view v6 as select * from tt0 where tt0.a=(select max(tt1.b) from tt1)") require.True(t, core.ErrViewSelectTemporaryTable.Equal(err)) - _, err = tk.Exec("select * from v6") - require.Error(t, err) - require.Equal(t, "[schema:1146]Table 'test.v6' doesn't exist", err.Error()) + tk.MustGetErrMsg("select * from v6", "[schema:1146]Table 'test.v6' doesn't exist") - _, err = tk.Exec("create view v7 as select * from tt0 where tt0.b=(select max(tt1.b) from tt1 where tt0.a=tt1.a)") + err = tk.ExecToErr("create view v7 as select * from tt0 where tt0.b=(select max(tt1.b) from tt1 where tt0.a=tt1.a)") require.True(t, core.ErrViewSelectTemporaryTable.Equal(err)) - _, err = tk.Exec("select * from v7") - require.Error(t, err) - require.Equal(t, "[schema:1146]Table 'test.v7' doesn't exist", err.Error()) + tk.MustGetErrMsg("select * from v7", "[schema:1146]Table 'test.v7' doesn't exist") - _, err = tk.Exec("create or replace view v0 as select * from tt1") + err = tk.ExecToErr("create or replace view v0 as select * from tt1") require.True(t, core.ErrViewSelectTemporaryTable.Equal(err)) } @@ -3375,8 +3401,7 @@ func TestDropTemporaryTable(t *testing.T) { tk.MustExec("create temporary table if not exists b_local_temp_table (id int)") tk.MustQuery("select * from b_local_temp_table").Check(testkit.Rows()) tk.MustExec("drop table b_local_temp_table") - _, err := tk.Exec("select * from b_local_temp_table") - require.Equal(t, "[schema:1146]Table 'test.b_local_temp_table' doesn't exist", err.Error()) + tk.MustGetErrMsg("select * from b_local_temp_table", "[schema:1146]Table 'test.b_local_temp_table' doesn't exist") // TODO: test drop real data // Check if we have a normal and local temporary table in the same db with the same name, @@ -3389,8 +3414,7 @@ func TestDropTemporaryTable(t *testing.T) { sequenceTable := external.GetTableByName(t, tk, "test", "b_table_local_and_normal") require.Equal(t, model.TempTableNone, sequenceTable.Meta().TempTableType) tk.MustExec("drop table if exists b_table_local_and_normal") - _, err = tk.Exec("select * from b_table_local_and_normal") - require.Equal(t, "[schema:1146]Table 'test.b_table_local_and_normal' doesn't exist", err.Error()) + tk.MustGetErrMsg("select * from b_table_local_and_normal", "[schema:1146]Table 'test.b_table_local_and_normal' doesn't exist") // Check dropping local temporary tables should not commit current transaction implicitly. tk.MustExec("drop table if exists check_data_normal_table") @@ -3435,21 +3459,19 @@ func TestDropTemporaryTable(t *testing.T) { tk.MustExec("drop table if exists a_normal_table_2") tk.MustExec("create table a_normal_table_2 (id int)") defer tk.MustExec("drop table if exists a_normal_table_2") - _, err = tk.Exec("drop table a_local_temp_table_3, a_local_temp_table_4, a_local_temp_table_5, a_normal_table_2, a_local_temp_table_6") - require.Equal(t, "[schema:1051]Unknown table 'test.a_local_temp_table_6'", err.Error()) + tk.MustGetErrMsg("drop table a_local_temp_table_3, a_local_temp_table_4, a_local_temp_table_5, a_normal_table_2, a_local_temp_table_6", "[schema:1051]Unknown table 'test.a_local_temp_table_6'") tk.MustExec("drop table if exists check_data_normal_table_3") tk.MustExec("create table check_data_normal_table_3 (id int)") defer tk.MustExec("drop table if exists check_data_normal_table_3") tk.MustExec("create temporary table a_local_temp_table_6 (id int)") - _, err = tk.Exec("drop table check_data_normal_table_3, check_data_normal_table_7, a_local_temp_table_6") - require.Equal(t, "[schema:1051]Unknown table 'test.check_data_normal_table_7'", err.Error()) + tk.MustGetErrMsg("drop table check_data_normal_table_3, check_data_normal_table_7, a_local_temp_table_6", "[schema:1051]Unknown table 'test.check_data_normal_table_7'") // Check filter out data from removed local temp tables tk.MustExec("create temporary table a_local_temp_table_7 (id int)") ctx := tk.Session() require.Nil(t, sessiontxn.NewTxn(context.Background(), ctx)) - _, err = ctx.Txn(true) + _, err := ctx.Txn(true) require.NoError(t, err) sessionVars := tk.Session().GetSessionVars() sessVarsTempTable := sessionVars.LocalTemporaryTables @@ -3467,8 +3489,7 @@ func TestDropTemporaryTable(t *testing.T) { tk.MustExec("drop table if exists a_local_temp_table_7") tk.MustExec("commit") - _, err = tk.Exec("select * from a_local_temp_table_7") - require.Equal(t, "[schema:1146]Table 'test.a_local_temp_table_7' doesn't exist", err.Error()) + tk.MustGetErrMsg("select * from a_local_temp_table_7", "[schema:1146]Table 'test.a_local_temp_table_7' doesn't exist") memData := sessionVars.TemporaryTableData iter, err := memData.Iter(tablePrefix, endTablePrefix) require.NoError(t, err) @@ -3486,8 +3507,7 @@ func TestDropTemporaryTable(t *testing.T) { // Check drop not exists table in transaction. tk.MustExec("begin") tk.MustExec("create temporary table a_local_temp_table_8 (id int)") - _, err = tk.Exec("drop table a_local_temp_table_8, a_local_temp_table_9_not_exist") - require.Equal(t, "[schema:1051]Unknown table 'test.a_local_temp_table_9_not_exist'", err.Error()) + tk.MustGetErrMsg("drop table a_local_temp_table_8, a_local_temp_table_9_not_exist", "[schema:1051]Unknown table 'test.a_local_temp_table_9_not_exist'") tk.MustQuery("select * from a_local_temp_table_8").Check(testkit.Rows()) } @@ -3794,6 +3814,26 @@ func TestIssue29282(t *testing.T) { } } +// See https://github.com/pingcap/tidb/issues/35644 +func TestCreateTempTableInTxn(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("begin") + tk.MustExec("create temporary table t1(id int)") + tk.MustQuery("select * from t1") + tk.MustExec("commit") + + tk1 := testkit.NewTestKit(t, store) + tk1.MustExec("use test") + tk1.MustExec("create table tt(id int)") + tk1.MustExec("begin") + tk1.MustExec("create temporary table t1(id int)") + tk1.MustExec("insert into tt select * from t1") + tk1.MustExec("drop table tt") +} + // See https://github.com/pingcap/tidb/issues/29327 func TestEnumDefaultValue(t *testing.T) { store, clean := testkit.CreateMockStore(t) @@ -3935,18 +3975,11 @@ func TestInvalidPartitionNameWhenCreateTable(t *testing.T) { defer tk.MustExec("drop database invalidPartitionNames") tk.MustExec("USE invalidPartitionNames") - _, err := tk.Exec("create table t(a int) partition by range (a) (partition p0 values less than (0), partition `p1 ` values less than (3))") - require.Error(t, err) - require.Truef(t, terror.ErrorEqual(err, dbterror.ErrWrongPartitionName), "err %v", err) - - _, err = tk.Exec("create table t(a int) partition by range (a) (partition `` values less than (0), partition `p1` values less than (3))") - require.Error(t, err) - require.Truef(t, terror.ErrorEqual(err, dbterror.ErrWrongPartitionName), "err %v", err) + tk.MustGetDBError("create table t(a int) partition by range (a) (partition p0 values less than (0), partition `p1 ` values less than (3))", dbterror.ErrWrongPartitionName) + tk.MustGetDBError("create table t(a int) partition by range (a) (partition `` values less than (0), partition `p1` values less than (3))", dbterror.ErrWrongPartitionName) tk.MustExec("create table t(a int) partition by range (a) (partition `p0` values less than (0), partition `p1` values less than (3))") - _, err = tk.Exec("alter table t add partition (partition `p2 ` values less than (5))") - require.Error(t, err) - require.Truef(t, terror.ErrorEqual(err, dbterror.ErrWrongPartitionName), "err %v", err) + tk.MustGetDBError("alter table t add partition (partition `p2 ` values less than (5))", dbterror.ErrWrongPartitionName) } func TestDDLLastInfo(t *testing.T) { diff --git a/ddl/db_partition_test.go b/ddl/db_partition_test.go index bfd2dca76a6bf..4c3bdfb66faf9 100644 --- a/ddl/db_partition_test.go +++ b/ddl/db_partition_test.go @@ -157,7 +157,7 @@ func TestCreateTableWithPartition(t *testing.T) { );` tk.MustGetErrCode(sql4, tmysql.ErrPartitionMaxvalue) - _, err = tk.Exec(`CREATE TABLE rc ( + tk.MustExec(`CREATE TABLE rc ( a INT NOT NULL, b INT NOT NULL, c INT NOT NULL @@ -168,7 +168,6 @@ func TestCreateTableWithPartition(t *testing.T) { partition p3 values less than (65,30,13), partition p4 values less than (maxvalue,30,40) );`) - require.NoError(t, err) sql6 := `create table employees ( id int not null, @@ -211,7 +210,7 @@ func TestCreateTableWithPartition(t *testing.T) { );` tk.MustGetErrCode(sql9, tmysql.ErrPartitionFunctionIsNotAllowed) - _, err = tk.Exec(`CREATE TABLE t9 ( + tk.MustGetDBError(`CREATE TABLE t9 ( a INT NOT NULL, b INT NOT NULL, c INT NOT NULL @@ -220,8 +219,7 @@ func TestCreateTableWithPartition(t *testing.T) { partition p0 values less than (10), partition p2 values less than (20), partition p3 values less than (20) - );`) - require.True(t, dbterror.ErrRangeNotIncreasing.Equal(err)) + );`, dbterror.ErrRangeNotIncreasing) tk.MustGetErrCode(`create TABLE t10 (c1 int,c2 int) partition by range(c1 / c2 ) (partition p0 values less than (2));`, tmysql.ErrPartitionFunctionIsNotAllowed) @@ -1285,15 +1283,15 @@ func TestAlterTableAddPartitionByListColumns(t *testing.T) { require.Equal(t, "id", part.Columns[0].O) require.Equal(t, "name", part.Columns[1].O) require.Len(t, part.Definitions, 5) - require.Equal(t, [][]string{{"1", `"a"`}, {"2", `"b"`}}, part.Definitions[0].InValues) + require.Equal(t, [][]string{{"1", `'a'`}, {"2", `'b'`}}, part.Definitions[0].InValues) require.Equal(t, model.NewCIStr("p0"), part.Definitions[0].Name) - require.Equal(t, [][]string{{"3", `"a"`}, {"4", `"b"`}}, part.Definitions[1].InValues) + require.Equal(t, [][]string{{"3", `'a'`}, {"4", `'b'`}}, part.Definitions[1].InValues) require.Equal(t, model.NewCIStr("p1"), part.Definitions[1].Name) require.Equal(t, [][]string{{"5", `NULL`}}, part.Definitions[2].InValues) require.Equal(t, model.NewCIStr("p3"), part.Definitions[2].Name) - require.Equal(t, [][]string{{"7", `"a"`}}, part.Definitions[3].InValues) + require.Equal(t, [][]string{{"7", `'a'`}}, part.Definitions[3].InValues) require.Equal(t, model.NewCIStr("p4"), part.Definitions[3].Name) - require.Equal(t, [][]string{{"8", `"a"`}}, part.Definitions[4].InValues) + require.Equal(t, [][]string{{"8", `'a'`}}, part.Definitions[4].InValues) require.Equal(t, model.NewCIStr("p5"), part.Definitions[4].Name) errorCases := []struct { @@ -1389,9 +1387,9 @@ func TestAlterTableDropPartitionByListColumns(t *testing.T) { require.Equal(t, "id", part.Columns[0].O) require.Equal(t, "name", part.Columns[1].O) require.Len(t, part.Definitions, 2) - require.Equal(t, [][]string{{"1", `"a"`}, {"2", `"b"`}}, part.Definitions[0].InValues) + require.Equal(t, [][]string{{"1", `'a'`}, {"2", `'b'`}}, part.Definitions[0].InValues) require.Equal(t, model.NewCIStr("p0"), part.Definitions[0].Name) - require.Equal(t, [][]string{{"5", `"a"`}, {"NULL", "NULL"}}, part.Definitions[1].InValues) + require.Equal(t, [][]string{{"5", `'a'`}, {"NULL", "NULL"}}, part.Definitions[1].InValues) require.Equal(t, model.NewCIStr("p3"), part.Definitions[1].Name) sql := "alter table t drop partition p10;" @@ -1456,7 +1454,7 @@ func TestAlterTableTruncatePartitionByListColumns(t *testing.T) { part := tbl.Meta().Partition require.True(t, part.Type == model.PartitionTypeList) require.Len(t, part.Definitions, 3) - require.Equal(t, [][]string{{"3", `"a"`}, {"4", `"b"`}}, part.Definitions[1].InValues) + require.Equal(t, [][]string{{"3", `'a'`}, {"4", `'b'`}}, part.Definitions[1].InValues) require.Equal(t, model.NewCIStr("p1"), part.Definitions[1].Name) require.False(t, part.Definitions[1].ID == oldTbl.Meta().Partition.Definitions[1].ID) @@ -3088,11 +3086,8 @@ func TestPartitionErrorCode(t *testing.T) { ) partition by hash(store_id) partitions 4;`) - _, err := tk.Exec("alter table employees add partition partitions 8;") - require.True(t, dbterror.ErrUnsupportedAddPartition.Equal(err)) - - _, err = tk.Exec("alter table employees add partition (partition p5 values less than (42));") - require.True(t, dbterror.ErrUnsupportedAddPartition.Equal(err)) + tk.MustGetDBError("alter table employees add partition partitions 8;", dbterror.ErrUnsupportedAddPartition) + tk.MustGetDBError("alter table employees add partition (partition p5 values less than (42));", dbterror.ErrUnsupportedAddPartition) // coalesce partition tk.MustExec(`create table clients ( @@ -3103,16 +3098,14 @@ func TestPartitionErrorCode(t *testing.T) { ) partition by hash( month(signed) ) partitions 12;`) - _, err = tk.Exec("alter table clients coalesce partition 4;") - require.True(t, dbterror.ErrUnsupportedCoalescePartition.Equal(err)) + tk.MustGetDBError("alter table clients coalesce partition 4;", dbterror.ErrUnsupportedCoalescePartition) tk.MustExec(`create table t_part (a int key) partition by range(a) ( partition p0 values less than (10), partition p1 values less than (20) );`) - _, err = tk.Exec("alter table t_part coalesce partition 4;") - require.True(t, dbterror.ErrCoalesceOnlyOnHashPartition.Equal(err)) + tk.MustGetDBError("alter table t_part coalesce partition 4;", dbterror.ErrCoalesceOnlyOnHashPartition) tk.MustGetErrCode(`alter table t_part reorganize partition p0, p1 into ( partition p0 values less than (1980));`, tmysql.ErrUnsupportedDDLOperation) @@ -3135,9 +3128,7 @@ func TestPartitionErrorCode(t *testing.T) { tk2 := testkit.NewTestKit(t, store) tk2.MustExec("use test") tk2.MustExec("alter table t truncate partition p0;") - - _, err = tk1.Exec("commit") - require.NoError(t, err) + tk1.MustExec("commit") } func TestConstAndTimezoneDepent(t *testing.T) { @@ -3337,8 +3328,7 @@ func TestCommitWhenSchemaChange(t *testing.T) { tk.MustExec("insert into nt values (1), (3), (5);") tk2.MustExec("alter table pt exchange partition p1 with table nt;") tk.MustExec("insert into nt values (7), (9);") - _, err = tk.Session().Execute(context.Background(), "commit") - require.True(t, domain.ErrInfoSchemaChanged.Equal(err)) + tk.MustGetDBError("commit", domain.ErrInfoSchemaChanged) tk.MustExec("admin check table pt") tk.MustQuery("select * from pt").Check(testkit.Rows()) @@ -3349,8 +3339,7 @@ func TestCommitWhenSchemaChange(t *testing.T) { tk.MustExec("insert into pt values (1), (3), (5);") tk2.MustExec("alter table pt exchange partition p1 with table nt;") tk.MustExec("insert into pt values (7), (9);") - _, err = tk.Session().Execute(context.Background(), "commit") - require.True(t, domain.ErrInfoSchemaChanged.Equal(err)) + tk.MustGetDBError("commit", domain.ErrInfoSchemaChanged) tk.MustExec("admin check table pt") tk.MustQuery("select * from pt").Check(testkit.Rows()) @@ -3365,34 +3354,28 @@ func TestCreatePartitionTableWithWrongType(t *testing.T) { tk.MustExec("use test") tk.MustExec("drop table if exists t") var err error - _, err = tk.Exec(`create table t( + tk.MustGetDBError(`create table t( b int(10) ) partition by range columns (b) ( partition p0 values less than (0x10), partition p3 values less than (0x20) - )`) - require.Error(t, err) - require.True(t, dbterror.ErrWrongTypeColumnValue.Equal(err)) + )`, dbterror.ErrWrongTypeColumnValue) - _, err = tk.Exec(`create table t( + tk.MustGetDBError(`create table t( b int(10) ) partition by range columns (b) ( partition p0 values less than ('g'), partition p3 values less than ('k') - )`) - require.Error(t, err) - require.True(t, dbterror.ErrWrongTypeColumnValue.Equal(err)) + )`, dbterror.ErrWrongTypeColumnValue) - _, err = tk.Exec(`create table t( + tk.MustGetDBError(`create table t( b char(10) ) partition by range columns (b) ( partition p0 values less than (30), partition p3 values less than (60) - )`) - require.Error(t, err) - require.True(t, dbterror.ErrWrongTypeColumnValue.Equal(err)) + )`, dbterror.ErrWrongTypeColumnValue) - _, err = tk.Exec(`create table t( + err = tk.ExecToErr(`create table t( b datetime ) partition by range columns (b) ( partition p0 values less than ('g'), @@ -3422,35 +3405,13 @@ func TestAddPartitionForTableWithWrongType(t *testing.T) { partition p0 values less than ('2020-09-01') )`) - var err error - - _, err = tk.Exec("alter table t_int add partition (partition p1 values less than ('g'))") - require.Error(t, err) - require.True(t, dbterror.ErrWrongTypeColumnValue.Equal(err)) - - _, err = tk.Exec("alter table t_int add partition (partition p1 values less than (0x20))") - require.Error(t, err) - require.True(t, dbterror.ErrWrongTypeColumnValue.Equal(err)) - - _, err = tk.Exec("alter table t_char add partition (partition p1 values less than (0x20))") - require.Error(t, err) - require.True(t, dbterror.ErrRangeNotIncreasing.Equal(err)) - - _, err = tk.Exec("alter table t_char add partition (partition p1 values less than (10))") - require.Error(t, err) - require.True(t, dbterror.ErrWrongTypeColumnValue.Equal(err)) - - _, err = tk.Exec("alter table t_date add partition (partition p1 values less than ('m'))") - require.Error(t, err) - require.True(t, dbterror.ErrWrongTypeColumnValue.Equal(err)) - - _, err = tk.Exec("alter table t_date add partition (partition p1 values less than (0x20))") - require.Error(t, err) - require.True(t, dbterror.ErrWrongTypeColumnValue.Equal(err)) - - _, err = tk.Exec("alter table t_date add partition (partition p1 values less than (20))") - require.Error(t, err) - require.True(t, dbterror.ErrWrongTypeColumnValue.Equal(err)) + tk.MustGetDBError("alter table t_int add partition (partition p1 values less than ('g'))", dbterror.ErrWrongTypeColumnValue) + tk.MustGetDBError("alter table t_int add partition (partition p1 values less than (0x20))", dbterror.ErrWrongTypeColumnValue) + tk.MustGetDBError("alter table t_char add partition (partition p1 values less than (0x20))", dbterror.ErrRangeNotIncreasing) + tk.MustGetDBError("alter table t_char add partition (partition p1 values less than (10))", dbterror.ErrWrongTypeColumnValue) + tk.MustGetDBError("alter table t_date add partition (partition p1 values less than ('m'))", dbterror.ErrWrongTypeColumnValue) + tk.MustGetDBError("alter table t_date add partition (partition p1 values less than (0x20))", dbterror.ErrWrongTypeColumnValue) + tk.MustGetDBError("alter table t_date add partition (partition p1 values less than (20))", dbterror.ErrWrongTypeColumnValue) } func TestPartitionListWithTimeType(t *testing.T) { @@ -3517,8 +3478,7 @@ func TestAddTableWithPartition(t *testing.T) { tk.MustGetErrCode("create temporary table local_partition_table (a int, b int) partition by hash(a) partitions 3;", errno.ErrPartitionNoTemporary) tk.MustExec("drop table if exists local_partition_table;") tk.MustExec("drop table if exists partition_table;") - _, err = tk.Exec("create table partition_table (a int, b int) partition by hash(a) partitions 3;") - require.NoError(t, err) + tk.MustExec("create table partition_table (a int, b int) partition by hash(a) partitions 3;") tk.MustExec("drop table if exists partition_table;") tk.MustExec("drop table if exists local_partition_range_table;") tk.MustGetErrCode(`create temporary table local_partition_range_table (c1 smallint(6) not null, c2 char(5) default null) partition by range ( c1 ) ( @@ -3655,3 +3615,63 @@ func TestDuplicatePartitionNames(t *testing.T) { "(PARTITION `p2` VALUES IN (2),\n" + " PARTITION `p3` VALUES IN (3))")) } + +func TestPartitionTableWithAnsiQuotes(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + tk := testkit.NewTestKit(t, store) + tk.MustExec("create database partitionWithAnsiQuotes") + defer tk.MustExec("drop database partitionWithAnsiQuotes") + tk.MustExec("use partitionWithAnsiQuotes") + tk.MustExec("SET SESSION sql_mode='ANSI_QUOTES'") + + // Test single quotes. + tk.MustExec(`create table t(created_at datetime) PARTITION BY RANGE COLUMNS(created_at) ( + PARTITION p0 VALUES LESS THAN ('2021-12-01 00:00:00'), + PARTITION p1 VALUES LESS THAN ('2022-01-01 00:00:00'))`) + tk.MustQuery("show create table t").Check(testkit.Rows("t CREATE TABLE \"t\" (\n" + + " \"created_at\" datetime DEFAULT NULL\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin\n" + + "PARTITION BY RANGE COLUMNS(\"created_at\")\n" + + "(PARTITION \"p0\" VALUES LESS THAN ('2021-12-01 00:00:00'),\n" + + " PARTITION \"p1\" VALUES LESS THAN ('2022-01-01 00:00:00'))")) + tk.MustExec("drop table t") + + // Test expression with single quotes. + tk.MustExec(`create table t(created_at timestamp) PARTITION BY RANGE (unix_timestamp(created_at)) ( + PARTITION p0 VALUES LESS THAN (unix_timestamp('2021-12-01 00:00:00')), + PARTITION p1 VALUES LESS THAN (unix_timestamp('2022-01-01 00:00:00')))`) + // FIXME: should be "created_at" instead of `created_at`, see #35389. + tk.MustQuery("show create table t").Check(testkit.Rows("t CREATE TABLE \"t\" (\n" + + " \"created_at\" timestamp NULL DEFAULT NULL\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin\n" + + "PARTITION BY RANGE (UNIX_TIMESTAMP(`created_at`))\n" + + "(PARTITION \"p0\" VALUES LESS THAN (1638288000),\n" + + " PARTITION \"p1\" VALUES LESS THAN (1640966400))")) + tk.MustExec("drop table t") + + // Test values in. + tk.MustExec(`CREATE TABLE t (a int DEFAULT NULL, b varchar(255) DEFAULT NULL) PARTITION BY LIST COLUMNS(a,b) ( + PARTITION p0 VALUES IN ((1,'1'),(2,'2')), + PARTITION p1 VALUES IN ((10,'10'),(11,'11')))`) + tk.MustQuery("show create table t").Check(testkit.Rows("t CREATE TABLE \"t\" (\n" + + " \"a\" int(11) DEFAULT NULL,\n" + + " \"b\" varchar(255) DEFAULT NULL\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin\n" + + "PARTITION BY LIST COLUMNS(\"a\",\"b\")\n" + + "(PARTITION \"p0\" VALUES IN ((1,'1'),(2,'2')),\n" + + " PARTITION \"p1\" VALUES IN ((10,'10'),(11,'11')))")) + tk.MustExec("drop table t") + + // Test escaped characters in single quotes. + tk.MustExec(`CREATE TABLE t (a varchar(255) DEFAULT NULL) PARTITION BY LIST COLUMNS(a) ( + PARTITION p0 VALUES IN ('\'','\'\'',''''''''), + PARTITION p1 VALUES IN ('""','\\','\\\'\t\n'))`) + tk.MustQuery("show create table t").Check(testkit.Rows("t CREATE TABLE \"t\" (\n" + + " \"a\" varchar(255) DEFAULT NULL\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin\n" + + "PARTITION BY LIST COLUMNS(\"a\")\n" + + "(PARTITION \"p0\" VALUES IN ('''','''''',''''''''),\n" + + " PARTITION \"p1\" VALUES IN ('\"\"','\\\\','\\\\''\t\n'))")) + tk.MustExec("drop table t") +} diff --git a/ddl/db_table_test.go b/ddl/db_table_test.go index 8afb0664898fa..a385acd7e3427 100644 --- a/ddl/db_table_test.go +++ b/ddl/db_table_test.go @@ -163,6 +163,7 @@ func TestTransactionOnAddDropColumn(t *testing.T) { store, dom, clean := testkit.CreateMockStoreAndDomainWithSchemaLease(t, time.Microsecond*500) defer clean() tk := testkit.NewTestKit(t, store) + tk.MustExec("set @@global.tidb_max_delta_schema_count= 4096") tk.MustExec("use test") tk.MustExec("drop table if exists t1") tk.MustExec("create table t1 (a int, b int);") @@ -314,6 +315,55 @@ func TestCreateTableWithEnumCol(t *testing.T) { tk.MustQuery("select * from t_enum").Check(testkit.Rows("c")) } +func TestCreateTableWithIntegerColWithDefault(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + // It's for failure cases. + tk.MustExec("drop table if exists t1") + failedSQL := "create table t1 (a tinyint unsigned default -1.25);" + tk.MustGetErrCode(failedSQL, errno.ErrInvalidDefault) + failedSQL = "create table t1 (a tinyint default 999999999);" + tk.MustGetErrCode(failedSQL, errno.ErrInvalidDefault) + + // It's for successful cases + tk.MustExec("drop table if exists t1") + tk.MustExec("create table t1 (a tinyint unsigned default 1.25);") + ret := tk.MustQuery("show create table t1").Rows()[0][1] + require.True(t, strings.Contains(ret.(string), "`a` tinyint(3) unsigned DEFAULT '1'")) + + tk.MustExec("drop table t1") + tk.MustExec("create table t1 (a smallint default -1.25);") + ret = tk.MustQuery("show create table t1").Rows()[0][1] + require.True(t, strings.Contains(ret.(string), "`a` smallint(6) DEFAULT '-1'")) + + tk.MustExec("drop table t1") + tk.MustExec("create table t1 (a mediumint default 2.8);") + ret = tk.MustQuery("show create table t1").Rows()[0][1] + require.True(t, strings.Contains(ret.(string), "`a` mediumint(9) DEFAULT '3'")) + + tk.MustExec("drop table t1") + tk.MustExec("create table t1 (a int default -2.8);") + ret = tk.MustQuery("show create table t1").Rows()[0][1] + require.True(t, strings.Contains(ret.(string), "`a` int(11) DEFAULT '-3'")) + + tk.MustExec("drop table t1") + tk.MustExec("create table t1 (a bigint unsigned default 0.0);") + ret = tk.MustQuery("show create table t1").Rows()[0][1] + require.True(t, strings.Contains(ret.(string), "`a` bigint(20) unsigned DEFAULT '0'")) + + tk.MustExec("drop table t1") + tk.MustExec("create table t1 (a float default '0012.43');") + ret = tk.MustQuery("show create table t1").Rows()[0][1] + require.True(t, strings.Contains(ret.(string), "`a` float DEFAULT '12.43'")) + + tk.MustExec("drop table t1") + tk.MustExec("create table t1 (a double default '12.4300');") + ret = tk.MustQuery("show create table t1").Rows()[0][1] + require.True(t, strings.Contains(ret.(string), "`a` double DEFAULT '12.43'")) +} + func TestAlterTableWithValidation(t *testing.T) { store, clean := testkit.CreateMockStore(t) defer clean() @@ -480,7 +530,7 @@ func TestTableLocksLostCommit(t *testing.T) { tk.MustExec("LOCK TABLES t1 WRITE") tk.MustExec("INSERT INTO t1 VALUES(10)") - _, err := tk2.Exec("SELECT * FROM t1") + err := tk2.ExecToErr("SELECT * FROM t1") require.True(t, terror.ErrorEqual(err, infoschema.ErrTableLocked)) tk.Session().Close() @@ -528,32 +578,32 @@ func TestWriteLocal(t *testing.T) { // Test: forbid write tk.MustExec("lock tables t1 write local") - _, err := tk2.Exec("insert into t1 values(NULL)") + err := tk2.ExecToErr("insert into t1 values(NULL)") require.True(t, terror.ErrorEqual(err, infoschema.ErrTableLocked)) tk.MustExec("unlock tables") tk2.MustExec("unlock tables") // Test mutex: lock write local first tk.MustExec("lock tables t1 write local") - _, err = tk2.Exec("lock tables t1 write local") + err = tk2.ExecToErr("lock tables t1 write local") require.True(t, terror.ErrorEqual(err, infoschema.ErrTableLocked)) - _, err = tk2.Exec("lock tables t1 write") + err = tk2.ExecToErr("lock tables t1 write") require.True(t, terror.ErrorEqual(err, infoschema.ErrTableLocked)) - _, err = tk2.Exec("lock tables t1 read") + err = tk2.ExecToErr("lock tables t1 read") require.True(t, terror.ErrorEqual(err, infoschema.ErrTableLocked)) tk.MustExec("unlock tables") tk2.MustExec("unlock tables") // Test mutex: lock write first tk.MustExec("lock tables t1 write") - _, err = tk2.Exec("lock tables t1 write local") + err = tk2.ExecToErr("lock tables t1 write local") require.True(t, terror.ErrorEqual(err, infoschema.ErrTableLocked)) tk.MustExec("unlock tables") tk2.MustExec("unlock tables") // Test mutex: lock read first tk.MustExec("lock tables t1 read") - _, err = tk2.Exec("lock tables t1 write local") + err = tk2.ExecToErr("lock tables t1 write local") require.True(t, terror.ErrorEqual(err, infoschema.ErrTableLocked)) tk.MustExec("unlock tables") tk2.MustExec("unlock tables") @@ -598,38 +648,27 @@ func TestLockTables(t *testing.T) { tk.MustExec("lock tables t1 read") tk.MustQuery("select * from t1") tk2.MustQuery("select * from t1") - _, err := tk.Exec("insert into t1 set a=1") - require.True(t, terror.ErrorEqual(err, infoschema.ErrTableNotLockedForWrite)) - _, err = tk.Exec("update t1 set a=1") - require.True(t, terror.ErrorEqual(err, infoschema.ErrTableNotLockedForWrite)) - _, err = tk.Exec("delete from t1") - require.True(t, terror.ErrorEqual(err, infoschema.ErrTableNotLockedForWrite)) + tk.MustGetDBError("insert into t1 set a=1", infoschema.ErrTableNotLockedForWrite) + tk.MustGetDBError("update t1 set a=1", infoschema.ErrTableNotLockedForWrite) + tk.MustGetDBError("delete from t1", infoschema.ErrTableNotLockedForWrite) - _, err = tk2.Exec("insert into t1 set a=1") - require.True(t, terror.ErrorEqual(err, infoschema.ErrTableLocked)) - _, err = tk2.Exec("update t1 set a=1") - require.True(t, terror.ErrorEqual(err, infoschema.ErrTableLocked)) - _, err = tk2.Exec("delete from t1") - require.True(t, terror.ErrorEqual(err, infoschema.ErrTableLocked)) + tk2.MustGetDBError("insert into t1 set a=1", infoschema.ErrTableLocked) + tk2.MustGetDBError("update t1 set a=1", infoschema.ErrTableLocked) + tk2.MustGetDBError("delete from t1", infoschema.ErrTableLocked) tk2.MustExec("lock tables t1 read") - _, err = tk2.Exec("insert into t1 set a=1") - require.True(t, terror.ErrorEqual(err, infoschema.ErrTableNotLockedForWrite)) + tk2.MustGetDBError("insert into t1 set a=1", infoschema.ErrTableNotLockedForWrite) // Test write lock. - _, err = tk.Exec("lock tables t1 write") - require.True(t, terror.ErrorEqual(err, infoschema.ErrTableLocked)) + tk.MustGetDBError("lock tables t1 write", infoschema.ErrTableLocked) tk2.MustExec("unlock tables") tk.MustExec("lock tables t1 write") tk.MustQuery("select * from t1") tk.MustExec("delete from t1") tk.MustExec("insert into t1 set a=1") - _, err = tk2.Exec("select * from t1") - require.True(t, terror.ErrorEqual(err, infoschema.ErrTableLocked)) - _, err = tk2.Exec("insert into t1 set a=1") - require.True(t, terror.ErrorEqual(err, infoschema.ErrTableLocked)) - _, err = tk2.Exec("lock tables t1 write") - require.True(t, terror.ErrorEqual(err, infoschema.ErrTableLocked)) + tk2.MustGetDBError("select * from t1", infoschema.ErrTableLocked) + tk2.MustGetDBError("insert into t1 set a=1", infoschema.ErrTableLocked) + tk2.MustGetDBError("lock tables t1 write", infoschema.ErrTableLocked) // Test write local lock. tk.MustExec("lock tables t1 write local") @@ -638,18 +677,13 @@ func TestLockTables(t *testing.T) { tk.MustExec("insert into t1 set a=1") tk2.MustQuery("select * from t1") - _, err = tk2.Exec("delete from t1") - require.True(t, terror.ErrorEqual(err, infoschema.ErrTableLocked)) - _, err = tk2.Exec("insert into t1 set a=1") - require.True(t, terror.ErrorEqual(err, infoschema.ErrTableLocked)) - _, err = tk2.Exec("lock tables t1 write") - require.True(t, terror.ErrorEqual(err, infoschema.ErrTableLocked)) - _, err = tk2.Exec("lock tables t1 read") - require.True(t, terror.ErrorEqual(err, infoschema.ErrTableLocked)) + tk2.MustGetDBError("delete from t1", infoschema.ErrTableLocked) + tk2.MustGetDBError("insert into t1 set a=1", infoschema.ErrTableLocked) + tk2.MustGetDBError("lock tables t1 write", infoschema.ErrTableLocked) + tk2.MustGetDBError("lock tables t1 read", infoschema.ErrTableLocked) // Test none unique table. - _, err = tk.Exec("lock tables t1 read, t1 write") - require.True(t, terror.ErrorEqual(err, infoschema.ErrNonuniqTable)) + tk.MustGetDBError("lock tables t1 read, t1 write", infoschema.ErrNonuniqTable) // Test lock table by other session in transaction and commit without retry. tk.MustExec("unlock tables") @@ -658,9 +692,8 @@ func TestLockTables(t *testing.T) { tk.MustExec("begin") tk.MustExec("insert into t1 set a=1") tk2.MustExec("lock tables t1 write") - _, err = tk.Exec("commit") - require.Error(t, err) - require.Equal(t, "previous statement: insert into t1 set a=1: [domain:8028]Information schema is changed during the execution of the statement(for example, table definition may be updated by other DDL ran in parallel). If you see this error often, try increasing `tidb_max_delta_schema_count`. [try again later]", err.Error()) + tk.MustGetErrMsg("commit", + "previous statement: insert into t1 set a=1: [domain:8028]Information schema is changed during the execution of the statement(for example, table definition may be updated by other DDL ran in parallel). If you see this error often, try increasing `tidb_max_delta_schema_count`. [try again later]") // Test lock table by other session in transaction and commit with retry. tk.MustExec("unlock tables") @@ -669,8 +702,7 @@ func TestLockTables(t *testing.T) { tk.MustExec("begin") tk.MustExec("insert into t1 set a=1") tk2.MustExec("lock tables t1 write") - _, err = tk.Exec("commit") - require.Truef(t, terror.ErrorEqual(err, infoschema.ErrTableLocked), "err: %v\n", err) + tk.MustGetDBError("commit", infoschema.ErrTableLocked) // Test for lock the same table multiple times. tk2.MustExec("lock tables t1 write") @@ -698,59 +730,45 @@ func TestLockTables(t *testing.T) { tk.MustExec("lock tables t1 write, t2 read") tk.MustExec("truncate table t1") tk.MustExec("insert into t1 set a=1") - _, err = tk2.Exec("insert into t1 set a=1") - require.True(t, terror.ErrorEqual(err, infoschema.ErrTableLocked)) + tk2.MustGetDBError("insert into t1 set a=1", infoschema.ErrTableLocked) // Test for lock unsupported schema tables. - _, err = tk2.Exec("lock tables performance_schema.global_status write") - require.True(t, terror.ErrorEqual(err, infoschema.ErrAccessDenied)) - _, err = tk2.Exec("lock tables information_schema.tables write") - require.True(t, terror.ErrorEqual(err, infoschema.ErrAccessDenied)) - _, err = tk2.Exec("lock tables mysql.db write") - require.True(t, terror.ErrorEqual(err, infoschema.ErrAccessDenied)) + tk2.MustGetDBError("lock tables performance_schema.global_status write", infoschema.ErrAccessDenied) + tk2.MustGetDBError("lock tables information_schema.tables write", infoschema.ErrAccessDenied) + tk2.MustGetDBError("lock tables mysql.db write", infoschema.ErrAccessDenied) // Test create table/view when session is holding the table locks. tk.MustExec("unlock tables") tk.MustExec("lock tables t1 write, t2 read") - _, err = tk.Exec("create table t3 (a int)") - require.True(t, terror.ErrorEqual(err, infoschema.ErrTableNotLocked)) - _, err = tk.Exec("create view v1 as select * from t1;") - require.True(t, terror.ErrorEqual(err, infoschema.ErrTableNotLocked)) + tk.MustGetDBError("create table t3 (a int)", infoschema.ErrTableNotLocked) + tk.MustGetDBError("create view v1 as select * from t1;", infoschema.ErrTableNotLocked) // Test for locking view was not supported. tk.MustExec("unlock tables") tk.MustExec("create view v1 as select * from t1;") - _, err = tk.Exec("lock tables v1 read") - require.True(t, terror.ErrorEqual(err, table.ErrUnsupportedOp)) + tk.MustGetDBError("lock tables v1 read", table.ErrUnsupportedOp) // Test for locking sequence was not supported. tk.MustExec("unlock tables") tk.MustExec("create sequence seq") - _, err = tk.Exec("lock tables seq read") - require.True(t, terror.ErrorEqual(err, table.ErrUnsupportedOp)) + tk.MustGetDBError("lock tables seq read", table.ErrUnsupportedOp) tk.MustExec("drop sequence seq") // Test for create/drop/alter database when session is holding the table locks. tk.MustExec("unlock tables") tk.MustExec("lock table t1 write") - _, err = tk.Exec("drop database test") - require.True(t, terror.ErrorEqual(err, table.ErrLockOrActiveTransaction)) - _, err = tk.Exec("create database test_lock") - require.True(t, terror.ErrorEqual(err, table.ErrLockOrActiveTransaction)) - _, err = tk.Exec("alter database test charset='utf8mb4'") - require.True(t, terror.ErrorEqual(err, table.ErrLockOrActiveTransaction)) + tk.MustGetDBError("drop database test", table.ErrLockOrActiveTransaction) + tk.MustGetDBError("create database test_lock", table.ErrLockOrActiveTransaction) + tk.MustGetDBError("alter database test charset='utf8mb4'", table.ErrLockOrActiveTransaction) // Test alter/drop database when other session is holding the table locks of the database. tk2.MustExec("create database test_lock2") - _, err = tk2.Exec("drop database test") - require.True(t, terror.ErrorEqual(err, infoschema.ErrTableLocked)) - _, err = tk2.Exec("alter database test charset='utf8mb4'") - require.True(t, terror.ErrorEqual(err, infoschema.ErrTableLocked)) + tk2.MustGetDBError("drop database test", infoschema.ErrTableLocked) + tk2.MustGetDBError("alter database test charset='utf8mb4'", infoschema.ErrTableLocked) // Test for admin cleanup table locks. tk.MustExec("unlock tables") tk.MustExec("lock table t1 write, t2 write") - _, err = tk2.Exec("lock tables t1 write, t2 read") - require.True(t, terror.ErrorEqual(err, infoschema.ErrTableLocked)) + tk2.MustGetDBError("lock tables t1 write, t2 read", infoschema.ErrTableLocked) tk2.MustExec("admin cleanup table lock t1,t2") checkTableLock(t, tk, "test", "t1", model.TableLockNone) checkTableLock(t, tk, "test", "t2", model.TableLockNone) @@ -818,18 +836,12 @@ func TestDDLWithInvalidTableInfo(t *testing.T) { tk.MustExec("create table t (a bigint, b int, c int generated always as (b+1)) partition by hash(a) partitions 4;") // Test drop partition column. - _, err = tk.Exec("alter table t drop column a;") - require.Error(t, err) // TODO: refine the error message to compatible with MySQL - require.Equal(t, "[planner:1054]Unknown column 'a' in 'expression'", err.Error()) + tk.MustGetErrMsg("alter table t drop column a;", "[planner:1054]Unknown column 'a' in 'expression'") // Test modify column with invalid expression. - _, err = tk.Exec("alter table t modify column c int GENERATED ALWAYS AS ((case when (a = 0) then 0when (a > 0) then (b / a) end));") - require.Error(t, err) - require.Equal(t, "[parser:1064]You have an error in your SQL syntax; check the manual that corresponds to your TiDB version for the right syntax to use line 1 column 97 near \"then (b / a) end));\" ", err.Error()) + tk.MustGetErrMsg("alter table t modify column c int GENERATED ALWAYS AS ((case when (a = 0) then 0when (a > 0) then (b / a) end));", "[parser:1064]You have an error in your SQL syntax; check the manual that corresponds to your TiDB version for the right syntax to use line 1 column 97 near \"then (b / a) end));\" ") // Test add column with invalid expression. - _, err = tk.Exec("alter table t add column d int GENERATED ALWAYS AS ((case when (a = 0) then 0when (a > 0) then (b / a) end));") - require.Error(t, err) - require.Equal(t, "[parser:1064]You have an error in your SQL syntax; check the manual that corresponds to your TiDB version for the right syntax to use line 1 column 94 near \"then (b / a) end));\" ", err.Error()) + tk.MustGetErrMsg("alter table t add column d int GENERATED ALWAYS AS ((case when (a = 0) then 0when (a > 0) then (b / a) end));", "[parser:1064]You have an error in your SQL syntax; check the manual that corresponds to your TiDB version for the right syntax to use line 1 column 94 near \"then (b / a) end));\" ") } func TestAddColumn2(t *testing.T) { diff --git a/ddl/db_test.go b/ddl/db_test.go index d490f25b9c932..8f2c6ac06a9fa 100644 --- a/ddl/db_test.go +++ b/ddl/db_test.go @@ -23,7 +23,9 @@ import ( "testing" "time" + "github.com/pingcap/errors" "github.com/pingcap/failpoint" + "github.com/pingcap/tidb/config" "github.com/pingcap/tidb/ddl" ddlutil "github.com/pingcap/tidb/ddl/util" "github.com/pingcap/tidb/domain" @@ -32,8 +34,10 @@ import ( "github.com/pingcap/tidb/meta" "github.com/pingcap/tidb/parser/ast" "github.com/pingcap/tidb/parser/auth" + "github.com/pingcap/tidb/parser/charset" "github.com/pingcap/tidb/parser/model" "github.com/pingcap/tidb/parser/mysql" + "github.com/pingcap/tidb/parser/terror" parsertypes "github.com/pingcap/tidb/parser/types" "github.com/pingcap/tidb/planner/core" "github.com/pingcap/tidb/session" @@ -1573,3 +1577,120 @@ func TestReportingMinStartTimestamp(t *testing.T) { infoSyncer.ReportMinStartTS(dom.Store()) require.Equal(t, validTS, infoSyncer.GetMinStartTS()) } + +// for issue #34931 +func TestBuildMaxLengthIndexWithNonRestrictedSqlMode(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + maxIndexLength := config.GetGlobalConfig().MaxIndexLength + + tt := []struct { + ColType string + SpecifiedColLen bool + SpecifiedIndexLen bool + }{ + { + "text", + false, + true, + }, + { + "blob", + false, + true, + }, + { + "varchar", + true, + false, + }, + { + "varbinary", + true, + false, + }, + } + + sqlTemplate := "create table %s (id int, name %s, age int, %s index(name%s%s)) charset=%s;" + // test character strings for varchar and text + for _, tc := range tt { + + for _, cs := range charset.CharacterSetInfos { + tableName := fmt.Sprintf("t_%s", cs.Name) + tk.MustExec(fmt.Sprintf("drop table if exists %s", tableName)) + tk.MustExec("set @@sql_mode=default") + + // test in strict sql mode + maxLen := cs.Maxlen + if tc.ColType == "varbinary" || tc.ColType == "blob" { + maxLen = 1 + } + expectKeyLength := maxIndexLength / maxLen + length := 2 * expectKeyLength + + indexLen := "" + // specify index length for text type + if tc.SpecifiedIndexLen { + indexLen = fmt.Sprintf("(%d)", length) + } + + col := tc.ColType + // specify column length for varchar type + if tc.SpecifiedColLen { + col += fmt.Sprintf("(%d)", length) + } + sql := fmt.Sprintf(sqlTemplate, + tableName, col, "", indexLen, "", cs.Name) + tk.MustGetErrCode(sql, errno.ErrTooLongKey) + + tk.MustExec("set @@sql_mode=''") + + err := tk.ExecToErr(sql) + require.NoErrorf(t, err, "exec sql '%s' failed", sql) + + require.Equal(t, uint16(1), tk.Session().GetSessionVars().StmtCtx.WarningCount()) + + warnErr := tk.Session().GetSessionVars().StmtCtx.GetWarnings()[0].Err + tErr := errors.Cause(warnErr).(*terror.Error) + sqlErr := terror.ToSQLError(tErr) + require.Equal(t, errno.ErrTooLongKey, int(sqlErr.Code)) + + if cs.Name == charset.CharsetBin { + if tc.ColType == "varchar" || tc.ColType == "varbinary" { + col = fmt.Sprintf("varbinary(%d)", length) + } else { + col = "blob" + } + } + rows := fmt.Sprintf("%s CREATE TABLE `%s` (\n `id` int(11) DEFAULT NULL,\n `name` %s DEFAULT NULL,\n `age` int(11) DEFAULT NULL,\n KEY `name` (`name`(%d))\n) ENGINE=InnoDB DEFAULT CHARSET=%s", + tableName, tableName, col, expectKeyLength, cs.Name) + // add collation for binary charset + if cs.Name != charset.CharsetBin { + rows += fmt.Sprintf(" COLLATE=%s", cs.DefaultCollation) + } + + tk.MustQuery(fmt.Sprintf("show create table %s", tableName)).Check(testkit.Rows(rows)) + + ukTable := fmt.Sprintf("t_%s_uk", cs.Name) + mkTable := fmt.Sprintf("t_%s_mk", cs.Name) + tk.MustExec(fmt.Sprintf("drop table if exists %s", ukTable)) + tk.MustExec(fmt.Sprintf("drop table if exists %s", mkTable)) + + // For a unique index, an error occurs regardless of SQL mode because reducing + //the index length might enable insertion of non-unique entries that do not meet + //the specified uniqueness requirement. + sql = fmt.Sprintf(sqlTemplate, ukTable, col, "unique", indexLen, "", cs.Name) + tk.MustGetErrCode(sql, errno.ErrTooLongKey) + + // The multiple column index in which the length sum exceeds the maximum size + // will return an error instead produce a warning in strict sql mode. + indexLen = fmt.Sprintf("(%d)", expectKeyLength) + sql = fmt.Sprintf(sqlTemplate, mkTable, col, "", indexLen, ", age", cs.Name) + tk.MustGetErrCode(sql, errno.ErrTooLongKey) + } + } +} diff --git a/ddl/ddl.go b/ddl/ddl.go index 66703aa5d3b43..d5336e360957d 100644 --- a/ddl/ddl.go +++ b/ddl/ddl.go @@ -476,6 +476,14 @@ func (d *ddl) Start(ctxPool *pools.ResourcePool) error { // If RunWorker is true, we need campaign owner and do DDL job. // Otherwise, we needn't do that. if RunWorker { + d.ownerManager.SetBeOwnerHook(func() { + var err error + d.ddlSeqNumMu.seqNum, err = d.GetNextDDLSeqNum() + if err != nil { + logutil.BgLogger().Error("error when getting the ddl history count", zap.Error(err)) + } + }) + err := d.ownerManager.CampaignOwner() if err != nil { return errors.Trace(err) @@ -497,11 +505,6 @@ func (d *ddl) Start(ctxPool *pools.ResourcePool) error { asyncNotify(worker.ddlJobCh) } - d.ddlSeqNumMu.seqNum, err = d.GetNextDDLSeqNum() - if err != nil { - return err - } - go d.schemaSyncer.StartCleanWork() if config.TableLockEnabled() { d.wg.Add(1) @@ -544,7 +547,7 @@ func (d *ddl) close() { d.schemaSyncer.Close() for _, worker := range d.workers { - worker.close() + worker.Close() } // d.delRangeMgr using sessions from d.sessPool. // Put it before d.sessPool.close to reduce the time spent by d.sessPool.close. @@ -812,7 +815,11 @@ func (d *ddl) DoDDLJob(ctx sessionctx.Context, job *model.Job) error { } } -func (d *ddl) callHookOnChanged(err error) error { +func (d *ddl) callHookOnChanged(job *model.Job, err error) error { + if job.State == model.JobStateNone { + // We don't call the hook if the job haven't run yet. + return err + } d.mu.RLock() defer d.mu.RUnlock() diff --git a/ddl/ddl_api.go b/ddl/ddl_api.go index 612d35899e8c8..93bdaad56a0c4 100644 --- a/ddl/ddl_api.go +++ b/ddl/ddl_api.go @@ -146,7 +146,7 @@ func (d *ddl) CreateSchemaWithInfo( } err = d.DoDDLJob(ctx, job) - err = d.callHookOnChanged(err) + err = d.callHookOnChanged(job, err) return errors.Trace(err) } @@ -176,7 +176,7 @@ func (d *ddl) ModifySchemaCharsetAndCollate(ctx sessionctx.Context, stmt *ast.Al Args: []interface{}{toCharset, toCollate}, } err = d.DoDDLJob(ctx, job) - err = d.callHookOnChanged(err) + err = d.callHookOnChanged(job, err) return errors.Trace(err) } @@ -206,7 +206,7 @@ func (d *ddl) ModifySchemaDefaultPlacement(ctx sessionctx.Context, stmt *ast.Alt Args: []interface{}{placementPolicyRef}, } err = d.DoDDLJob(ctx, job) - err = d.callHookOnChanged(err) + err = d.callHookOnChanged(job, err) return errors.Trace(err) } @@ -364,7 +364,7 @@ func (d *ddl) ModifySchemaSetTiFlashReplica(sctx sessionctx.Context, stmt *ast.A Args: []interface{}{*tiflashReplica}, } err := d.DoDDLJob(sctx, job) - err = d.callHookOnChanged(err) + err = d.callHookOnChanged(job, err) if err != nil { oneFail = tbl.ID fail += 1 @@ -419,7 +419,7 @@ func (d *ddl) AlterTablePlacement(ctx sessionctx.Context, ident ast.Ident, place } err = d.DoDDLJob(ctx, job) - err = d.callHookOnChanged(err) + err = d.callHookOnChanged(job, err) return errors.Trace(err) } @@ -535,7 +535,7 @@ func (d *ddl) DropSchema(ctx sessionctx.Context, schema model.CIStr) (err error) } err = d.DoDDLJob(ctx, job) - err = d.callHookOnChanged(err) + err = d.callHookOnChanged(job, err) if err != nil { return errors.Trace(err) } @@ -1160,6 +1160,13 @@ func getDefaultValue(ctx sessionctx.Context, col *table.Column, option *ast.Colu // For BIT fields, convert int into BinaryLiteral. return types.NewBinaryLiteralFromUint(v.GetUint64(), -1).ToString(), false, nil } + case mysql.TypeTiny, mysql.TypeShort, mysql.TypeInt24, mysql.TypeLong, mysql.TypeLonglong, mysql.TypeFloat, mysql.TypeDouble: + // For these types, convert it to standard format firstly. + // like integer fields, convert it into integer string literals. like convert "1.25" into "1" and "2.8" into "3". + // if raise a error, we will use original expression. We will handle it in check phase + if temp, err := v.ConvertTo(ctx.GetSessionVars().StmtCtx, &col.FieldType); err == nil { + v = temp + } } val, err := v.ToString() @@ -1621,61 +1628,13 @@ func checkInvisibleIndexOnPK(tblInfo *model.TableInfo) error { if tblInfo.PKIsHandle { return nil } - pk := getPrimaryKey(tblInfo) + pk := tblInfo.GetPrimaryKey() if pk != nil && pk.Invisible { return dbterror.ErrPKIndexCantBeInvisible } return nil } -// getPrimaryKey extract the primary key in a table and return `IndexInfo` -// The returned primary key could be explicit or implicit. -// If there is no explicit primary key in table, -// the first UNIQUE INDEX on NOT NULL columns will be the implicit primary key. -// For more information about implicit primary key, see -// https://dev.mysql.com/doc/refman/8.0/en/invisible-indexes.html -func getPrimaryKey(tblInfo *model.TableInfo) *model.IndexInfo { - var implicitPK *model.IndexInfo - - for _, key := range tblInfo.Indices { - if key.Primary { - // table has explicit primary key - return key - } - // The case index without any columns should never happen, but still do a check here - if len(key.Columns) == 0 { - continue - } - // find the first unique key with NOT NULL columns - if implicitPK == nil && key.Unique { - // ensure all columns in unique key have NOT NULL flag - allColNotNull := true - skip := false - for _, idxCol := range key.Columns { - col := model.FindColumnInfo(tblInfo.Cols(), idxCol.Name.L) - // This index has a column in DeleteOnly state, - // or it is expression index (it defined on a hidden column), - // it can not be implicit PK, go to next index iterator - if col == nil || col.Hidden { - skip = true - break - } - if !mysql.HasNotNullFlag(col.GetFlag()) { - allColNotNull = false - break - } - } - if skip { - continue - } - if allColNotNull { - implicitPK = key - } - } - } - return implicitPK -} - func setTableAutoRandomBits(ctx sessionctx.Context, tbInfo *model.TableInfo, colDefs []*ast.ColumnDef) error { pkColName := tbInfo.GetPkName() for _, col := range colDefs { @@ -1821,7 +1780,7 @@ func buildTableInfo( continue } // build index info. - idxInfo, err := buildIndexInfo(tbInfo, model.NewCIStr(constr.Name), constr.Keys, model.StatePublic) + idxInfo, err := buildIndexInfo(ctx, tbInfo, model.NewCIStr(constr.Name), constr.Keys, model.StatePublic) if err != nil { return nil, errors.Trace(err) } @@ -2366,7 +2325,7 @@ func (d *ddl) CreateTableWithInfo( err = d.createTableWithInfoPost(ctx, tbInfo, job.SchemaID) } - err = d.callHookOnChanged(err) + err = d.callHookOnChanged(job, err) return errors.Trace(err) } @@ -2455,12 +2414,12 @@ func (d *ddl) BatchCreateTableWithInfo(ctx sessionctx.Context, ctx.GetSessionVars().StmtCtx.AppendNote(err) err = nil } - return errors.Trace(d.callHookOnChanged(err)) + return errors.Trace(d.callHookOnChanged(jobs, err)) } for j := range args { if err = d.createTableWithInfoPost(ctx, args[j], jobs.SchemaID); err != nil { - return errors.Trace(d.callHookOnChanged(err)) + return errors.Trace(d.callHookOnChanged(jobs, err)) } } @@ -2507,7 +2466,7 @@ func (d *ddl) CreatePlacementPolicyWithInfo(ctx sessionctx.Context, policy *mode Args: []interface{}{policy, onExist == OnExistReplace}, } err = d.DoDDLJob(ctx, job) - err = d.callHookOnChanged(err) + err = d.callHookOnChanged(job, err) return errors.Trace(err) } @@ -2572,7 +2531,7 @@ func (d *ddl) RecoverTable(ctx sessionctx.Context, recoverInfo *RecoverInfo) (er recoverInfo.OldSchemaName, recoverInfo.OldTableName}, } err = d.DoDDLJob(ctx, job) - err = d.callHookOnChanged(err) + err = d.callHookOnChanged(job, err) return errors.Trace(err) } @@ -2994,7 +2953,7 @@ func isSameTypeMultiSpecs(specs []*ast.AlterTableSpec) bool { } func checkMultiSpecs(sctx sessionctx.Context, specs []*ast.AlterTableSpec) error { - if !sctx.GetSessionVars().EnableChangeMultiSchema { + if !variable.EnableChangeMultiSchema.Load() { if len(specs) > 1 { return dbterror.ErrRunMultiSchemaChanges } @@ -3054,6 +3013,10 @@ func (d *ddl) AlterTable(ctx context.Context, sctx sessionctx.Context, ident ast return nil } + if len(validSpecs) > 1 { + sctx.GetSessionVars().StmtCtx.MultiSchemaInfo = model.NewMultiSchemaInfo() + } + for _, spec := range validSpecs { var handledCharsetOrCollate bool switch spec.Tp { @@ -3241,6 +3204,13 @@ func (d *ddl) AlterTable(ctx context.Context, sctx sessionctx.Context, ident ast } } + if sctx.GetSessionVars().StmtCtx.MultiSchemaInfo != nil { + err = d.MultiSchemaChange(sctx, ident) + if err != nil { + return errors.Trace(err) + } + } + return nil } @@ -3296,7 +3266,7 @@ func (d *ddl) RebaseAutoID(ctx sessionctx.Context, ident ast.Ident, newBase int6 Args: []interface{}{newBase, force}, } err = d.DoDDLJob(ctx, job) - err = d.callHookOnChanged(err) + err = d.callHookOnChanged(job, err) return errors.Trace(err) } @@ -3347,7 +3317,7 @@ func (d *ddl) ShardRowID(ctx sessionctx.Context, tableIdent ast.Ident, uVal uint Args: []interface{}{uVal}, } err = d.DoDDLJob(ctx, job) - err = d.callHookOnChanged(err) + err = d.callHookOnChanged(job, err) return errors.Trace(err) } @@ -3523,7 +3493,7 @@ func (d *ddl) AddColumn(ctx sessionctx.Context, ti ast.Ident, spec *ast.AlterTab ctx.GetSessionVars().StmtCtx.AppendNote(err) return nil } - err = d.callHookOnChanged(err) + err = d.callHookOnChanged(job, err) return errors.Trace(err) } @@ -3598,7 +3568,7 @@ func (d *ddl) AddColumns(ctx sessionctx.Context, ti ast.Ident, specs []*ast.Alte if err != nil { return errors.Trace(err) } - err = d.callHookOnChanged(err) + err = d.callHookOnChanged(job, err) return errors.Trace(err) } @@ -3664,7 +3634,7 @@ func (d *ddl) AddTablePartitions(ctx sessionctx.Context, ident ast.Ident, spec * if err == nil { d.preSplitAndScatter(ctx, meta, partInfo) } - err = d.callHookOnChanged(err) + err = d.callHookOnChanged(job, err) return errors.Trace(err) } @@ -3756,7 +3726,7 @@ func (d *ddl) TruncateTablePartition(ctx sessionctx.Context, ident ast.Ident, sp if err != nil { return errors.Trace(err) } - err = d.callHookOnChanged(err) + err = d.callHookOnChanged(job, err) return errors.Trace(err) } @@ -3807,7 +3777,7 @@ func (d *ddl) DropTablePartition(ctx sessionctx.Context, ident ast.Ident, spec * } return errors.Trace(err) } - err = d.callHookOnChanged(err) + err = d.callHookOnChanged(job, err) return errors.Trace(err) } @@ -3999,7 +3969,7 @@ func (d *ddl) ExchangeTablePartition(ctx sessionctx.Context, ident ast.Ident, sp if err != nil { return errors.Trace(err) } - err = d.callHookOnChanged(err) + err = d.callHookOnChanged(job, err) return errors.Trace(err) } @@ -4018,12 +3988,12 @@ func (d *ddl) DropColumn(ctx sessionctx.Context, ti ast.Ident, spec *ast.AlterTa return nil } colName := spec.OldColumnName.Name - err = checkDropVisibleColumnCnt(t, 1) + err = checkVisibleColumnCnt(t, 0, 1) if err != nil { return err } var multiSchemaInfo *model.MultiSchemaInfo - if ctx.GetSessionVars().EnableChangeMultiSchema { + if variable.EnableChangeMultiSchema.Load() { multiSchemaInfo = &model.MultiSchemaInfo{} } @@ -4045,7 +4015,7 @@ func (d *ddl) DropColumn(ctx sessionctx.Context, ti ast.Ident, spec *ast.AlterTa ctx.GetSessionVars().StmtCtx.AppendNote(err) return nil } - err = d.callHookOnChanged(err) + err = d.callHookOnChanged(job, err) return errors.Trace(err) } @@ -4097,12 +4067,12 @@ func (d *ddl) DropColumns(ctx sessionctx.Context, ti ast.Ident, specs []*ast.Alt return dbterror.ErrCantRemoveAllFields.GenWithStack("can't drop all columns in table %s", tblInfo.Name) } - err = checkDropVisibleColumnCnt(t, len(colNames)) + err = checkVisibleColumnCnt(t, 0, len(colNames)) if err != nil { return err } var multiSchemaInfo *model.MultiSchemaInfo - if ctx.GetSessionVars().EnableChangeMultiSchema { + if variable.EnableChangeMultiSchema.Load() { multiSchemaInfo = &model.MultiSchemaInfo{} } @@ -4121,7 +4091,7 @@ func (d *ddl) DropColumns(ctx sessionctx.Context, ti ast.Ident, specs []*ast.Alt if err != nil { return errors.Trace(err) } - err = d.callHookOnChanged(err) + err = d.callHookOnChanged(job, err) return errors.Trace(err) } @@ -4139,7 +4109,7 @@ func checkIsDroppableColumn(ctx sessionctx.Context, t table.Table, spec *ast.Alt return false, err } - if err = isDroppableColumn(ctx.GetSessionVars().EnableChangeMultiSchema, tblInfo, colName); err != nil { + if err = isDroppableColumn(variable.EnableChangeMultiSchema.Load(), tblInfo, colName); err != nil { return false, errors.Trace(err) } // We don't support dropping column with PK handle covered now. @@ -4152,18 +4122,22 @@ func checkIsDroppableColumn(ctx sessionctx.Context, t table.Table, spec *ast.Alt return true, nil } -func checkDropVisibleColumnCnt(t table.Table, columnCnt int) error { +func checkVisibleColumnCnt(t table.Table, addCnt, dropCnt int) error { tblInfo := t.Meta() visibleColumCnt := 0 for _, column := range tblInfo.Columns { if !column.Hidden { visibleColumCnt++ } - if visibleColumCnt > columnCnt { - return nil - } } - return dbterror.ErrTableMustHaveColumns + if visibleColumCnt+addCnt > dropCnt { + return nil + } + if len(tblInfo.Columns)-visibleColumCnt > 0 { + // There are only invisible columns. + return dbterror.ErrTableMustHaveColumns + } + return dbterror.ErrCantRemoveAllFields } // checkModifyCharsetAndCollation returns error when the charset or collation is not modifiable. @@ -4629,7 +4603,7 @@ func checkIndexInModifiableColumns(columns []*model.ColumnInfo, idxColumns []*mo // if the type is still prefixable and larger than old prefix length. prefixLength = ic.Length } - if err := checkIndexColumn(col, prefixLength); err != nil { + if err := checkIndexColumn(nil, col, prefixLength); err != nil { return err } } @@ -4723,7 +4697,7 @@ func (d *ddl) ChangeColumn(ctx context.Context, sctx sessionctx.Context, ident a sctx.GetSessionVars().StmtCtx.AppendNote(err) return nil } - err = d.callHookOnChanged(err) + err = d.callHookOnChanged(job, err) return errors.Trace(err) } @@ -4795,7 +4769,7 @@ func (d *ddl) RenameColumn(ctx sessionctx.Context, ident ast.Ident, spec *ast.Al Args: []interface{}{&newCol, oldColName, spec.Position, 0, 0}, } err = d.DoDDLJob(ctx, job) - err = d.callHookOnChanged(err) + err = d.callHookOnChanged(job, err) return errors.Trace(err) } @@ -4826,7 +4800,7 @@ func (d *ddl) ModifyColumn(ctx context.Context, sctx sessionctx.Context, ident a sctx.GetSessionVars().StmtCtx.AppendNote(err) return nil } - err = d.callHookOnChanged(err) + err = d.callHookOnChanged(job, err) return errors.Trace(err) } @@ -4853,11 +4827,12 @@ func (d *ddl) AlterColumn(ctx sessionctx.Context, ident ast.Ident, spec *ast.Alt // Clean the NoDefaultValueFlag value. col.DelFlag(mysql.NoDefaultValueFlag) if len(specNewColumn.Options) == 0 { + col.DefaultIsExpr = false err = col.SetDefaultValue(nil) if err != nil { return errors.Trace(err) } - setNoDefaultValueFlag(col, false) + col.AddFlag(mysql.NoDefaultValueFlag) } else { if IsAutoRandomColumnID(t.Meta(), col.ID) { return dbterror.ErrInvalidAutoRandom.GenWithStackByArgs(autoid.AutoRandomIncompatibleWithDefaultValueErrMsg) @@ -4882,7 +4857,7 @@ func (d *ddl) AlterColumn(ctx sessionctx.Context, ident ast.Ident, spec *ast.Alt } err = d.DoDDLJob(ctx, job) - err = d.callHookOnChanged(err) + err = d.callHookOnChanged(job, err) return errors.Trace(err) } @@ -4913,7 +4888,7 @@ func (d *ddl) AlterTableComment(ctx sessionctx.Context, ident ast.Ident, spec *a } err = d.DoDDLJob(ctx, job) - err = d.callHookOnChanged(err) + err = d.callHookOnChanged(job, err) return errors.Trace(err) } @@ -4935,7 +4910,7 @@ func (d *ddl) AlterTableAutoIDCache(ctx sessionctx.Context, ident ast.Ident, new } err = d.DoDDLJob(ctx, job) - err = d.callHookOnChanged(err) + err = d.callHookOnChanged(job, err) return errors.Trace(err) } @@ -4987,7 +4962,7 @@ func (d *ddl) AlterTableCharsetAndCollate(ctx sessionctx.Context, ident ast.Iden Args: []interface{}{toCharset, toCollate, needsOverwriteCols}, } err = d.DoDDLJob(ctx, job) - err = d.callHookOnChanged(err) + err = d.callHookOnChanged(job, err) return errors.Trace(err) } @@ -5045,7 +5020,7 @@ func (d *ddl) AlterTableSetTiFlashReplica(ctx sessionctx.Context, ident ast.Iden Args: []interface{}{*replicaInfo}, } err = d.DoDDLJob(ctx, job) - err = d.callHookOnChanged(err) + err = d.callHookOnChanged(job, err) return errors.Trace(err) } @@ -5155,7 +5130,7 @@ func (d *ddl) UpdateTableReplicaInfo(ctx sessionctx.Context, physicalID int64, a Args: []interface{}{available, physicalID}, } err := d.DoDDLJob(ctx, job) - err = d.callHookOnChanged(err) + err = d.callHookOnChanged(job, err) return errors.Trace(err) } @@ -5262,7 +5237,7 @@ func (d *ddl) RenameIndex(ctx sessionctx.Context, ident ast.Ident, spec *ast.Alt } err = d.DoDDLJob(ctx, job) - err = d.callHookOnChanged(err) + err = d.callHookOnChanged(job, err) return errors.Trace(err) } @@ -5294,7 +5269,7 @@ func (d *ddl) DropTable(ctx sessionctx.Context, ti ast.Ident) (err error) { } err = d.DoDDLJob(ctx, job) - err = d.callHookOnChanged(err) + err = d.callHookOnChanged(job, err) if err != nil { return errors.Trace(err) } @@ -5329,7 +5304,7 @@ func (d *ddl) DropView(ctx sessionctx.Context, ti ast.Ident) (err error) { } err = d.DoDDLJob(ctx, job) - err = d.callHookOnChanged(err) + err = d.callHookOnChanged(job, err) return errors.Trace(err) } @@ -5367,7 +5342,7 @@ func (d *ddl) TruncateTable(ctx sessionctx.Context, ti ast.Ident) error { ctx.AddTableLock([]model.TableLockTpInfo{{SchemaID: schema.ID, TableID: newTableID, Tp: tb.Meta().Lock.Tp}}) } err = d.DoDDLJob(ctx, job) - err = d.callHookOnChanged(err) + err = d.callHookOnChanged(job, err) if err != nil { if config.TableLockEnabled() { ctx.ReleaseTableLockByTableIDs([]int64{newTableID}) @@ -5416,7 +5391,7 @@ func (d *ddl) RenameTable(ctx sessionctx.Context, oldIdent, newIdent ast.Ident, } err = d.DoDDLJob(ctx, job) - err = d.callHookOnChanged(err) + err = d.callHookOnChanged(job, err) return errors.Trace(err) } @@ -5464,7 +5439,7 @@ func (d *ddl) RenameTables(ctx sessionctx.Context, oldIdents, newIdents []ast.Id } err = d.DoDDLJob(ctx, job) - err = d.callHookOnChanged(err) + err = d.callHookOnChanged(job, err) return errors.Trace(err) } @@ -5611,7 +5586,7 @@ func (d *ddl) CreatePrimaryKey(ctx sessionctx.Context, ti ast.Ident, indexName m // After DDL job is put to the queue, and if the check fail, TiDB will run the DDL cancel logic. // The recover step causes DDL wait a few seconds, makes the unit test painfully slow. // For same reason, decide whether index is global here. - indexColumns, err := buildIndexColumns(tblInfo.Columns, indexPartSpecifications) + indexColumns, err := buildIndexColumns(ctx, tblInfo.Columns, indexPartSpecifications) if err != nil { return errors.Trace(err) } @@ -5663,7 +5638,7 @@ func (d *ddl) CreatePrimaryKey(ctx sessionctx.Context, ti ast.Ident, indexName m } err = d.DoDDLJob(ctx, job) - err = d.callHookOnChanged(err) + err = d.callHookOnChanged(job, err) return errors.Trace(err) } @@ -5809,7 +5784,7 @@ func (d *ddl) CreateIndex(ctx sessionctx.Context, ti ast.Ident, keyType ast.Inde // After DDL job is put to the queue, and if the check fail, TiDB will run the DDL cancel logic. // The recover step causes DDL wait a few seconds, makes the unit test painfully slow. // For same reason, decide whether index is global here. - indexColumns, err := buildIndexColumns(finalColumns, indexPartSpecifications) + indexColumns, err := buildIndexColumns(ctx, finalColumns, indexPartSpecifications) if err != nil { return errors.Trace(err) } @@ -5859,7 +5834,7 @@ func (d *ddl) CreateIndex(ctx sessionctx.Context, ti ast.Ident, keyType ast.Inde ctx.GetSessionVars().StmtCtx.AppendNote(err) return nil } - err = d.callHookOnChanged(err) + err = d.callHookOnChanged(job, err) return errors.Trace(err) } @@ -5975,7 +5950,7 @@ func (d *ddl) CreateForeignKey(ctx sessionctx.Context, ti ast.Ident, fkName mode } err = d.DoDDLJob(ctx, job) - err = d.callHookOnChanged(err) + err = d.callHookOnChanged(job, err) return errors.Trace(err) } @@ -6003,7 +5978,7 @@ func (d *ddl) DropForeignKey(ctx sessionctx.Context, ti ast.Ident, fkName model. } err = d.DoDDLJob(ctx, job) - err = d.callHookOnChanged(err) + err = d.callHookOnChanged(job, err) return errors.Trace(err) } @@ -6065,7 +6040,7 @@ func (d *ddl) DropIndex(ctx sessionctx.Context, ti ast.Ident, indexName model.CI ctx.GetSessionVars().StmtCtx.AppendNote(err) return nil } - err = d.callHookOnChanged(err) + err = d.callHookOnChanged(job, err) return errors.Trace(err) } @@ -6114,7 +6089,7 @@ func (d *ddl) DropIndexes(ctx sessionctx.Context, ti ast.Ident, specs []*ast.Alt } err = d.DoDDLJob(ctx, job) - err = d.callHookOnChanged(err) + err = d.callHookOnChanged(job, err) return errors.Trace(err) } @@ -6329,7 +6304,7 @@ func (d *ddl) LockTables(ctx sessionctx.Context, stmt *ast.LockTablesStmt) error ctx.ReleaseTableLocks(unlockTables) ctx.AddTableLock(lockTables) } - err = d.callHookOnChanged(err) + err = d.callHookOnChanged(job, err) return errors.Trace(err) } @@ -6357,7 +6332,7 @@ func (d *ddl) UnlockTables(ctx sessionctx.Context, unlockTables []model.TableLoc if err == nil { ctx.ReleaseAllTableLocks() } - err = d.callHookOnChanged(err) + err = d.callHookOnChanged(job, err) return errors.Trace(err) } @@ -6384,7 +6359,7 @@ func (d *ddl) CleanDeadTableLock(unlockTables []model.TableLockTpInfo, se model. } defer d.sessPool.put(ctx) err = d.DoDDLJob(ctx, job) - err = d.callHookOnChanged(err) + err = d.callHookOnChanged(job, err) return errors.Trace(err) } @@ -6448,7 +6423,7 @@ func (d *ddl) CleanupTableLock(ctx sessionctx.Context, tables []*ast.TableName) if err == nil { ctx.ReleaseTableLocks(cleanupTables) } - err = d.callHookOnChanged(err) + err = d.callHookOnChanged(job, err) return errors.Trace(err) } @@ -6536,7 +6511,7 @@ func (d *ddl) RepairTable(ctx sessionctx.Context, table *ast.TableName, createSt // Remove the old TableInfo from repairInfo before domain reload. domainutil.RepairInfo.RemoveFromRepairInfo(oldDBInfo.Name.L, oldTableInfo.Name.L) } - err = d.callHookOnChanged(err) + err = d.callHookOnChanged(job, err) return errors.Trace(err) } @@ -6612,7 +6587,7 @@ func (d *ddl) AlterSequence(ctx sessionctx.Context, stmt *ast.AlterSequenceStmt) } err = d.DoDDLJob(ctx, job) - err = d.callHookOnChanged(err) + err = d.callHookOnChanged(job, err) return errors.Trace(err) } @@ -6642,7 +6617,7 @@ func (d *ddl) DropSequence(ctx sessionctx.Context, ti ast.Ident, ifExists bool) } err = d.DoDDLJob(ctx, job) - err = d.callHookOnChanged(err) + err = d.callHookOnChanged(job, err) return errors.Trace(err) } @@ -6676,7 +6651,7 @@ func (d *ddl) AlterIndexVisibility(ctx sessionctx.Context, ident ast.Ident, inde } err = d.DoDDLJob(ctx, job) - err = d.callHookOnChanged(err) + err = d.callHookOnChanged(job, err) return errors.Trace(err) } @@ -6710,7 +6685,7 @@ func (d *ddl) AlterTableAttributes(ctx sessionctx.Context, ident ast.Ident, spec return errors.Trace(err) } - err = d.callHookOnChanged(err) + err = d.callHookOnChanged(job, err) return errors.Trace(err) } @@ -6752,7 +6727,7 @@ func (d *ddl) AlterTablePartitionAttributes(ctx sessionctx.Context, ident ast.Id return errors.Trace(err) } - err = d.callHookOnChanged(err) + err = d.callHookOnChanged(job, err) return errors.Trace(err) } @@ -6817,7 +6792,7 @@ func (d *ddl) AlterTablePartitionPlacement(ctx sessionctx.Context, tableIdent as } err = d.DoDDLJob(ctx, job) - err = d.callHookOnChanged(err) + err = d.callHookOnChanged(job, err) return errors.Trace(err) } @@ -6996,7 +6971,7 @@ func (d *ddl) DropPlacementPolicy(ctx sessionctx.Context, stmt *ast.DropPlacemen Args: []interface{}{policyName}, } err = d.DoDDLJob(ctx, job) - err = d.callHookOnChanged(err) + err = d.callHookOnChanged(job, err) return errors.Trace(err) } @@ -7030,7 +7005,7 @@ func (d *ddl) AlterPlacementPolicy(ctx sessionctx.Context, stmt *ast.AlterPlacem Args: []interface{}{newPolicyInfo}, } err = d.DoDDLJob(ctx, job) - err = d.callHookOnChanged(err) + err = d.callHookOnChanged(job, err) return errors.Trace(err) } @@ -7086,7 +7061,7 @@ func (d *ddl) AlterTableCache(ctx sessionctx.Context, ti ast.Ident) (err error) } err = d.DoDDLJob(ctx, job) - return d.callHookOnChanged(err) + return d.callHookOnChanged(job, err) } func checkCacheTableSize(store kv.Storage, tableID int64) (bool, error) { @@ -7143,7 +7118,7 @@ func (d *ddl) AlterTableNoCache(ctx sessionctx.Context, ti ast.Ident) (err error } err = d.DoDDLJob(ctx, job) - return d.callHookOnChanged(err) + return d.callHookOnChanged(job, err) } // checkTooBigFieldLengthAndTryAutoConvert will check whether the field length is too big diff --git a/ddl/ddl_api_test.go b/ddl/ddl_api_test.go new file mode 100644 index 0000000000000..e915dd33d7678 --- /dev/null +++ b/ddl/ddl_api_test.go @@ -0,0 +1,44 @@ +// 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 ddl_test + +import ( + "testing" + + "github.com/pingcap/tidb/parser/model" + "github.com/stretchr/testify/require" +) + +func TestIsJobRollbackable(t *testing.T) { + cases := []struct { + tp model.ActionType + state model.SchemaState + result bool + }{ + {model.ActionDropIndex, model.StateNone, true}, + {model.ActionDropIndex, model.StateDeleteOnly, false}, + {model.ActionDropSchema, model.StateDeleteOnly, false}, + {model.ActionDropColumn, model.StateDeleteOnly, false}, + {model.ActionDropColumns, model.StateDeleteOnly, false}, + {model.ActionDropIndexes, model.StateDeleteOnly, false}, + } + job := &model.Job{} + for _, ca := range cases { + job.Type = ca.tp + job.SchemaState = ca.state + re := job.IsRollbackable() + require.Equal(t, ca.result, re) + } +} diff --git a/ddl/ddl_error_test.go b/ddl/ddl_error_test.go index 59c982a24254f..b869ae42d1aac 100644 --- a/ddl/ddl_error_test.go +++ b/ddl/ddl_error_test.go @@ -38,25 +38,25 @@ func TestTableError(t *testing.T) { tk.MustExec("create table testDrop(a int)") // Schema ID is wrong, so dropping table is failed. require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/ddl/mockModifyJobSchemaId", `return(-1)`)) - _, err := tk.Exec("drop table testDrop") + err := tk.ExecToErr("drop table testDrop") require.Error(t, err) require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/ddl/mockModifyJobSchemaId")) // Table ID is wrong, so dropping table is failed. require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/ddl/MockModifyJobTableId", `return(-1)`)) - _, err = tk.Exec("drop table testDrop") + err = tk.ExecToErr("drop table testDrop") require.Error(t, err) require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/ddl/MockModifyJobTableId")) // Args is wrong, so creating table is failed. require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/ddl/MockModifyJobArg", `return(true)`)) - _, err = tk.Exec("create table test.t1(a int)") + err = tk.ExecToErr("create table test.t1(a int)") require.Error(t, err) require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/ddl/MockModifyJobArg")) // Table exists, so creating table is failed. require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/ddl/mockModifyJobSchemaId", `return(-1)`)) - _, err = tk.Exec("create table test.t1(a int)") + err = tk.ExecToErr("create table test.t1(a int)") require.Error(t, err) require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/ddl/mockModifyJobSchemaId")) // Table exists, so creating table is failed. @@ -74,7 +74,7 @@ func TestViewError(t *testing.T) { // Args is wrong, so creating view is failed. require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/ddl/MockModifyJobArg", `return(true)`)) - _, err := tk.Exec("create view v as select * from t") + err := tk.ExecToErr("create view v as select * from t") require.Error(t, err) require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/ddl/MockModifyJobArg")) } @@ -88,9 +88,9 @@ func TestForeignKeyError(t *testing.T) { tk.MustExec("create table t1 (a int, FOREIGN KEY fk(a) REFERENCES t(a))") require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/ddl/mockModifyJobSchemaId", `return(-1)`)) - _, err := tk.Exec("alter table t1 add foreign key idx(a) REFERENCES t(a)") + err := tk.ExecToErr("alter table t1 add foreign key idx(a) REFERENCES t(a)") require.Error(t, err) - _, err = tk.Exec("alter table t1 drop index fk") + err = tk.ExecToErr("alter table t1 drop index fk") require.Error(t, err) require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/ddl/mockModifyJobSchemaId")) } @@ -106,17 +106,17 @@ func TestIndexError(t *testing.T) { // Schema ID is wrong. require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/ddl/mockModifyJobSchemaId", `return(-1)`)) - _, err := tk.Exec("alter table t add index idx(a)") + err := tk.ExecToErr("alter table t add index idx(a)") require.Error(t, err) - _, err = tk.Exec("alter table t1 drop a") + err = tk.ExecToErr("alter table t1 drop a") require.Error(t, err) require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/ddl/mockModifyJobSchemaId")) // for adding index require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/ddl/MockModifyJobArg", `return(true)`)) - _, err = tk.Exec("alter table t add index idx(a)") + err = tk.ExecToErr("alter table t add index idx(a)") require.Error(t, err) - _, err = tk.Exec("alter table t drop index a") + err = tk.ExecToErr("alter table t drop index a") require.Error(t, err) require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/ddl/MockModifyJobArg")) } @@ -132,43 +132,43 @@ func TestColumnError(t *testing.T) { // Invalid schema ID. require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/ddl/mockModifyJobSchemaId", `return(-1)`)) - _, err := tk.Exec("alter table t add column ta int") + err := tk.ExecToErr("alter table t add column ta int") require.Error(t, err) - _, err = tk.Exec("alter table t drop column aa") + err = tk.ExecToErr("alter table t drop column aa") require.Error(t, err) - _, err = tk.Exec("alter table t drop column aa") + err = tk.ExecToErr("alter table t drop column aa") require.Error(t, err) - _, err = tk.Exec("alter table t add column ta int, add column tb int") + err = tk.ExecToErr("alter table t add column ta int, add column tb int") require.Error(t, err) - _, err = tk.Exec("alter table t drop column aa, drop column ab") + err = tk.ExecToErr("alter table t drop column aa, drop column ab") require.Error(t, err) require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/ddl/mockModifyJobSchemaId")) // Invalid table ID. require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/ddl/MockModifyJobTableId", `return(-1)`)) - _, err = tk.Exec("alter table t add column ta int") + err = tk.ExecToErr("alter table t add column ta int") require.Error(t, err) - _, err = tk.Exec("alter table t drop column aa") + err = tk.ExecToErr("alter table t drop column aa") require.Error(t, err) - _, err = tk.Exec("alter table t drop column aa") + err = tk.ExecToErr("alter table t drop column aa") require.Error(t, err) - _, err = tk.Exec("alter table t add column ta int, add column tb int") + err = tk.ExecToErr("alter table t add column ta int, add column tb int") require.Error(t, err) - _, err = tk.Exec("alter table t drop column aa, drop column ab") + err = tk.ExecToErr("alter table t drop column aa, drop column ab") require.Error(t, err) require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/ddl/MockModifyJobTableId")) // Invalid argument. require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/ddl/MockModifyJobArg", `return(true)`)) - _, err = tk.Exec("alter table t add column ta int") + err = tk.ExecToErr("alter table t add column ta int") require.Error(t, err) - _, err = tk.Exec("alter table t drop column aa") + err = tk.ExecToErr("alter table t drop column aa") require.Error(t, err) - _, err = tk.Exec("alter table t drop column aa") + err = tk.ExecToErr("alter table t drop column aa") require.Error(t, err) - _, err = tk.Exec("alter table t add column ta int, add column tb int") + err = tk.ExecToErr("alter table t add column ta int, add column tb int") require.Error(t, err) - _, err = tk.Exec("alter table t drop column aa, drop column ab") + err = tk.ExecToErr("alter table t drop column aa, drop column ab") require.Error(t, err) require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/ddl/MockModifyJobArg")) diff --git a/ddl/ddl_test.go b/ddl/ddl_test.go index c45f4e50b904f..14ec2a6ec4c56 100644 --- a/ddl/ddl_test.go +++ b/ddl/ddl_test.go @@ -358,7 +358,7 @@ func TestNotifyDDLJob(t *testing.T) { // Ensure that the notification is not handled in workers `start` function. d.cancel() for _, worker := range d.workers { - worker.close() + worker.Close() } job := &model.Job{ @@ -401,7 +401,7 @@ func TestNotifyDDLJob(t *testing.T) { // Ensure that the notification is not handled by worker's "start". d1.cancel() for _, worker := range d1.workers { - worker.close() + worker.Close() } d1.ownerManager.RetireOwner() d1.asyncNotifyWorker(job) @@ -559,7 +559,7 @@ func TestReorg(t *testing.T) { require.Equal(t, ctx.Value(testCtxKey), 1) ctx.ClearValue(testCtxKey) - err = ctx.NewTxn(context.Background()) + err = sessiontxn.NewTxn(context.Background(), ctx) require.NoError(t, err) txn, err := ctx.Txn(true) require.NoError(t, err) @@ -568,7 +568,7 @@ func TestReorg(t *testing.T) { err = txn.Rollback() require.NoError(t, err) - err = ctx.NewTxn(context.Background()) + err = sessiontxn.NewTxn(context.Background(), ctx) require.NoError(t, err) txn, err = ctx.Txn(true) require.NoError(t, err) @@ -583,7 +583,7 @@ func TestReorg(t *testing.T) { ID: 1, SnapshotVer: 1, // Make sure it is not zero. So the reorgInfo's first is false. } - err = ctx.NewTxn(context.Background()) + err = sessiontxn.NewTxn(context.Background(), ctx) require.NoError(t, err) txn, err = ctx.Txn(true) require.NoError(t, err) @@ -614,7 +614,7 @@ func TestReorg(t *testing.T) { // Test whether reorgInfo's Handle is update. err = txn.Commit(context.Background()) require.NoError(t, err) - err = ctx.NewTxn(context.Background()) + err = sessiontxn.NewTxn(context.Background(), ctx) require.NoError(t, err) m = meta.NewMeta(txn) @@ -985,28 +985,6 @@ func TestGetHistoryDDLJobs(t *testing.T) { require.NoError(t, err) } -func TestIsJobRollbackable(t *testing.T) { - cases := []struct { - tp model.ActionType - state model.SchemaState - result bool - }{ - {model.ActionDropIndex, model.StateNone, true}, - {model.ActionDropIndex, model.StateDeleteOnly, false}, - {model.ActionDropSchema, model.StateDeleteOnly, false}, - {model.ActionDropColumn, model.StateDeleteOnly, false}, - {model.ActionDropColumns, model.StateDeleteOnly, false}, - {model.ActionDropIndexes, model.StateDeleteOnly, false}, - } - job := &model.Job{} - for _, ca := range cases { - job.Type = ca.tp - job.SchemaState = ca.state - re := job.IsRollbackable() - require.Equal(t, ca.result, re) - } -} - func TestError(t *testing.T) { kvErrs := []*terror.Error{ dbterror.ErrDDLJobNotFound, diff --git a/ddl/ddl_worker.go b/ddl/ddl_worker.go index b7d5341fac9f1..d12e304e844a9 100644 --- a/ddl/ddl_worker.go +++ b/ddl/ddl_worker.go @@ -44,6 +44,7 @@ import ( topsqlstate "github.com/pingcap/tidb/util/topsql/state" "github.com/tikv/client-go/v2/tikvrpc" clientv3 "go.etcd.io/etcd/client/v3" + atomicutil "go.uber.org/atomic" "go.uber.org/zap" ) @@ -51,7 +52,7 @@ var ( // RunWorker indicates if this TiDB server starts DDL worker and can run DDL job. RunWorker = true // ddlWorkerID is used for generating the next DDL worker ID. - ddlWorkerID = int32(0) + ddlWorkerID = atomicutil.NewInt32(0) // WaitTimeWhenErrorOccurred is waiting interval when processing DDL jobs encounter errors. WaitTimeWhenErrorOccurred = int64(1 * time.Second) ) @@ -118,7 +119,7 @@ func NewJobContext() *JobContext { func newWorker(ctx context.Context, tp workerType, sessPool *sessionPool, delRangeMgr delRangeManager, dCtx *ddlCtx) *worker { worker := &worker{ - id: atomic.AddInt32(&ddlWorkerID, 1), + id: ddlWorkerID.Add(1), tp: tp, ddlJobCh: make(chan struct{}, 1), ctx: ctx, @@ -149,7 +150,7 @@ func (w *worker) String() string { return fmt.Sprintf("worker %d, tp %s", w.id, w.typeStr()) } -func (w *worker) close() { +func (w *worker) Close() { startTime := time.Now() w.wg.Wait() logutil.Logger(w.logCtx).Info("[ddl] DDL worker closed", zap.Duration("take time", time.Since(startTime))) @@ -540,6 +541,17 @@ func (w *JobContext) setDDLLabelForTopSQL(job *model.Job) { } } +func (w *worker) unlockSeqNum(err error) { + if w.lockSeqNum { + if err != nil { + // if meet error, we should reset seqNum. + w.ddlSeqNumMu.seqNum-- + } + w.lockSeqNum = false + w.ddlSeqNumMu.Unlock() + } +} + func (w *JobContext) getResourceGroupTaggerForTopSQL() tikvrpc.ResourceGroupTagger { if !topsqlstate.TopSQLEnabled() || w.cacheDigest == nil { return nil @@ -650,21 +662,13 @@ func (w *worker) handleDDLJobQueue(d *ddlCtx) error { } if err != nil { - if w.lockSeqNum { - // txn commit failed, we should reset seqNum. - w.ddlSeqNumMu.seqNum-- - w.lockSeqNum = false - w.ddlSeqNumMu.Unlock() - } + w.unlockSeqNum(err) return errors.Trace(err) } else if job == nil { // No job now, return and retry getting later. return nil } - if w.lockSeqNum { - w.lockSeqNum = false - d.ddlSeqNumMu.Unlock() - } + w.unlockSeqNum(err) w.waitDependencyJobFinished(job, &waitDependencyJobCnt) // Here means the job enters another state (delete only, write only, public, etc...) or is cancelled. diff --git a/ddl/ddl_worker_test.go b/ddl/ddl_worker_test.go index 5de058fc35e8e..082fa3fe6aa7d 100644 --- a/ddl/ddl_worker_test.go +++ b/ddl/ddl_worker_test.go @@ -1,16 +1,16 @@ -//// Copyright 2015 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. +// Copyright 2015 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // package ddl_test @@ -231,7 +231,7 @@ func TestParallelDDL(t *testing.T) { time.Sleep(5 * time.Millisecond) wg.Run(func() { tk := testkit.NewTestKit(t, store) - _, err := tk.Exec("alter table test_parallel_ddl_2.t3 add index db3_idx1(c2)") + err := tk.ExecToErr("alter table test_parallel_ddl_2.t3 add index db3_idx1(c2)") require.Error(t, err) rs := tk.MustQuery("select json_extract(@@tidb_last_ddl_info, '$.seq_num')") seqIDs[10], _ = strconv.Atoi(rs.Rows()[0][0].(string)) diff --git a/ddl/failtest/BUILD.bazel b/ddl/failtest/BUILD.bazel new file mode 100644 index 0000000000000..97a57282e20d6 --- /dev/null +++ b/ddl/failtest/BUILD.bazel @@ -0,0 +1,29 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_test") + +go_test( + name = "failtest_test", + srcs = [ + "fail_db_test.go", + "main_test.go", + ], + flaky = True, + deps = [ + "//config", + "//ddl", + "//ddl/testutil", + "//ddl/util", + "//domain", + "//kv", + "//parser/model", + "//session", + "//sessionctx/variable", + "//store/mockstore", + "//tablecodec", + "//testkit", + "//testkit/testsetup", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_stretchr_testify//require", + "@com_github_tikv_client_go_v2//testutils", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/ddl/failtest/fail_db_test.go b/ddl/failtest/fail_db_test.go index 874acd12b5bbc..b1755f484254e 100644 --- a/ddl/failtest/fail_db_test.go +++ b/ddl/failtest/fail_db_test.go @@ -102,15 +102,15 @@ func TestHalfwayCancelOperations(t *testing.T) { }() tk.MustExec("create table tx(a int)") tk.MustExec("insert into tx values(1)") - _, err = tk.Exec("rename table tx to ty") + err = tk.ExecToErr("rename table tx to ty") require.Error(t, err) tk.MustExec("create table ty(a int)") tk.MustExec("insert into ty values(2)") - _, err = tk.Exec("rename table ty to tz, tx to ty") + err = tk.ExecToErr("rename table ty to tz, tx to ty") require.Error(t, err) - _, err = tk.Exec("select * from tz") + err = tk.ExecToErr("select * from tz") require.Error(t, err) - _, err = tk.Exec("rename table tx to ty, ty to tz") + err = tk.ExecToErr("rename table tx to ty, ty to tz") require.Error(t, err) tk.MustQuery("select * from ty").Check(testkit.Rows("2")) // Make sure that the table's data has not been deleted. @@ -134,7 +134,7 @@ func TestHalfwayCancelOperations(t *testing.T) { tk.MustExec("insert into nt values(7)") tk.MustExec("set @@tidb_enable_exchange_partition=1") defer tk.MustExec("set @@tidb_enable_exchange_partition=0") - _, err = tk.Exec("alter table pt exchange partition p1 with table nt") + err = tk.ExecToErr("alter table pt exchange partition p1 with table nt") require.Error(t, err) tk.MustQuery("select * from pt").Check(testkit.Rows("1", "3", "5")) @@ -263,7 +263,7 @@ func TestFailSchemaSyncer(t *testing.T) { time.Sleep(100 * time.Millisecond) } require.True(t, s.dom.SchemaValidator.IsStarted()) - _, err = tk.Exec("insert into t values(1)") + err = tk.ExecToErr("insert into t values(1)") require.NoError(t, err) } @@ -483,8 +483,7 @@ func TestModifyColumn(t *testing.T) { ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin")) tk.MustExec("admin check table t") tk.MustExec("insert into t values(111, 222, 333)") - _, err = tk.Exec("alter table t change column a aa tinyint after c") - require.EqualError(t, err, "[types:1690]constant 222 overflows tinyint") + tk.MustGetErrMsg("alter table t change column a aa tinyint after c", "[types:1690]constant 222 overflows tinyint") tk.MustExec("alter table t change column a aa mediumint after c") tk.MustQuery("show create table t").Check(testkit.Rows("t CREATE TABLE `t` (\n" + " `bb` mediumint(9) DEFAULT NULL,\n" + @@ -500,17 +499,12 @@ func TestModifyColumn(t *testing.T) { // Test unsupported statements. tk.MustExec("create table t1(a int) partition by hash (a) partitions 2") - _, err = tk.Exec("alter table t1 modify column a mediumint") - require.EqualError(t, err, "[ddl:8200]Unsupported modify column: table is partition table") + tk.MustGetErrMsg("alter table t1 modify column a mediumint", "[ddl:8200]Unsupported modify column: table is partition table") tk.MustExec("create table t2(id int, a int, b int generated always as (abs(a)) virtual, c int generated always as (a+1) stored)") - _, err = tk.Exec("alter table t2 modify column b mediumint") - require.EqualError(t, err, "[ddl:8200]Unsupported modify column: newCol IsGenerated false, oldCol IsGenerated true") - _, err = tk.Exec("alter table t2 modify column c mediumint") - require.EqualError(t, err, "[ddl:8200]Unsupported modify column: newCol IsGenerated false, oldCol IsGenerated true") - _, err = tk.Exec("alter table t2 modify column a mediumint generated always as(id+1) stored") - require.EqualError(t, err, "[ddl:8200]Unsupported modify column: newCol IsGenerated true, oldCol IsGenerated false") - _, err = tk.Exec("alter table t2 modify column a mediumint") - require.EqualError(t, err, "[ddl:8200]Unsupported modify column: oldCol is a dependent column 'a' for generated column") + tk.MustGetErrMsg("alter table t2 modify column b mediumint", "[ddl:8200]Unsupported modify column: newCol IsGenerated false, oldCol IsGenerated true") + tk.MustGetErrMsg("alter table t2 modify column c mediumint", "[ddl:8200]Unsupported modify column: newCol IsGenerated false, oldCol IsGenerated true") + tk.MustGetErrMsg("alter table t2 modify column a mediumint generated always as(id+1) stored", "[ddl:8200]Unsupported modify column: newCol IsGenerated true, oldCol IsGenerated false") + tk.MustGetErrMsg("alter table t2 modify column a mediumint", "[ddl:8200]Unsupported modify column: oldCol is a dependent column 'a' for generated column") // Test multiple rows of data. tk.MustExec("create table t3(a int not null default 1, b int default 2, c int not null default 0, primary key(c), index idx(b), index idx1(a), index idx2(b, c))") diff --git a/ddl/index.go b/ddl/index.go index a94bc04669d09..467f84190eb34 100644 --- a/ddl/index.go +++ b/ddl/index.go @@ -53,11 +53,11 @@ const ( MaxCommentLength = 1024 ) -func buildIndexColumns(columns []*model.ColumnInfo, indexPartSpecifications []*ast.IndexPartSpecification) ([]*model.IndexColumn, error) { +func buildIndexColumns(ctx sessionctx.Context, columns []*model.ColumnInfo, indexPartSpecifications []*ast.IndexPartSpecification) ([]*model.IndexColumn, error) { // Build offsets. idxParts := make([]*model.IndexColumn, 0, len(indexPartSpecifications)) var col *model.ColumnInfo - + maxIndexLength := config.GetGlobalConfig().MaxIndexLength // The sum of length of all index columns. sumLength := 0 for _, ip := range indexPartSpecifications { @@ -66,10 +66,10 @@ func buildIndexColumns(columns []*model.ColumnInfo, indexPartSpecifications []*a return nil, dbterror.ErrKeyColumnDoesNotExits.GenWithStack("column does not exist: %s", ip.Column.Name) } - if err := checkIndexColumn(col, ip.Length); err != nil { + if err := checkIndexColumn(ctx, col, ip.Length); err != nil { return nil, err } - + indexColLen := ip.Length indexColumnLength, err := getIndexColumnLength(col, ip.Length) if err != nil { return nil, err @@ -77,14 +77,26 @@ func buildIndexColumns(columns []*model.ColumnInfo, indexPartSpecifications []*a sumLength += indexColumnLength // The sum of all lengths must be shorter than the max length for prefix. - if sumLength > config.GetGlobalConfig().MaxIndexLength { - return nil, dbterror.ErrTooLongKey.GenWithStackByArgs(config.GetGlobalConfig().MaxIndexLength) + if sumLength > maxIndexLength { + // The multiple column index and the unique index in which the length sum exceeds the maximum size + // will return an error instead produce a warning. + if ctx == nil || ctx.GetSessionVars().StrictSQLMode || mysql.HasUniKeyFlag(col.GetFlag()) || len(indexPartSpecifications) > 1 { + return nil, dbterror.ErrTooLongKey.GenWithStackByArgs(maxIndexLength) + } + // truncate index length and produce warning message in non-restrict sql mode. + colLenPerUint, err := getIndexColumnLength(col, 1) + if err != nil { + return nil, err + } + indexColLen = maxIndexLength / colLenPerUint + // produce warning message + ctx.GetSessionVars().StmtCtx.AppendWarning(dbterror.ErrTooLongKey.FastGenByArgs(maxIndexLength)) } idxParts = append(idxParts, &model.IndexColumn{ Name: col.Name, Offset: col.Offset, - Length: ip.Length, + Length: indexColLen, }) } @@ -121,7 +133,7 @@ func checkIndexPrefixLength(columns []*model.ColumnInfo, idxColumns []*model.Ind return nil } -func checkIndexColumn(col *model.ColumnInfo, indexColumnLen int) error { +func checkIndexColumn(ctx sessionctx.Context, col *model.ColumnInfo, indexColumnLen int) error { if col.GetFlen() == 0 && (types.IsTypeChar(col.FieldType.GetType()) || types.IsTypeVarchar(col.FieldType.GetType())) { if col.Hidden { return errors.Trace(dbterror.ErrWrongKeyColumnFunctionalIndex.GenWithStackByArgs(col.GeneratedExprString)) @@ -175,8 +187,10 @@ func checkIndexColumn(col *model.ColumnInfo, indexColumnLen int) error { indexColumnLen *= desc.Maxlen } // Specified length must be shorter than the max length for prefix. - if indexColumnLen > config.GetGlobalConfig().MaxIndexLength { - return dbterror.ErrTooLongKey.GenWithStackByArgs(config.GetGlobalConfig().MaxIndexLength) + maxIndexLength := config.GetGlobalConfig().MaxIndexLength + if indexColumnLen > maxIndexLength && (ctx == nil || ctx.GetSessionVars().StrictSQLMode) { + // return error in strict sql mode + return dbterror.ErrTooLongKey.GenWithStackByArgs(maxIndexLength) } return nil } @@ -221,12 +235,12 @@ func calcBytesLengthForDecimal(m int) int { return (m / 9 * 4) + ((m%9)+1)/2 } -func buildIndexInfo(tblInfo *model.TableInfo, indexName model.CIStr, indexPartSpecifications []*ast.IndexPartSpecification, state model.SchemaState) (*model.IndexInfo, error) { +func buildIndexInfo(ctx sessionctx.Context, tblInfo *model.TableInfo, indexName model.CIStr, indexPartSpecifications []*ast.IndexPartSpecification, state model.SchemaState) (*model.IndexInfo, error) { if err := checkTooLongIndex(indexName); err != nil { return nil, errors.Trace(err) } - idxColumns, err := buildIndexColumns(tblInfo.Columns, indexPartSpecifications) + idxColumns, err := buildIndexColumns(ctx, tblInfo.Columns, indexPartSpecifications) if err != nil { return nil, errors.Trace(err) } @@ -467,7 +481,7 @@ func (w *worker) onCreateIndex(d *ddlCtx, t *meta.Meta, job *model.Job, isPK boo job.State = model.JobStateCancelled return ver, errors.Trace(err) } - indexInfo, err = buildIndexInfo(tblInfo, indexName, indexPartSpecifications, model.StateNone) + indexInfo, err = buildIndexInfo(nil, tblInfo, indexName, indexPartSpecifications, model.StateNone) if err != nil { job.State = model.JobStateCancelled return ver, errors.Trace(err) diff --git a/ddl/label/BUILD.bazel b/ddl/label/BUILD.bazel new file mode 100644 index 0000000000000..608f7fa1929c0 --- /dev/null +++ b/ddl/label/BUILD.bazel @@ -0,0 +1,35 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "label", + srcs = [ + "attributes.go", + "errors.go", + "rule.go", + ], + importpath = "github.com/pingcap/tidb/ddl/label", + visibility = ["//visibility:public"], + deps = [ + "//parser/ast", + "//tablecodec", + "//util/codec", + "@in_gopkg_yaml_v2//:yaml_v2", + "@org_golang_x_exp//slices", + ], +) + +go_test( + name = "label_test", + srcs = [ + "attributes_test.go", + "main_test.go", + "rule_test.go", + ], + embed = [":label"], + deps = [ + "//parser/ast", + "//testkit/testsetup", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/ddl/main_test.go b/ddl/main_test.go index 2db5d9668ca6d..895b9aeb1f9e0 100644 --- a/ddl/main_test.go +++ b/ddl/main_test.go @@ -40,6 +40,7 @@ func TestMain(m *testing.M) { autoid.SetStep(5000) ddl.ReorgWaitTimeout = 30 * time.Millisecond + ddl.RunInGoTest = true ddl.SetBatchInsertDeleteRangeSize(2) config.UpdateGlobal(func(conf *config.Config) { diff --git a/ddl/multi_schema_change.go b/ddl/multi_schema_change.go new file mode 100644 index 0000000000000..414d2f1484909 --- /dev/null +++ b/ddl/multi_schema_change.go @@ -0,0 +1,123 @@ +// 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 ddl + +import ( + "github.com/pingcap/errors" + ddlutil "github.com/pingcap/tidb/ddl/util" + "github.com/pingcap/tidb/parser/ast" + "github.com/pingcap/tidb/parser/model" + "github.com/pingcap/tidb/parser/terror" + "github.com/pingcap/tidb/sessionctx" + "github.com/pingcap/tidb/table" + "github.com/pingcap/tidb/util/dbterror" +) + +func (d *ddl) MultiSchemaChange(ctx sessionctx.Context, ti ast.Ident) error { + schema, t, err := d.getSchemaAndTableByIdent(ctx, ti) + if err != nil { + return errors.Trace(err) + } + tzName, tzOffset := ddlutil.GetTimeZone(ctx) + job := &model.Job{ + SchemaID: schema.ID, + TableID: t.Meta().ID, + SchemaName: schema.Name.L, + TableName: t.Meta().Name.L, + Type: model.ActionMultiSchemaChange, + BinlogInfo: &model.HistoryInfo{}, + Args: nil, + MultiSchemaInfo: ctx.GetSessionVars().StmtCtx.MultiSchemaInfo, + ReorgMeta: &model.DDLReorgMeta{ + SQLMode: ctx.GetSessionVars().SQLMode, + Warnings: make(map[errors.ErrorID]*terror.Error), + WarningsCount: make(map[errors.ErrorID]int64), + Location: &model.TimeZoneLocation{Name: tzName, Offset: tzOffset}, + }, + } + err = checkMultiSchemaInfo(ctx.GetSessionVars().StmtCtx.MultiSchemaInfo, t) + if err != nil { + return errors.Trace(err) + } + ctx.GetSessionVars().StmtCtx.MultiSchemaInfo = nil + err = d.DoDDLJob(ctx, job) + return d.callHookOnChanged(job, err) +} + +func checkMultiSchemaInfo(info *model.MultiSchemaInfo, t table.Table) error { + err := checkOperateSameColAndIdx(info) + if err != nil { + return err + } + + err = checkVisibleColumnCnt(t, len(info.AddColumns), len(info.DropColumns)) + if err != nil { + return err + } + + return checkAddColumnTooManyColumns(len(t.Cols()) + len(info.AddColumns) - len(info.DropColumns)) +} + +func checkOperateSameColAndIdx(info *model.MultiSchemaInfo) error { + modifyCols := make(map[string]struct{}) + modifyIdx := make(map[string]struct{}) + + checkColumns := func(colNames []model.CIStr, addToModifyCols bool) error { + for _, colName := range colNames { + name := colName.L + if _, ok := modifyCols[name]; ok { + return dbterror.ErrOperateSameColumn.GenWithStackByArgs(name) + } + if addToModifyCols { + modifyCols[name] = struct{}{} + } + } + return nil + } + + checkIndexes := func(idxNames []model.CIStr, addToModifyIdx bool) error { + for _, idxName := range idxNames { + name := idxName.L + if _, ok := modifyIdx[name]; ok { + return dbterror.ErrOperateSameIndex.GenWithStackByArgs(name) + } + if addToModifyIdx { + modifyIdx[name] = struct{}{} + } + } + return nil + } + + if err := checkColumns(info.AddColumns, true); err != nil { + return err + } + if err := checkColumns(info.DropColumns, true); err != nil { + return err + } + if err := checkColumns(info.RelativeColumns, false); err != nil { + return err + } + if err := checkColumns(info.ModifyColumns, true); err != nil { + return err + } + + if err := checkIndexes(info.AddIndexes, true); err != nil { + return err + } + if err := checkIndexes(info.DropIndexes, true); err != nil { + return err + } + return checkIndexes(info.AlterIndexes, true) +} diff --git a/ddl/partition.go b/ddl/partition.go index 613a1dc5bc694..3ab281c7f1afc 100644 --- a/ddl/partition.go +++ b/ddl/partition.go @@ -1657,7 +1657,7 @@ func buildCheckSQLForRangeExprPartition(pi *model.PartitionInfo, index int, sche } func trimQuotation(str string) string { - return strings.Trim(str, "\"") + return strings.Trim(str, "'") } func buildCheckSQLForRangeColumnsPartition(pi *model.PartitionInfo, index int, schemaName, tableName model.CIStr) (string, []interface{}) { diff --git a/ddl/placement/BUILD.bazel b/ddl/placement/BUILD.bazel new file mode 100644 index 0000000000000..f9ece52b485fc --- /dev/null +++ b/ddl/placement/BUILD.bazel @@ -0,0 +1,46 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "placement", + srcs = [ + "bundle.go", + "common.go", + "constraint.go", + "constraints.go", + "errors.go", + "rule.go", + ], + importpath = "github.com/pingcap/tidb/ddl/placement", + visibility = ["//visibility:public"], + deps = [ + "//parser/model", + "//tablecodec", + "//util/codec", + "@com_github_pingcap_failpoint//:failpoint", + "@in_gopkg_yaml_v2//:yaml_v2", + ], +) + +go_test( + name = "placement_test", + srcs = [ + "bundle_test.go", + "common_test.go", + "constraint_test.go", + "constraints_test.go", + "meta_bundle_test.go", + "rule_test.go", + ], + embed = [":placement"], + flaky = True, + deps = [ + "//kv", + "//meta", + "//parser/model", + "//store/mockstore", + "//tablecodec", + "//util/codec", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_stretchr_testify//require", + ], +) diff --git a/ddl/placement_policy_test.go b/ddl/placement_policy_test.go index 9df630774dc8b..b4b71e76cd422 100644 --- a/ddl/placement_policy_test.go +++ b/ddl/placement_policy_test.go @@ -940,9 +940,7 @@ func TestPolicyCacheAndPolicyDependency(t *testing.T) { require.Equal(t, true, in()) // Test drop policy can't succeed cause there are still some table depend on them. - _, err := tk.Exec("drop placement policy x") - require.Error(t, err) - require.Equal(t, "[ddl:8241]Placement policy 'x' is still in use", err.Error()) + tk.MustGetErrMsg("drop placement policy x", "[ddl:8241]Placement policy 'x' is still in use") // Drop depended table t firstly. tk.MustExec("drop table if exists t") @@ -951,9 +949,7 @@ func TestPolicyCacheAndPolicyDependency(t *testing.T) { require.Equal(t, 1, len(dependencies)) require.Equal(t, tbl2.Meta().ID, dependencies[0]) - _, err = tk.Exec("drop placement policy x") - require.Error(t, err) - require.Equal(t, "[ddl:8241]Placement policy 'x' is still in use", err.Error()) + tk.MustGetErrMsg("drop placement policy x", "[ddl:8241]Placement policy 'x' is still in use") // Drop depended table t2 secondly. tk.MustExec("drop table if exists t2") diff --git a/ddl/placement_sql_test.go b/ddl/placement_sql_test.go index 42ef1e29986e8..4d560831d4044 100644 --- a/ddl/placement_sql_test.go +++ b/ddl/placement_sql_test.go @@ -136,9 +136,9 @@ PARTITION BY RANGE (c) ( tk.MustExec("set @@autocommit = 0") tk.MustExec("begin") tk.MustExec(testcase.sql) - _, err = tk.Exec("commit") + err = tk.ExecToErr("commit") } else { - _, err = tk.Exec(testcase.sql) + err = tk.ExecToErr(testcase.sql) } if testcase.err == nil { require.NoError(t, err) diff --git a/ddl/reorg.go b/ddl/reorg.go index 1ff7af457cedb..b1437972976ed 100644 --- a/ddl/reorg.go +++ b/ddl/reorg.go @@ -62,18 +62,16 @@ type reorgCtx struct { // 0: job is not canceled. // 1: job is canceled. notifyCancelReorgJob int32 - // doneHandle is used to simulate the handle that has been processed. - + // doneKey is used to record the key that has been processed. doneKey atomic.Value // nullable kv.Key // element is used to record the current element in the reorg process, it can be // accessed by reorg-worker and daemon-worker concurrently. element atomic.Value - // warnings is used to store the warnings when doing the reorg job under - // a certain SQL Mode. mu struct { sync.Mutex + // warnings are used to store the warnings when doing the reorg job under certain SQL modes. warnings map[errors.ErrorID]*terror.Error warningsCount map[errors.ErrorID]int64 } @@ -241,7 +239,6 @@ func (w *worker) runReorgJob(rh *reorgHandler, reorgInfo *reorgInfo, tblInfo *mo } rowCount, _, _ := rc.getRowCountAndKey() logutil.BgLogger().Info("[ddl] run reorg job done", zap.Int64("handled rows", rowCount)) - // Update a job's RowCount. job.SetRowCount(rowCount) // Update a job's warnings. @@ -356,7 +353,7 @@ func getTableTotalCount(w *worker, tblInfo *model.TableInfo) int64 { func (dc *ddlCtx) isReorgRunnable(job *model.Job) error { if isChanClosed(dc.ctx.Done()) { - // Worker is closed. So it can't do the reorganizational job. + // Worker is closed. So it can't do the reorganization. return dbterror.ErrInvalidWorker.GenWithStack("worker is closed") } diff --git a/ddl/reorg_test.go b/ddl/reorg_test.go index b3e373cb75fd7..e365a0e2d1a7e 100644 --- a/ddl/reorg_test.go +++ b/ddl/reorg_test.go @@ -50,7 +50,7 @@ func TestReorgOwner(t *testing.T) { err := d2.Start(pools.NewResourcePool(func() (pools.Resource, error) { return testkit.NewTestKit(t, store).Session(), nil - }, 2, 2, 5)) + }, 20, 20, 5)) require.NoError(t, err) defer func() { diff --git a/ddl/schema_test.go b/ddl/schema_test.go index befee5bdeb44b..58e7996401f0b 100644 --- a/ddl/schema_test.go +++ b/ddl/schema_test.go @@ -312,7 +312,7 @@ func TestSchemaWaitJob(t *testing.T) { genIDs, err := genGlobalIDs(store, 1) require.NoError(t, err) schemaID := genIDs[0] - doDDLJobErr(t, schemaID, 0, model.ActionCreateSchema, []interface{}{dbInfo}, se, d2, store) + doDDLJobErr(t, schemaID, 0, model.ActionCreateSchema, []interface{}{dbInfo}, testkit.NewTestKit(t, store).Session(), d2, store) } func doDDLJobErr(t *testing.T, schemaID, tableID int64, tp model.ActionType, args []interface{}, ctx sessionctx.Context, d ddl.DDL, store kv.Storage) *model.Job { @@ -324,6 +324,7 @@ func doDDLJobErr(t *testing.T, schemaID, tableID int64, tp model.ActionType, arg BinlogInfo: &model.HistoryInfo{}, } // TODO: check error detail + ctx.SetValue(sessionctx.QueryString, "skip") require.Error(t, d.DoDDLJob(ctx, job)) testCheckJobCancelled(t, store, job, nil) diff --git a/ddl/sequence_test.go b/ddl/sequence_test.go index 2ec8a77bf5270..743544cc25704 100644 --- a/ddl/sequence_test.go +++ b/ddl/sequence_test.go @@ -131,31 +131,30 @@ func TestDropSequence(t *testing.T) { // Test the specified object is not sequence. tk.MustExec("create table seq3 (a int)") - _, err = tk.Exec("drop sequence seq3") + err = tk.ExecToErr("drop sequence seq3") require.Error(t, err) require.True(t, terror.ErrorEqual(err, dbterror.ErrWrongObject)) // Test schema is not exist. - _, err = tk.Exec("drop sequence unknown.seq") + err = tk.ExecToErr("drop sequence unknown.seq") require.Error(t, err) require.EqualError(t, err, "[schema:4139]Unknown SEQUENCE: 'unknown.seq'") // Test drop sequence successfully. tk.MustExec("create sequence seq") - _, err = tk.Exec("drop sequence seq") - require.NoError(t, err) - _, err = tk.Exec("drop sequence seq") + tk.MustExec("drop sequence seq") + err = tk.ExecToErr("drop sequence seq") require.Error(t, err) require.EqualError(t, err, "[schema:4139]Unknown SEQUENCE: 'test.seq'") // Test drop table when the object is a sequence. tk.MustExec("create sequence seq") - _, err = tk.Exec("drop table seq") + err = tk.ExecToErr("drop table seq") require.Error(t, err) require.EqualError(t, err, "[schema:1051]Unknown table 'test.seq'") // Test drop view when the object is a sequence. - _, err = tk.Exec("drop view seq") + err = tk.ExecToErr("drop view seq") require.Error(t, err) require.True(t, terror.ErrorEqual(err, dbterror.ErrWrongObject)) tk.MustExec("drop sequence seq") @@ -661,24 +660,24 @@ func TestSequenceFunction(t *testing.T) { tk.MustExec("drop table if exists seq1") tk.MustExec("drop view if exists seq1") tk.MustExec("create table seq(a int)") - _, err = tk.Exec("select nextval(seq)") + err = tk.ExecToErr("select nextval(seq)") require.Error(t, err) require.EqualError(t, err, "[schema:1347]'test.seq' is not SEQUENCE") - _, err = tk.Exec("select lastval(seq)") + err = tk.ExecToErr("select lastval(seq)") require.Error(t, err) require.EqualError(t, err, "[schema:1347]'test.seq' is not SEQUENCE") - _, err = tk.Exec("select setval(seq, 10)") + err = tk.ExecToErr("select setval(seq, 10)") require.Error(t, err) require.EqualError(t, err, "[schema:1347]'test.seq' is not SEQUENCE") tk.MustExec("create view seq1 as select * from seq") - _, err = tk.Exec("select nextval(seq1)") + err = tk.ExecToErr("select nextval(seq1)") require.Error(t, err) require.EqualError(t, err, "[schema:1347]'test.seq1' is not SEQUENCE") - _, err = tk.Exec("select lastval(seq1)") + err = tk.ExecToErr("select lastval(seq1)") require.Error(t, err) require.EqualError(t, err, "[schema:1347]'test.seq1' is not SEQUENCE") - _, err = tk.Exec("select setval(seq1, 10)") + err = tk.ExecToErr("select setval(seq1, 10)") require.Error(t, err) require.EqualError(t, err, "[schema:1347]'test.seq1' is not SEQUENCE") tk.MustExec("drop sequence if exists seq") @@ -728,10 +727,10 @@ func TestSequenceFunction(t *testing.T) { tk.MustExec("create table t(a int)") tk.MustExec("insert into t values(1),(2)") tk.MustQuery("select nextval(seq), t.a from t").Check(testkit.Rows("1 1", "2 2")) - _, err = tk.Exec("select nextval(t), t.a from t") + err = tk.ExecToErr("select nextval(t), t.a from t") require.Error(t, err) require.EqualError(t, err, "[schema:1347]'test.t' is not SEQUENCE") - _, err = tk.Exec("select nextval(seq), nextval(t), t.a from t") + err = tk.ExecToErr("select nextval(seq), nextval(t), t.a from t") require.Error(t, err) require.EqualError(t, err, "[schema:1347]'test.t' is not SEQUENCE") tk.MustQuery("select nextval(seq)").Check(testkit.Rows("3")) @@ -1019,11 +1018,11 @@ func TestSequenceCacheShouldNotBeNegative(t *testing.T) { tk.MustExec("use test") tk.MustExec("drop sequence if exists seq") - _, err := tk.Exec("create sequence seq cache -1") + err := tk.ExecToErr("create sequence seq cache -1") require.Error(t, err) require.EqualError(t, err, "[ddl:4136]Sequence 'test.seq' values are conflicting") - _, err = tk.Exec("create sequence seq cache 0") + err = tk.ExecToErr("create sequence seq cache 0") require.Error(t, err) require.EqualError(t, err, "[ddl:4136]Sequence 'test.seq' values are conflicting") @@ -1033,7 +1032,7 @@ func TestSequenceCacheShouldNotBeNegative(t *testing.T) { // 3: increment = -9223372036854775807 by user // `seqInfo.CacheValue < (math.MaxInt64-absIncrement)/absIncrement` will // ensure there is enough value for one cache allocation at least. - _, err = tk.Exec("create sequence seq INCREMENT -9223372036854775807 cache 1") + err = tk.ExecToErr("create sequence seq INCREMENT -9223372036854775807 cache 1") require.Error(t, err) require.EqualError(t, err, "[ddl:4136]Sequence 'test.seq' values are conflicting") @@ -1124,7 +1123,7 @@ func TestAlterSequencePrivilege(t *testing.T) { tk.MustExec("grant select on test.* to 'myuser'@'localhost'") tk1.MustExec("use test") - _, err = tk1.Exec("alter sequence my_seq increment = 2") + err = tk1.ExecToErr("alter sequence my_seq increment = 2") require.Error(t, err) require.EqualError(t, err, "[planner:1142]ALTER command denied to user 'myuser'@'localhost' for table 'my_seq'") tk.MustExec("drop sequence if exists my_seq") diff --git a/ddl/table.go b/ddl/table.go index a7d7a646e6935..9ccd9549ebeca 100644 --- a/ddl/table.go +++ b/ddl/table.go @@ -455,7 +455,7 @@ func (w *worker) onRecoverTable(d *ddlCtx, t *meta.Meta, job *model.Job) (ver in failpoint.Inject("mockRecoverTableCommitErr", func(val failpoint.Value) { if val.(bool) && atomic.CompareAndSwapUint32(&mockRecoverTableCommitErrOnce, 0, 1) { - err = failpoint.Enable(`tikvclient/mockCommitErrorOpt`, "return(true)") + _ = failpoint.Enable(`tikvclient/mockCommitErrorOpt`, "return(true)") } }) @@ -857,12 +857,14 @@ func (w *worker) onShardRowID(d *ddlCtx, t *meta.Meta, job *model.Job) (ver int6 } func verifyNoOverflowShardBits(s *sessionPool, tbl table.Table, shardRowIDBits uint64) error { + if shardRowIDBits == 0 { + return nil + } ctx, err := s.get() if err != nil { return errors.Trace(err) } defer s.put(ctx) - // Check next global max auto ID first. autoIncID, err := tbl.Allocators(ctx).Get(autoid.RowIDAllocType).NextGlobalAutoID() if err != nil { diff --git a/ddl/table_modify_test.go b/ddl/table_modify_test.go index 217ca34e3e1fd..038fcc878d941 100644 --- a/ddl/table_modify_test.go +++ b/ddl/table_modify_test.go @@ -53,7 +53,7 @@ func TestCreateTable(t *testing.T) { require.Equal(t, "a", col.Name.L) d, ok := col.DefaultValue.(string) require.True(t, ok) - require.Equal(t, "2.0", d) + require.Equal(t, "2", d) tk.MustExec("drop table t") tk.MustGetErrCode("CREATE TABLE `t` (`a` int) DEFAULT CHARSET=abcdefg", errno.ErrUnknownCharacterSet) diff --git a/ddl/testutil/BUILD.bazel b/ddl/testutil/BUILD.bazel new file mode 100644 index 0000000000000..3562ca3b34571 --- /dev/null +++ b/ddl/testutil/BUILD.bazel @@ -0,0 +1,19 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "testutil", + srcs = ["testutil.go"], + importpath = "github.com/pingcap/tidb/ddl/testutil", + visibility = ["//visibility:public"], + deps = [ + "//domain", + "//kv", + "//parser/model", + "//session", + "//sessiontxn", + "//table", + "//table/tables", + "//types", + "@com_github_pingcap_errors//:errors", + ], +) diff --git a/ddl/util/BUILD.bazel b/ddl/util/BUILD.bazel new file mode 100644 index 0000000000000..0047d55be5430 --- /dev/null +++ b/ddl/util/BUILD.bazel @@ -0,0 +1,60 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "util", + srcs = [ + "dead_table_lock_checker.go", + "event.go", + "syncer.go", + "util.go", + ], + importpath = "github.com/pingcap/tidb/ddl/util", + visibility = ["//visibility:public"], + deps = [ + "//kv", + "//metrics", + "//parser/model", + "//parser/terror", + "//sessionctx", + "//sessionctx/variable", + "//util", + "//util/chunk", + "//util/logutil", + "//util/sqlexec", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_tikv_client_go_v2//tikvrpc", + "@io_etcd_go_etcd_api_v3//v3rpc/rpctypes", + "@io_etcd_go_etcd_client_v3//:client", + "@io_etcd_go_etcd_client_v3//concurrency", + "@org_uber_go_atomic//:atomic", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "util_test", + srcs = [ + "main_test.go", + "syncer_test.go", + ], + embed = [":util"], + flaky = True, + deps = [ + "//ddl", + "//infoschema", + "//parser/terror", + "//store/mockstore", + "//testkit/testsetup", + "//util", + "@com_github_pingcap_errors//:errors", + "@com_github_stretchr_testify//require", + "@io_etcd_go_etcd_api_v3//mvccpb", + "@io_etcd_go_etcd_client_v3//:client", + "@io_etcd_go_etcd_server_v3//etcdserver", + "@io_etcd_go_etcd_tests_v3//integration", + "@org_golang_google_grpc//codes", + "@org_golang_google_grpc//status", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/distsql/BUILD.bazel b/distsql/BUILD.bazel new file mode 100644 index 0000000000000..9f20df059fe06 --- /dev/null +++ b/distsql/BUILD.bazel @@ -0,0 +1,94 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "distsql", + srcs = [ + "distsql.go", + "request_builder.go", + "select_result.go", + ], + importpath = "github.com/pingcap/tidb/distsql", + visibility = ["//visibility:public"], + deps = [ + "//config", + "//ddl/placement", + "//errno", + "//infoschema", + "//kv", + "//metrics", + "//parser/mysql", + "//parser/terror", + "//sessionctx", + "//sessionctx/stmtctx", + "//sessionctx/variable", + "//statistics", + "//store/copr", + "//tablecodec", + "//telemetry", + "//types", + "//util/chunk", + "//util/codec", + "//util/collate", + "//util/dbterror", + "//util/execdetails", + "//util/logutil", + "//util/memory", + "//util/ranger", + "//util/trxevents", + "@com_github_opentracing_opentracing_go//:opentracing-go", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_pingcap_kvproto//pkg/metapb", + "@com_github_pingcap_tipb//go-tipb", + "@com_github_tikv_client_go_v2//metrics", + "@com_github_tikv_client_go_v2//tikv", + "@com_github_tikv_client_go_v2//tikvrpc", + "@com_github_tikv_client_go_v2//tikvrpc/interceptor", + "@org_golang_google_grpc//metadata", + "@org_golang_x_exp//maps", + "@org_golang_x_exp//slices", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "distsql_test", + srcs = [ + "bench_test.go", + "distsql_test.go", + "main_test.go", + "request_builder_test.go", + "select_result_test.go", + ], + embed = [":distsql"], + flaky = True, + deps = [ + "//kv", + "//parser/charset", + "//parser/mysql", + "//sessionctx", + "//sessionctx/stmtctx", + "//sessionctx/variable", + "//statistics", + "//store/copr", + "//tablecodec", + "//testkit/testsetup", + "//types", + "//util/benchdaily", + "//util/chunk", + "//util/codec", + "//util/collate", + "//util/disk", + "//util/execdetails", + "//util/mathutil", + "//util/memory", + "//util/mock", + "//util/ranger", + "@com_github_pingcap_tipb//go-tipb", + "@com_github_stretchr_testify//require", + "@com_github_tikv_client_go_v2//kv", + "@com_github_tikv_client_go_v2//tikv", + "@com_github_tikv_client_go_v2//tikvrpc", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/distsql/distsql.go b/distsql/distsql.go index 3219098b646e9..6a502b58478b6 100644 --- a/distsql/distsql.go +++ b/distsql/distsql.go @@ -46,10 +46,6 @@ func DispatchMPPTasks(ctx context.Context, sctx sessionctx.Context, tasks []*kv. if resp == nil { return nil, errors.New("client returns nil response") } - encodeType := tipb.EncodeType_TypeDefault - if canUseChunkRPC(sctx) { - encodeType = tipb.EncodeType_TypeChunk - } // TODO: Add metric label and set open tracing. return &selectResult{ label: "mpp", @@ -58,7 +54,6 @@ func DispatchMPPTasks(ctx context.Context, sctx sessionctx.Context, tasks []*kv. fieldTypes: fieldTypes, ctx: sctx, feedback: statistics.NewQueryFeedback(0, nil, 0, false), - encodeType: encodeType, copPlanIDs: planIDs, rootPlanID: rootID, storeType: kv.TiFlash, @@ -80,7 +75,6 @@ func Select(ctx context.Context, sctx sessionctx.Context, kvReq *kv.Request, fie hook.(func(*kv.Request))(kvReq) } - kvReq.Streaming = false enabledRateLimitAction := sctx.GetSessionVars().EnabledRateLimitAction originalSQL := sctx.GetSessionVars().StmtCtx.OriginalSQL eventCb := func(event trxevents.TransactionEvent) { @@ -116,24 +110,8 @@ func Select(ctx context.Context, sctx sessionctx.Context, kvReq *kv.Request, fie } // kvReq.MemTracker is used to trace and control memory usage in DistSQL layer; - // for streamResult, since it is a pipeline which has no buffer, it's not necessary to trace it; // for selectResult, we just use the kvReq.MemTracker prepared for co-processor // instead of creating a new one for simplification. - if kvReq.Streaming { - return &streamResult{ - label: "dag-stream", - sqlType: label, - resp: resp, - rowLen: len(fieldTypes), - fieldTypes: fieldTypes, - ctx: sctx, - feedback: fb, - }, nil - } - encodetype := tipb.EncodeType_TypeDefault - if canUseChunkRPC(sctx) { - encodetype = tipb.EncodeType_TypeChunk - } return &selectResult{ label: "dag", resp: resp, @@ -143,7 +121,6 @@ func Select(ctx context.Context, sctx sessionctx.Context, kvReq *kv.Request, fie feedback: fb, sqlType: label, memTracker: kvReq.MemTracker, - encodeType: encodetype, storeType: kvReq.StoreType, paging: kvReq.Paging, }, nil @@ -186,12 +163,11 @@ func Analyze(ctx context.Context, client kv.Client, kvReq *kv.Request, vars inte label = metrics.LblInternal } result := &selectResult{ - label: "analyze", - resp: resp, - feedback: statistics.NewQueryFeedback(0, nil, 0, false), - sqlType: label, - encodeType: tipb.EncodeType_TypeDefault, - storeType: kvReq.StoreType, + label: "analyze", + resp: resp, + feedback: statistics.NewQueryFeedback(0, nil, 0, false), + sqlType: label, + storeType: kvReq.StoreType, } return result, nil } @@ -205,12 +181,11 @@ func Checksum(ctx context.Context, client kv.Client, kvReq *kv.Request, vars int return nil, errors.New("client returns nil response") } result := &selectResult{ - label: "checksum", - resp: resp, - feedback: statistics.NewQueryFeedback(0, nil, 0, false), - sqlType: metrics.LblGeneral, - encodeType: tipb.EncodeType_TypeDefault, - storeType: kvReq.StoreType, + label: "checksum", + resp: resp, + feedback: statistics.NewQueryFeedback(0, nil, 0, false), + sqlType: metrics.LblGeneral, + storeType: kvReq.StoreType, } return result, nil } diff --git a/distsql/request_builder.go b/distsql/request_builder.go index d7a7f2a267492..c4840ca8741a3 100644 --- a/distsql/request_builder.go +++ b/distsql/request_builder.go @@ -270,12 +270,6 @@ func (builder *RequestBuilder) SetFromSessionVars(sv *variable.SessionVars) *Req return builder } -// SetStreaming sets "Streaming" flag for "kv.Request". -func (builder *RequestBuilder) SetStreaming(streaming bool) *RequestBuilder { - builder.Request.Streaming = streaming - return builder -} - // SetPaging sets "Paging" flag for "kv.Request". func (builder *RequestBuilder) SetPaging(paging bool) *RequestBuilder { builder.Request.Paging = paging diff --git a/distsql/request_builder_test.go b/distsql/request_builder_test.go index 3a2c7e60b200f..8baf74422b8a9 100644 --- a/distsql/request_builder_test.go +++ b/distsql/request_builder_test.go @@ -270,7 +270,6 @@ func TestRequestBuilder1(t *testing.T) { IsolationLevel: 0, Priority: 0, NotFillCache: false, - Streaming: false, ReplicaRead: kv.ReplicaReadLeader, ReadReplicaScope: kv.GlobalReplicaScope, } @@ -352,7 +351,6 @@ func TestRequestBuilder2(t *testing.T) { IsolationLevel: 0, Priority: 0, NotFillCache: false, - Streaming: false, ReplicaRead: kv.ReplicaReadLeader, ReadReplicaScope: kv.GlobalReplicaScope, } @@ -400,7 +398,6 @@ func TestRequestBuilder3(t *testing.T) { IsolationLevel: 0, Priority: 0, NotFillCache: false, - Streaming: false, ReplicaRead: kv.ReplicaReadLeader, ReadReplicaScope: kv.GlobalReplicaScope, } @@ -432,7 +429,6 @@ func TestRequestBuilder4(t *testing.T) { SetDAGRequest(&tipb.DAGRequest{}). SetDesc(false). SetKeepOrder(false). - SetStreaming(true). SetFromSessionVars(variable.NewSessionVars()). Build() require.NoError(t, err) @@ -447,7 +443,6 @@ func TestRequestBuilder4(t *testing.T) { Concurrency: variable.DefDistSQLScanConcurrency, IsolationLevel: 0, Priority: 0, - Streaming: true, NotFillCache: false, ReplicaRead: kv.ReplicaReadLeader, ReadReplicaScope: kv.GlobalReplicaScope, @@ -493,7 +488,6 @@ func TestRequestBuilder5(t *testing.T) { IsolationLevel: kv.RC, Priority: 1, NotFillCache: true, - Streaming: false, ReadReplicaScope: kv.GlobalReplicaScope, } require.Equal(t, expect, actual) @@ -523,7 +517,6 @@ func TestRequestBuilder6(t *testing.T) { IsolationLevel: 0, Priority: 0, NotFillCache: true, - Streaming: false, ReadReplicaScope: kv.GlobalReplicaScope, } require.Equal(t, expect, actual) @@ -559,7 +552,6 @@ func TestRequestBuilder7(t *testing.T) { IsolationLevel: 0, Priority: 0, NotFillCache: false, - Streaming: false, ReplicaRead: replicaRead.replicaReadType, ReadReplicaScope: kv.GlobalReplicaScope, } diff --git a/distsql/select_result.go b/distsql/select_result.go index 8ae67446022e7..2a41e318579b4 100644 --- a/distsql/select_result.go +++ b/distsql/select_result.go @@ -54,13 +54,12 @@ var ( ) var ( - coprCacheHistogramHit = metrics.DistSQLCoprCacheHistogram.WithLabelValues("hit") - coprCacheHistogramMiss = metrics.DistSQLCoprCacheHistogram.WithLabelValues("miss") + coprCacheCounterHit = metrics.DistSQLCoprCacheCounter.WithLabelValues("hit") + coprCacheCounterMiss = metrics.DistSQLCoprCacheCounter.WithLabelValues("miss") ) var ( _ SelectResult = (*selectResult)(nil) - _ SelectResult = (*streamResult)(nil) _ SelectResult = (*serialSelectResults)(nil) ) @@ -140,7 +139,6 @@ type selectResult struct { feedback *statistics.QueryFeedback partialCount int64 // number of partial results. sqlType string - encodeType tipb.EncodeType // copPlanIDs contains all copTasks' planIDs, // which help to collect copTasks' runtime stats. @@ -160,8 +158,8 @@ type selectResult struct { func (r *selectResult) fetchResp(ctx context.Context) error { defer func() { if r.stats != nil { - coprCacheHistogramHit.Observe(float64(r.stats.CoprCacheHitNum)) - coprCacheHistogramMiss.Observe(float64(len(r.stats.copRespTime) - int(r.stats.CoprCacheHitNum))) + coprCacheCounterHit.Add(float64(r.stats.CoprCacheHitNum)) + coprCacheCounterMiss.Add(float64(len(r.stats.copRespTime) - int(r.stats.CoprCacheHitNum))) // Ignore internal sql. if !r.ctx.GetSessionVars().InRestrictedSQL && len(r.stats.copRespTime) > 0 { ratio := float64(r.stats.CoprCacheHitNum) / float64(len(r.stats.copRespTime)) @@ -269,13 +267,14 @@ func (r *selectResult) Next(ctx context.Context, chk *chunk.Chunk) error { } } // TODO(Shenghui Wu): add metrics - switch r.selectResp.GetEncodeType() { + encodeType := r.selectResp.GetEncodeType() + switch encodeType { case tipb.EncodeType_TypeDefault: return r.readFromDefault(ctx, chk) case tipb.EncodeType_TypeChunk: return r.readFromChunk(ctx, chk) } - return errors.Errorf("unsupported encode type:%v", r.encodeType) + return errors.Errorf("unsupported encode type:%v", encodeType) } // NextRaw returns the next raw partial result. diff --git a/distsql/stream.go b/distsql/stream.go deleted file mode 100644 index 526b2693de54d..0000000000000 --- a/distsql/stream.go +++ /dev/null @@ -1,177 +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 distsql - -import ( - "context" - "time" - - "github.com/pingcap/errors" - "github.com/pingcap/tidb/kv" - "github.com/pingcap/tidb/metrics" - "github.com/pingcap/tidb/parser/terror" - "github.com/pingcap/tidb/sessionctx" - "github.com/pingcap/tidb/statistics" - "github.com/pingcap/tidb/types" - "github.com/pingcap/tidb/util/chunk" - "github.com/pingcap/tidb/util/codec" - "github.com/pingcap/tidb/util/dbterror" - "github.com/pingcap/tipb/go-tipb" -) - -// streamResult implements the SelectResult interface. -type streamResult struct { - label string - sqlType string - - resp kv.Response - rowLen int - fieldTypes []*types.FieldType - ctx sessionctx.Context - - // NOTE: curr == nil means stream finish, while len(curr.RowsData) == 0 doesn't. - curr *tipb.Chunk - partialCount int64 - feedback *statistics.QueryFeedback - - fetchDuration time.Duration - durationReported bool -} - -func (r *streamResult) Next(ctx context.Context, chk *chunk.Chunk) error { - chk.Reset() - for !chk.IsFull() { - err := r.readDataIfNecessary(ctx) - if err != nil { - return err - } - if r.curr == nil { - return nil - } - - err = r.flushToChunk(chk) - if err != nil { - return err - } - } - return nil -} - -// readDataFromResponse read the data to result. Returns true means the resp is finished. -func (r *streamResult) readDataFromResponse(ctx context.Context, resp kv.Response, result *tipb.Chunk) (bool, error) { - startTime := time.Now() - resultSubset, err := resp.Next(ctx) - duration := time.Since(startTime) - r.fetchDuration += duration - if err != nil { - return false, err - } - if resultSubset == nil { - if !r.durationReported { - // TODO: Add a label to distinguish between success or failure. - // https://github.com/pingcap/tidb/issues/11397 - metrics.DistSQLQueryHistogram.WithLabelValues(r.label, r.sqlType, "streaming").Observe(r.fetchDuration.Seconds()) - r.durationReported = true - } - return true, nil - } - - var stream tipb.StreamResponse - err = stream.Unmarshal(resultSubset.GetData()) - if err != nil { - return false, errors.Trace(err) - } - if stream.Error != nil { - return false, errors.Errorf("stream response error: [%d]%s", stream.Error.Code, stream.Error.Msg) - } - for _, warning := range stream.Warnings { - r.ctx.GetSessionVars().StmtCtx.AppendWarning(dbterror.ClassTiKV.Synthesize(terror.ErrCode(warning.Code), warning.Msg)) - } - - err = result.Unmarshal(stream.Data) - if err != nil { - return false, errors.Trace(err) - } - r.feedback.Update(resultSubset.GetStartKey(), stream.OutputCounts, stream.Ndvs) - r.partialCount++ - - hasStats, ok := resultSubset.(CopRuntimeStats) - if ok { - copStats := hasStats.GetCopRuntimeStats() - if copStats != nil { - copStats.CopTime = duration - r.ctx.GetSessionVars().StmtCtx.MergeExecDetails(&copStats.ExecDetails, nil) - } - } - return false, nil -} - -// readDataIfNecessary ensures there are some data in current chunk. If no more data, r.curr == nil. -func (r *streamResult) readDataIfNecessary(ctx context.Context) error { - if r.curr != nil && len(r.curr.RowsData) > 0 { - return nil - } - - tmp := new(tipb.Chunk) - finish, err := r.readDataFromResponse(ctx, r.resp, tmp) - if err != nil { - return err - } - if finish { - r.curr = nil - return nil - } - r.curr = tmp - return nil -} - -func (r *streamResult) flushToChunk(chk *chunk.Chunk) (err error) { - remainRowsData := r.curr.RowsData - decoder := codec.NewDecoder(chk, r.ctx.GetSessionVars().Location()) - for !chk.IsFull() && len(remainRowsData) > 0 { - for i := 0; i < r.rowLen; i++ { - remainRowsData, err = decoder.DecodeOne(remainRowsData, i, r.fieldTypes[i]) - if err != nil { - return err - } - } - } - r.curr.RowsData = remainRowsData - if len(remainRowsData) == 0 { - r.curr = nil // Current chunk is finished. - } - return nil -} - -func (r *streamResult) NextRaw(ctx context.Context) ([]byte, error) { - r.partialCount++ - r.feedback.Invalidate() - resultSubset, err := r.resp.Next(ctx) - if resultSubset == nil || err != nil { - return nil, err - } - return resultSubset.GetData(), err -} - -func (r *streamResult) Close() error { - if r.feedback.Actual() > 0 { - metrics.DistSQLScanKeysHistogram.Observe(float64(r.feedback.Actual())) - } - metrics.DistSQLPartialCountHistogram.Observe(float64(r.partialCount)) - if r.resp != nil { - return r.resp.Close() - } - return nil -} diff --git a/docs/design/2018-07-01-refactor-aggregate-framework.md b/docs/design/2018-07-01-refactor-aggregate-framework.md index b3dbdef80ae19..cc7bd5f715ca1 100644 --- a/docs/design/2018-07-01-refactor-aggregate-framework.md +++ b/docs/design/2018-07-01-refactor-aggregate-framework.md @@ -46,7 +46,7 @@ Advantages: - That the partial result can be any type also means the aggregate functions can use a map with the specific input type as keys. For example, use `map[types.MyDecimal]` to de-duplicate the input decimal values. In this way, the overhead on the encoding and decoding operations on the old framework can be reduced. - `UpdatePartialResult` is called with a batch of input records. The overhead caused by the per record function call on the framework can be saved. Since all the execution operators are using `Chunk` to store the input rows, in which the data belonging to the same column is stored consecutively in the memory, the aggregate functions should be executed one by one, take full utilization of the CPU caches, reduce the cache misses, and improve the execution performance. - For every state and every kind of input type, a specific aggregate function should be implemented to handle it. This means the CPU branch predictions on the aggregate state and input value types can reduce during the execution of `UpdatePartialResult`, utilize the CPU pipelines, and improve the execution speed. -- `AppendFinalResult2Chunk` directly finalizes the partial result to the chunk, without converting it to `Datum` and then converting the `Datum` back into `Chunk`. This saves a lot of object allocation, reduces the overhead of golang’s gc worker, and avoids the unnecessary value convertings between `Datum` and `Chunk`. +- `AppendFinalResult2Chunk` directly finalizes the partial result to the chunk, without converting it to `Datum` and then converting the `Datum` back into `Chunk`. This saves a lot of object allocation, reduces the overhead of golang’s gc worker, and avoids the unnecessary value conversions between `Datum` and `Chunk`. Disadvantages: - An aggregate function need to be implemented for every possible state and input type. This could introduces a lot of development work. And it takes more coding work to add a new aggregate function. diff --git a/docs/design/2018-10-20-join-reorder-dp-v1.md b/docs/design/2018-10-20-join-reorder-dp-v1.md index 77bea66cc044c..da8c00c834599 100644 --- a/docs/design/2018-10-20-join-reorder-dp-v1.md +++ b/docs/design/2018-10-20-join-reorder-dp-v1.md @@ -62,7 +62,7 @@ Here the set of node is shown as an integer. If the i-th bit of its binary repre ### How other systems solve the same issue? -DP-SUB is the most commonlly used solution in open source databases. +DP-SUB is the most commonly used solution in open source databases. ### What is the disadvantage of this design? diff --git a/docs/design/2019-04-11-indexmerge.md b/docs/design/2019-04-11-indexmerge.md index da6390949880a..8ba243da5e700 100644 --- a/docs/design/2019-04-11-indexmerge.md +++ b/docs/design/2019-04-11-indexmerge.md @@ -206,7 +206,7 @@ GetIndexMergePartialPath(IndexInfos, indexAccessPaths) { // condition : a < 1 or a > 2 or b < 1 or b > 10 // imPaths will be [a<1,a>2,b<1,b>10] and we can merge it and get [a<1 or a >2 , b < 1 or b > 10] // (2)IndexMergePath.tableFilters: -// <1> Remove a condition from PushdownConditions and the rest will be added to tableFitler. +// <1> Remove a condition from PushdownConditions and the rest will be added to tableFilter. // <2> After the merge operation, if any indexPath's tableFilter is not nil, we should add it into tableFilters CreateIndexMergeUnionPath(imPaths,PushdownConditions,cond,IndexInfos) { @@ -227,7 +227,7 @@ GetIndexMergeIntersectionPaths(pushDownConditions, usedConditionsInOr, indexInfo for cond in newConsiderConditions { indexPaths = buildAccessPath([]{cond}, indexInfos) if indexPaths == nil { - tableFiltes = append(tableFilters,cond) + tableFilters = append(tableFilters,cond) continue } indexPath := GetIndexMergePartialPath(indexPaths,indexInfos) @@ -260,7 +260,7 @@ The graph below illustrates an execution of IndexMerge scan. Execution Model -Every index plan in `PhysicalIndexMergeLookUpReader` will start an `IndexWorker` to execute the IndexScan plan and send handles to AndOrWorker. AndOrWorker is responsible for performing set operations (and, or) to getting final handles. Then `AndOrWoker` sends final handles to `TableWokers` to get rows from TiKV. +Every index plan in `PhysicalIndexMergeLookUpReader` will start an `IndexWorker` to execute the IndexScan plan and send handles to AndOrWorker. AndOrWorker is responsible for performing set operations (and, or) to getting final handles. Then `AndOrWoker` sends final handles to `TableWorkers` to get rows from TiKV. Here are some designs for index plans in pipeline mode to be executed without considering the order. diff --git a/docs/design/2019-11-14-tidb-builtin-diagnostics.md b/docs/design/2019-11-14-tidb-builtin-diagnostics.md index d421c625a03b7..c60b95e177162 100644 --- a/docs/design/2019-11-14-tidb-builtin-diagnostics.md +++ b/docs/design/2019-11-14-tidb-builtin-diagnostics.md @@ -190,7 +190,7 @@ In this proposal, we are opt to the second solution. Although it is more difficu 1. Add the `remote-metrics-storage` configuration to the PD and temporarily configure it as the address of the Prometheus Server. PD acts as a proxy, and the request is transferred to Prometheus for execution. The main considerations are as follows: - - PD will have its own implementation of the query interface to realize bootstraping. No other changes needed for TiDB. + - PD will have its own implementation of the query interface to realize bootstrapping. No other changes needed for TiDB. - With bootstrapping realized, users can still use SQL to query monitoring information and diagnostic frameworks without relying on the Prometheus component deployed by TiDB 2. Extract the modules for persisting and querying Prometheus time series data and embed it in PD. @@ -216,7 +216,7 @@ However, because TiKV plan to completely removes the HTTP API in the future, onl ```proto // Diagnostics service for TiDB cluster components. service Diagnostics { - // Searchs log in the target node + // Searches log in the target node rpc search_log(SearchLogRequest) returns (SearchLogResponse) {}; // Retrieves server info in the target node rpc server_info(ServerInfoRequest) returns (ServerInfoResponse) {}; diff --git a/docs/design/2020-01-24-collations.md b/docs/design/2020-01-24-collations.md index 63f850cecc702..a222035745b83 100644 --- a/docs/design/2020-01-24-collations.md +++ b/docs/design/2020-01-24-collations.md @@ -76,7 +76,7 @@ Before diving into the details, we should notice that ALL strings in MySQL(and T + update like/regex/string comparison related functions in `expression` package. + update the comparisons logic in Join/Aggregation executors in `executor` package. + update the codes in `UnionScan`(the internal buffer of transaction). - - SQL Optimizer: the optimizer may need to be alignd with the encoding changes in `planner` package. + - SQL Optimizer: the optimizer may need to be aligned with the encoding changes in `planner` package. - DDL/Schema: check if the new collation is supported according to the versions of tables/columns, the related codes are in `ddl` and `infoschema` package. - Misc + update string comparison related functions in `util` package. @@ -181,7 +181,7 @@ In this proposal, both of the compatibility issues can be solved in the new vers Based on the requirements listed above, the following behaviors are proposed: -1. Only TiDB clusters that initially boostrapped with the new TiDB version are allowed to enable the new collations. For old TiDB clusters, everything remains unchanged after the upgrade. +1. Only TiDB clusters that initially bootstrapped with the new TiDB version are allowed to enable the new collations. For old TiDB clusters, everything remains unchanged after the upgrade. 2. We can also provide a configuration entry for the users to choose between old/new collations when deploying the new clusters. @@ -197,7 +197,7 @@ The main reason to reject those options are: new collations that are not exist i ##### Option 1 -Add a series of new collatins named with the suffix "`_np_bin`"(meaning "NO PADDING BINARY"), for example, `utf8mb4_np_bin`. Such new collations don't exist in MySQL, but they're the "real ones" used by current TiDB. After upgrading to newer TiDB versions, all old collations are shown as "`_np_bin`", MySQL collations behave the same with MySQL. +Add a series of new collations named with the suffix "`_np_bin`"(meaning "NO PADDING BINARY"), for example, `utf8mb4_np_bin`. Such new collations don't exist in MySQL, but they're the "real ones" used by current TiDB. After upgrading to newer TiDB versions, all old collations are shown as "`_np_bin`", MySQL collations behave the same with MySQL. Pros: Requirement 1.a, 2, 3 and 4 are met. @@ -254,8 +254,8 @@ The plan depends on the option chosen in [Compatibility](#compatibility) chapter * For existing TiDB clusters with current binary collations, nothing need to be done if the users are happy with them. * For the potential migrations from MySQL to TiDB: - - If the collations used in MySQL have been implemented by TiDB, users from MySQL do not need to care about the collations when mirgrating to TiDB except Compatibility Option 2, in which the those collations need to be updated to their corresponding names. - - If there are colltions that are not supported by TiDB yet, users may need to change the them to the supported ones and check if no constraint is broken after the change. The check can be done following the approach mentioned in [this article](https://mysqlserverteam.com/mysql-8-0-collations-migrating-from-older-collations). + - If the collations used in MySQL have been implemented by TiDB, users from MySQL do not need to care about the collations when migrating to TiDB except Compatibility Option 2, in which the those collations need to be updated to their corresponding names. + - If there are collations that are not supported by TiDB yet, users may need to change the them to the supported ones and check if no constraint is broken after the change. The check can be done following the approach mentioned in [this article](https://mysqlserverteam.com/mysql-8-0-collations-migrating-from-older-collations). ## Testing Plans diff --git a/docs/design/2020-05-11-heap-profile-record.md b/docs/design/2020-05-11-heap-profile-record.md index dc06b21ee665c..c4a8f9885f141 100644 --- a/docs/design/2020-05-11-heap-profile-record.md +++ b/docs/design/2020-05-11-heap-profile-record.md @@ -24,7 +24,7 @@ And `runtime.MemProfileRate` controls the fraction of memory allocations that ar To verify whether `kvcache.(*SimpleLRUCache).Put` would reflect the real heap usage, I use following test to ensure it: -1. fufill the `SimpleLRUCache` by `set @randomString = ? with 20000 times`. +1. fulfill the `SimpleLRUCache` by `set @randomString = ? with 20000 times`. 2. profile the heap Usage of `github.com/pingcap/tidb/util/kvcache.(*SimpleLRUCache).Put` and the result is 2.55 MB Let's dig into the Put then we can find the where the heap consumed: @@ -60,7 +60,7 @@ ROUTINE ======================== github.com/pingcap/tidb/util/kvcache.(*SimpleLR . . 114: if l.quota == 0 { ``` -We can find that the `hash` (the key of cache) and the `element`(the value of the cache) totolly consume 2.55 MB. +We can find that the `hash` (the key of cache) and the `element`(the value of the cache) totally consume 2.55 MB. 3. we use [sizeof](https://github.com/templarbit/sizeof) (the result is similar, but lower, not exact) to calculate the size of each key and element is 80byte and 40byte. 4. As 2.28 MB (120 byte * 20000) is similar to the 2.55MB, we can ensure that the heap profile would reflect the heap usage of `SimpleLRUCache`. diff --git a/docs/design/2021-03-09-security-enhanced-mode.md b/docs/design/2021-03-09-security-enhanced-mode.md index 8ed0d457efbd3..337164a7bdc9e 100644 --- a/docs/design/2021-03-09-security-enhanced-mode.md +++ b/docs/design/2021-03-09-security-enhanced-mode.md @@ -20,7 +20,7 @@ ## Introduction -This document was created to discuss the design of Security Enhanced Mode. It comes from the DBaaS requirement that `SUPER` users must not be able to perform certain actions that could comprimise the system. +This document was created to discuss the design of Security Enhanced Mode. It comes from the DBaaS requirement that `SUPER` users must not be able to perform certain actions that could compromise the system. ### Terminology diff --git a/docs/design/2021-03-30-small-table-caching.md b/docs/design/2021-03-30-small-table-caching.md new file mode 100644 index 0000000000000..2745b8e1026df --- /dev/null +++ b/docs/design/2021-03-30-small-table-caching.md @@ -0,0 +1,174 @@ +# Proposal: Caching a table in memory + +- Author(@tiancaiamao) +- Discussion PR: https://github.com/pingcap/tidb/pull/23673 +- Tracking Issue: https://github.com/pingcap/tidb/issues/25293 + +## Introduction + +For a small, frequently visited, and rarely changed table, caching the whole table in memory in the TiDB server can improve performance. + +## Motivation or Background + +For tables that are too small, they are located in just one region, that region would become a hotspot, and such hotspots would cause a performance bottleneck. By directly caching the small table data in the TiDB layer, such hotspot issues can be solved. + +We are caching tables for some scenarios already, in a way we're not realized. For example, our handling of global variables. To prevent row-at-a-time loading of each system variable from TiKV, we needed to implement the [sysvar cache](https://github.com/pingcap/tidb/pull/24359). This helps reduce `show variables like ..` latency, but the data set is small and the problem is very generic. It also doesn't help in cases where system variables read from `mysql.tidb` instead, which does not have a cache. The data of privilege related tables are also cached. + +It can also be used to improve the performance of join. The cached table could be used as the inner table, cutting down the network cost of loading data to TiDB. An example is the TPC-C test, there is an ITEM table. It stores the information of all the goods sold by the sales company, including the name and price of the goods. During the execution of the "order creation" transaction, the data in this table is used to determine the price of the order. Such a table is also a typical scenario that can be optimized. + +Last but not least, this feature is a voice from our customers. They meet the hotspot region problem, but they think it's too risky to enable follower read or coprocessor cache which may affect the whole cluster (according to their business model, they provide storage service to their customers, and the cluster is shared, they try to avoid a single change affecting the entire users). + +## Detailed Design + +If the update operation is not supported at all, the use case would be too limited. So even if we trade writing ability for reading performance, we should at least support updating. + +### Key algorithm + +There is a conceptual "read-write" lock to implement the caching operation. + +Before caching the data, the table needs to hold a "read lock", so that the data will not be modified afterward. This "read lock" is a record providing some meta-information. All modifications must check the lock meta-information first. If the record is in the read-locked state, modifications are forbidden. + +The "read" lock needs to maintain a lease for a while, and the lease should be renewed continuously. The underlying data will be safe as long as the read lock lease hold. + +When performing a modification, the meta-information should be checked first. If there is a "read" lock, the "read" lock needs to be upgraded to a "write intend" lock. This step prevents the read lock from renewing the lease. After the lease expires, the meta status is change to "write" lock, write operation can be performed afterward. And after the write operation finishes, the "write" lock should be cleared, so that the subsequent "read" lock can be added and the data can be cached again. + +The "write" lock also needs a TTL(time to live) to handle abnormal situations. For example, if the TiDB server crashes after the write lock succeeds, TTL gives us a hint of how to clean the orphan write lock. + +Put all things together, we have this interface: + +``` +type StateRemote interface { + Load() + LockForRead() + LockForWrite() + RenewLease() + WriteAndUnlock() +} +``` + +### Management of lock meta information + +What’s the granularity of the lock? One option is to implement the meta lock at the key-value level. The advantage is that the granularity is finer and the updating performance is better. If we cache the key-value record, modifying one key would not affect the cache of the other keys. The disadvantage is that this will invade the current transaction layer implementation, and make our transaction more complex. Considering the current implementation of the transaction is very complex already, it is not wise to do so. + +The other option is to implement the meta lock at the table level. Each table corresponds to one meta lock record. As long as any key of the table is modified, the table cache becomes invalid. Assuming that we only deal with small tables, and this table is updated infrequently, this option should be acceptable. + +For updating operation, the `StateRemote` interface needs to be implemented. The following part of this section describes the management of lock meta information, where it should be stored, and how it is used. + +Such a table could be used to store the meta-information: + +``` +CREATE TABLE mysql.table_cache_meta ( + tid int primary key, + lock_type enum('NONE','READ','INTEND','WRITE'), + lease uint64, + oldReadLease uint64, +); +``` + +This table contains the `tid`, `lock_type` and `lease` information. + +- `tid` records the ID of the table being cached +- `lock_type` decides whether the current state is read locked or write locked etc +- `lease` is used for the read locks lease renewal, and also for cleanup the write locks +- `oldReadLease` is necessary when the `lock_type` is 'INTEND', it stores the old read lease + +LockForRead() corresponds to this operation: + +``` +update table_cache_meta set lock ='READ', lease = %? where tid = %? and lock !='WRITE' +``` + +RenewLease() corresponds to this operation: + +``` +update table_cache_meta set lease = %? where tid = %? and lock ='READ' +``` + +LockForWrite() corresponds to this operation: + +``` +update table_cache_meta set lock ='INTEND' and oldLease = %? and lease = %?' where tid = %? +sleep() // wait read lease gone +update table_cache_meta set lock ='WRITE' and lease = %?' where tid = %? +``` + +### Caching and writing process + +The way to store the in-memory cached of the table data is the same with the [temporary table](2021-04-20-temporary-table.md). +In short, the KV data of the table is loaded from TiKV, and is stored in a MemBuffer. To read that data, an extra UnionScan executor is used. + + +A `CachedTable` struct will be introduced. It inherits and overloads the `Table` interface. `loadSchema` will periodically load the table information on schema change. For a cached table, the `CachedTable` will be reconstructed. + +`CachedTable` implements the `Table` interface, and overloads the `AddRecord` method. When `AddRecord` is called, the lock meta information needs to be checked first. This operation needs to acquire the "write" lock, that is to say, make the `lock_type` field of the meta table to 'WRITE'. After confirming that the lease time of the previous 'READ' lock has expired, the operation can be executed. + +The read operation flow diagram: + +![](./imgs/cached-table-read.png) + + +The write operation flow diagram: + +![](./imgs/cached-table-write.png) + + +### How to enable this feature + +The syntax of OceanBase's replicated table is to add the `DUPLICATE_SCOPE` option after the CREATE TABLE statement. + +I propose to use "ALTER TABLE t [CACHE|NOCACHE]" for the syntax. This is a switch that can be turned on or off. A user can decide to use it by themself. The write performance will become very bad after caching. + +"ALTER TABLE t CACHE" is a DDL operation. Assuming that all the TiDB instances know that a table is not cached, there is no correctness problem; Assuming that all tidb instances make a consensus that a table is cached, the correctness is guaranteed by the locking algorithm mentioned before. However, during the DDL operation, if some TiDB instances think that the cache is enabled, while some other instances think that the cache is not enabled, there would be a correctness issue. + +To address that problem, an intermediate `Switching` state is introduced, the schema change process is similar to the LOCK TABLE statement's implementation: + +> Disabled => Switching => Enabled + +- In the Disabled state, all TiDB instances know that there is no cache for the table, it can be read and written normally. +- In the Enabled state, all TiDB instances know that the table is cached, and the "lock" meta information should be checked before reading and writing. +- In the switching state, all read operation goes to the original table; and write operation needs to check the "write lock" first. + +The cluster may have Disabled and Switching, or Switching and Enabled on different TiDB instances at the same time, but Disabled and Enabled will not coexist at the same time. + +### Compatibility + +The entry of the feature is the 'ALTER TABLE' statement. If the user does not explicitly call it, there will be no impact. + +Metadata management will introduce persistent data. The old version TiDB does not access or use the meta-data, so there should not be any problem when upgrading or downgrading. + +It is unsafe to mix the old and new versions of TiDB when using cached tables. Rolling updates are safe, but there is a risk that if an old version of a TiDB server re-joins after a table is in cached 'Enabled' state it could modify the contents in an unsafe manner. Currently _downgrade_ is not technically supported by TiDB, but there is no technical mechanism which prevents an older versioned binary joining a newer versioned cluster. We need to solve this issue to perform meta-data upgrades, but it is currently blocked in the requirements phase, because we have not decided from which versions upgrade/downgrade will be supported. + +## Investigation & Alternatives + +### OceanBase's replicated table + +> "In order to cope with the high and low frequency of application access and the low-frequency access to small tables that can always access the latest data, and at the same time to ensure data consistency, currently we can only choose the solution of strong consistent read access to Leader data. However, due to the high access frequency, Leader is easy to become a performance bottleneck. In order to solve the problem of "small table broadcast" demand scenario, OceanBase 2.x version combines its own architecture to provide a copy table function, copying the copy of the related small table to all the OBServers of the tenant of the table. The table says to replicate the table, these copies are called replicas. The update transaction of the replicated table guarantees that the data is synchronized to all full-function replicas and replicas when committing, ensuring that the update transaction can be read on any OBServer of the tenant after the successful commit of the update transaction. Transaction modified data." + +Refer to https://zhuanlan.zhihu.com/p/78402011 + +The biggest challenge of copying data to multiple machines is that the modification of data must take effect on all machines in real time, otherwise some machines read the new data and the other part reads the old data. This must be a function that does not meet the needs of users. OceanBase uses a special broadcast protocol to ensure the copy consistency of the replicated table. When the replicated table is modified, all the copies will be modified at the same time. Moreover, the modification operation will only take effect when the copies on all machines are modified successfully. + +In a distributed system, another thorny problem will arise again. If a machine fails during the process of modifying the replicated table, and the replica of the replicated table on the failed machine cannot be modified, then the replicated table can no longer be modified? If this problem is not solved, the replication table will drag down the user's operation in the event of a machine failure. Ocean Base uses a lease mechanism to solve this problem. The valid copy of the replicated table on each machine will get a lease. When the replicated table is modified, the modification must be synchronized to all leased replicas. In the event of a machine failure, the lease of the replicated table copy on the failed machine becomes invalid, and the invalidated copy will not be synchronized with new modifications, so subsequent modification operations of the replicated table will not be blocked. The invalid copy will also refuse the read operation to ensure that the old data will not be read. When the invalid copy is restored, the missing data can be chased up, and the lease will be re-granted after it catches up to the latest state." +Reference https://developer.aliyun.com/article/750271 + +They are optimized for join's small table broadcast. The agreement was successfully made from the majority to all copies, and write performance was sacrificed in exchange for read performance and consistency. At the implementation level, if you look at it from another perspective, OB is a table-level synchronization, which is equivalent to adding a learner role to the raft layer as a copy table. + +### Reference Tables of SingleStore (formerly MemSQL) + +> "Reference tables are relatively small tables that do not need to be distributed and are present on every node in the cluster. Reference tables are implemented via primary-secondary replication to every node in the cluster from the master aggregator." + +Reference https://docs.singlestore.com/v7.3/key-concepts-and-features/physical-schema-design/other-schema-concepts/reference-tables/ + +### Collocated tables of YugaByteDB + +They put related tables on the same node, which facilitates operations such as joins to reduce network-level overhead. These tables can be cut to multiple tablets, but Colocated tables are deliberately not cut. It is not a concept of caching, but it is also a scenario where the broadcast of join small tables can be optimized. + +> "The assumptions behind tables that are collocated is that their data need not be automatically shared and distributed across nodes" + +Reference https://docs.yugabyte.com/latest/architecture/docdb-sharding/colocated-tables/ +https://github.com/yugabyte/yugabyte-db/blob/master/architecture/design/ysql-colocated-tables.md + +### Oracle also has a similar feature + +https://logicalread.com/oracle-11g-caching-table-in-memory-mc02/#.YFvijK_7QuU + diff --git a/docs/design/2021-04-26-lock-view.md b/docs/design/2021-04-26-lock-view.md index 3db4cb6dd8666..09b6e8a114854 100644 --- a/docs/design/2021-04-26-lock-view.md +++ b/docs/design/2021-04-26-lock-view.md @@ -220,11 +220,11 @@ Default: 10000 #### TiDB Config File `transaction-summary.transaction-id-digest-min-duration` -Specifies how long a transaction should be executed to make it be recorded in `transaction_id_digest`. +Specifies how long a transaction should be executed to make it be recorded in `transaction_id_digest` and considered when calculating `trx_summary`. Dynamically changeable via HTTP API. -Value: 0 to 60000 +Value: 0 to 2147483647 Unit: ms @@ -232,7 +232,7 @@ Default: 1000 #### TiDB Config File `transaction-summary.transaction-summary-capacity` -Specifies how many transaction summary in `transaction_summary` each TiDB node should keep. +Specifies how many transaction summary in `trx_summary` each TiDB node should keep. Dynamically changeable via HTTP API. diff --git a/docs/design/2021-12-09-TiDB-log-based-incremental-backup-draft-1.md b/docs/design/2021-12-09-TiDB-log-based-incremental-backup.md similarity index 100% rename from docs/design/2021-12-09-TiDB-log-based-incremental-backup-draft-1.md rename to docs/design/2021-12-09-TiDB-log-based-incremental-backup.md diff --git a/docs/design/2022-03-10-backup-with-batch-create-table.md b/docs/design/2022-03-10-backup-with-batch-create-table.md index 7051d5f941554..f7ffdd2dc8ff8 100644 --- a/docs/design/2022-03-10-backup-with-batch-create-table.md +++ b/docs/design/2022-03-10-backup-with-batch-create-table.md @@ -65,7 +65,7 @@ for _, info := range tableInfo { for j := range args { if err = d.createTableWithInfoPost(ctx, args[j], jobs.SchemaID); err != nil { - return errors.Trace(d.callHookOnChanged(err)) + return errors.Trace(d.callHookOnChanged(job, err)) } } ``` @@ -110,4 +110,4 @@ Integration test also covered among CDC, BR, TiDB, binlog, TiFlash etc. - 61259 tables restore takes 4 minute 50 seconds, 200+ tables/per seconds with following configuration: TiDB x 1: 16 CPU, 32 GB PD x 1: 16 CPU, 32 GB -TiKV x 3: 16 CPU, 32 GB \ No newline at end of file +TiKV x 3: 16 CPU, 32 GB diff --git a/docs/design/2022-03-31-concurrent-ddl-framawork.md b/docs/design/2022-03-31-concurrent-ddl-framawork.md new file mode 100644 index 0000000000000..e3001d271cc12 --- /dev/null +++ b/docs/design/2022-03-31-concurrent-ddl-framawork.md @@ -0,0 +1,286 @@ +# TiDB Design Documents + +- Author(s): [Jiwei Xiong](http://github.com/xiongjiwei), [Wenjun Huang](http://github.com/wjhuang2016), [Xia Li](https://github.com/zimulala) +- Tracking Issue: https://github.com/pingcap/tidb/issues/32031 + +## Table of Contents + +* [Introduction](#introduction) +* [Motivation or Background](#motivation-or-background) +* [Current implementation](#current-implementation) +* [Goal](#goal) +* [Not Goal](#not-goal) +* [Idea](#idea) +* [Detailed Design](#detailed-design) +* [Test Design](#test-design) + * [Compatibility Tests](#compatibility-tests) + * [Benchmark Tests](#benchmark-tests) +* [Unresolved Questions](#unresolved-questions) + +## Introduction + +This document describes the design of Concurrent DDL, which makes DDL in different table are executed concurrently and do not block each other. + +## Motivation and Background + +DDL (Data Definition Language) is a data definition language, commonly used to describe and manage database schema objects, including but not limited to tables, indexes, views, constraints, etc., and is one of the most commonly used database languages. The DDL change in TiDB relies on the two cluster-level queues to achieve lock-free management, solving the DDL conflict problem. However, when a large number of DDLs are executed simultaneously, especially when the execution time of DDLs is long, DDL queuing and blocking occurs, which affects the performance of TiDB and degrades the user experience. + +## Current implementation + +In a cluster, TiDB chooses a DDL owner to run the DDL job. There is only one owner at a time, the other TiDBs can still receive the DDLs and keep them in TiKV waiting for the owner to run it. We divide the DDL into two types. `reorg` for DDL job that takes a long time, contains data change, such as `add index`. `general` for short time, only meta data change, such as `create table`, they are stored in two queues and the corresponding DDL worker always fetches the first one and runs it. +It encounters some scenarios where a DDL would be blocked by other unrelated DDLs + +1. Block happens in the same queue. _(reorg job blocks reorg job)_ + +```sql +CREATE INDEX idx on t(a int); -- t is a big table +CREATE INDEX idx on t1(a int); -- t1 is a small table +``` + +The 2nd DDL is blocked by the 1st because they are in the same queue and only the first is able to run. Create index on `t1` have to wait until `t` is done. + +2. Block happens on dependency check. _(reorg job blocks general job)_ + +In current implementation, we have a constraint that can not run two DDLs one the same table at the same time, such as + +```sql +CREATE INDEX idx on t(a int) -- reorg queue +ALTER TABLE t ADD COLUMN b int -- general queue +CREATE TABLE t1(a int) -- general queue +``` + +Because of the constraint, the 2nd DDL will be blocked by the 1st(they all operate the table t), and the 3rd is blocked by 2nd(they all in general queue). Finally, 3rd blocked by 1st, it does not make sence. + +The problems above are more noticeable in a big cluster. Some of them already reported by the users, we have to take it into account. So, I propose refining the DDL framework from queue based to table based, and making some improvements to it. + +## Goal + +- Make DDLs on the different tables not block each other. +> Limited by DDL workers' count, we can still encounter this problem(when all workers are busy) + +## Non-Goal + +- Concurrency on the same table. + +## Idea + +1. The `queue base` DDL framework is not easy to find the proper DDL job, it can only get the first one. +2. It's necessary to replace the queue with other data structures so that we can manipulate DDL job easily. +3. To solve this problem, we design the `table base` DDL framework. It can pick up any ready-to-run DDL job by SQL statement. + +## Detailed Design + +### Table Definition + +Several tables will be provided to maintain the DDL meta in the DDL job's life cycle. + +Table `mysql.tidb_ddl_job` stores all the queueing DDL meta. +``` ++----------------+------+------+----------------------------------+ +| Field | Null | Key | Comment | ++----------------+------+------+----------------------------------+ +| job_id | NO | PRI | DDL job ID | +| reorg | YES | | True if this DDL need reorg | +| schema_id | YES | | The schema ID relate to this DDL | +| table_id | YES | | The table ID relate to this DDL | +| job_meta | YES | | The arguments of this DDL job | +| is_drop_schema | YES | | True if the DDL is a drop schema | ++----------------+------+------+---------+------------------------+ +``` + +Table `mysql.tidb_ddl_reorg` contains the reorg job data. +``` ++---------------+------+------+-----------------------------------------+ +| Field | Null | Key | Comment | ++---------------+------+------+-----------------------------------------+ +| job_id | NO | | DDL Job ID | +| curr_ele_id | YES | | Current processing element ID | +| curr_ele_type | YES | | Current processing element type | +| ele_id | YES | | Element ID for processing | +| start_key | YES | | The start key for the certain element | +| end_key | YES | | The end key for the certain element | +| physical_id | YES | | The physical ID for the certain element | +| reorg_meta | YES | | reserved for add index | ++---------------+------+------+-----------------------------------------+ +``` +> An element is a column or an index that needs to reorg. + +> `ele_id`, `start_key`, `end_key`, `physical_id` are the reorg context of a certain element. + +Table `mysql.tidb_ddl_history` stores the finished DDL job. +``` ++---------------+------+------+-------------------------------+ +| Field | Null | Key | Comment | ++---------------+------+------+-------------------------------+ +| job_id | NO | PRI | DDL job ID | +| job_meta | YES | | The arguments of this DDL job | ++---------------+------+------+-------------------------------+ +``` + +In bootstrap step, TiDB will build these tables meta and put it into tikv directly. For new cluster, TiDB will also build `mysql` schema meta. + +### DDL operations + +Use the following DDL operations to manage the DDL jobs: +```sql +insert into mysql.tidb_ddl_job values (...) -- add ddl jobs +delete from mysql.tidb_ddl_job where job_id = ... -- delete ddl jobs +update mysql.tidb_ddl_job set job_meta = ... where job_id = ... -- update ddl jobs +select * from mysql.tidb_ddl_job -- get ddl jobs +``` + +If a DDL job is done, the worker will delete that job in `tidb_ddl_job` and its related reorg information in `tidb_ddl_reorg`, then insert the job `into tidb_ddl_history`. + +### DDL job manager + +DDL job manager will find the runnable DDL job and dispatch the jobs to DDL workers. +```golang +for { + if !isOwner { + // sleep a while + continue + } + + // if there are job coming + select { + case <-ddlJobCh: + case <-ticker.C: + case <-notifyDDLJobByEtcdCh: + } + + if freeWorkerCount() > 0 { + job = findrunnableJob() + if job != nil { + go runJob(job) + } + } +} +``` + +To prevent all the workers in worker pool occupied by the long run job like `add index`, TiDB will divide the pool into two types: `reorg` worker pool and `general` worker pool, then the DDL job manager will be + +```golang +for { + // ... + if freeGeneralWorkerCount() > 0 { + generalJob = findRunnableGeneralJob() + if generalJob != nil { + go runGeneralJob(generalJob) + } + } + + if freeReorgWorkerCount() > 0 { + reorgJob = findRunnableReorgJob() + if reorgJob != nil { + go runReorgJob(reorgJob) + } + } +} +``` + +The runnable job defines as +1. It is not running. +2. It is with the minimal job id for all queueing jobs that refer to the same table. +3. Its job id is larger than `drop schema` job id, when a `drop schema` job exists in the job queue trying to drop the same schema. +4. When the job is `drop schema`, it is with the minimal job id for all queueing jobs refer to the same schema. + +to get a general job, we can use SQL +```sql +select * from mysql.tidb_ddl_job where not reorg; +``` +and return the first record. + +Now we will describe how to achieve the 4 rules above: + +Rule 1 and Rule 2: maintain a running job set, group by the table id and find the minimum one, and SQL can be written to +```sql +select * from mysql.tidb_ddl_job where job_id in (select min(job_id) from mysql.tidb_ddl_job where not reorg and job_id not in ({running job id}) group by table_id); +``` + +Then, we find some jobs and check Rule 3 and Rule 4: + +Rule 3: check if there is a smaller `drop schema` job id on the same schema. +```sql +select * from mysql.tidb_ddl_job where is_drop_schema and job_id < {job.id} limit 1; +``` +Rule 4: if the job is `drop schema`, check if there is a smaller job id on the same schema. +```sql +select * from mysql.tidb_ddl_job where job_id < {job.id} limit 1; +``` + +If there are records, we can not run the drop schema job. + +The workflow will looks like + +![concurrent-ddl-framework](./imgs/concurrendl-ddl.png) + +compare current implementataion + +![queue-base-ddl-framework](./imgs/queue-ddl.png) + +### Show DDL jobs + +get DDL jobs from the tables: +```sql +select * from mysql.tidb_ddl_job; +select * from mysql.tidb_history_job; +``` + +### Cancel DDL + +find the cancel job and update the DDL meta to `JobStateCancelling` state +```sql +begin; +select job_meta from mysql.tidb_ddl_job where job_id = {job_id}; +-- set the job state to `JobStateCancelling` +update mysql.tidb_ddl_job set job_meta = {job} where job_id = {job.id} +commit; +``` + +### Upgrade compatibility + +Consider the rolling upgrade, the first upgrade tidb instance will hang if there are internal DDLs because the new version TiDB will write DDL job into table, but the old version TiDB DDL owner will not run the job. So the upgrading TiDB should get the DDL owner first: +```golang +//... +if needDoUpgrade { + ddl.requireOwner(); + // Do upgrade ... +} +``` + +In general, there will have no queueing DDL job when upgrading, but if there are some queueing DDL jobs, TiDB should migrate the DDL jobs from queue to table and wait for DDL job manager handle them. + +```golang +//... +if needDoUpgrade { + ddl.requireOwner(); + migrateDDL() // migrate queueing DDL jobs from queue to table, including reorg meta. + // Do upgrade ... +} +``` + +### Compatibility with CDC + +CDC will watch the key range of the ddl job **queue** and sync the finished DDLs to other cluster, after concurrent DDL is implemented, CDC should watch the key range of the `tidb_ddl_job` table and unmarshal the ddl job. +Since we maintain the old ddl framework at the same time, CDC should be able to watch key range of the ddl job queue and `tidb_ddl_job` table. +After several versions, CDC can remove the code of watching the key range of the queue. + + +### How to change the tables(`tidb_ddl_job`, `tidb_ddl_reorg`, `tidb_ddl_history`) meta? + +If a new field is required in `tidb_ddl_job`, we can use a `ALTER TABLE` statement to add the field, the important thing is make this DDL run successfully. +Consider the rolling upgrade progress, only the first instance will run the upgrade SQL, at this time, the DDL owner will be the other TiDB instance, so that the DDL will +be executed successfully by the other old TiDB instance. + +## Test Design + +We will use [schrddl](https://github.com/PingCAP-QE/schrddl) test the concurrent DDL framework. + +`Schrddl` is a fuzz test tool that generate DDL and DML SQLs sends to TiDB. For more information, you can read this document + +### Benchmark Tests + + +## Unresolved Questions + +N/A diff --git a/docs/design/2022-04-15-multi-schema-change.md b/docs/design/2022-04-15-multi-schema-change.md new file mode 100644 index 0000000000000..1ffad0666e307 --- /dev/null +++ b/docs/design/2022-04-15-multi-schema-change.md @@ -0,0 +1,224 @@ +# Proposal: Support Multi-Schema Change + +- Author(s): [tangenta](https://github.com/tangenta) +- Tracking Issue: https://github.com/pingcap/tidb/issues/14766 + +## Abstract + +This proposes an implementation of applying multiple schema changes in one `ALTER TABLE` statement. + +## Background + +Multi-Schema Change is one of MySQL's extended features to the SQL standard. It allows the users to atomically make multiple schema changes in one statement, including column and index `ADD`, `ALTER`, `DROP`, and `CHANGE`, as well as table option changes. For example: + +```sql +CREATE TABLE t (a INT, c INT); +ALTER TABLE t ADD COLUMN b INT, + MODIFY COLUMN c CHAR(5), + ADD INDEX idx(a), + ADD PRIMARY KEY (c), + COMMENT = "comments for t"; +``` + +Currently, TiDB only supports one schema change per SQL statement and limited multi-schema changes for some rare cases. + +When users attempt to migrate data from MySQL-like databases, they may expend additional effort to rewrite a multi-schema change DDL to several single-schema change DDLs. For users who rely on ORM frameworks such as [Flyway](https://flywaydb.org/) to automatically construct SQLs, rewriting SQL could be tedious and the scripts are difficult to maintain. + +Above all, the lack of this capability can be a blocking issue for those who wish to use TiDB. + +### Goal + +- Support MySQL-compatible Multi-Schema Change that used commonly, including `ADD/DROP COLUMN`, `ADD/DROP INDEX`, `MODIFY COLUMN`, `RENAME COLUMN`, etc. + +### Non-Goals + +- Support TiDB-specific Multi-Schema Change like `ADD TIFLASH REPLICA`, `ADD PARTITION`, `ALTER PARTITION`, etc. +- Resolve the 'schema is changed' error when DDL and DML are executed concurrently. +- Be 100% compatible with MySQL. MySQL may reorder the execution of schema changes, which makes the behavior counter-intuitive sometimes. +- Improve the performance of DDL, although it introduces a way to improve the performance of long-running jobs(see 'Future Work' part). + +## Proposal + +### Data Structure + +The implementation is based on the [online DDL architecture](https://github.com/pingcap/tidb/blob/e0c461a84cf4ad55c7b51c3f9db7f7b9ba51bb62/docs/design/2018-10-08-online-DDL.md). Similar to the existing [Job](https://github.com/pingcap/tidb/blob/6bd54bea8a9ec25c8d65fcf1157c5ee7a141ab0b/parser/model/ddl.go/#L262) structure, we introduce a new structure "SubJob": + +- "Job": A job is generally the internal representation of one DDL statement. +- "SubJob": A sub-job is a representation of one DDL schema change. A job may contain zero(when multi-schema change is not applicable) or more sub-jobs. + +```go +// Job represents a DDL action. +type Job struct { + Type ActionType `json:"type"` + State JobState `json:"state"` + // ... + MultiSchemaInfo *MultiSchemaInfo `json:"multi_schema_info"` +} + +// MultiSchemaInfo contains information for multi-schema change. +type MultiSchemaInfo struct { + // ... + SubJobs []SubJob `json:"sub_jobs"` +} + +// SubJob represents one schema change in a multi-schema change DDL. +type SubJob struct { + Type ActionType `json:"type"` + State JobState `json:"state"` + // ... +} +``` + +The field `ActionType` stands for the type of DDL. For example, `ADD COLUMN` is mapped to `ActionAddColumn`; `MODIFY COLUMN` is mapped to `ActionModifyColumn`. + +The Multi-Schema Change DDL jobs have the type `ActionMultiSchemaChange`. In the current worker model, there is a dedicated code path (`onMultiSchemaChange()`) to run these jobs. Only Multi-Schema Change jobs can have sub-jobs. + +For example, the DDL statement + +```SQL +ALTER TABLE t ADD COLUMN b INT, MODIFY COLUMN a CHAR(10); +``` + +can be modeled as a job like + +```go +job := &Job { + Type: ActionMultiSchemaChange, + MultiSchemaInfo: &MultiSchemaInfo { + SubJobs: []*SubJob { + &SubJob { + Type: ActionAddColumn, + Args: ... + }, + &SubJob { + Type: ActionModifyColumn, + Args: ... + }, + } + } +} +``` + +In this way, we pack multiple schema changes into one job. Like any other job, it enqueue the DDL job queue to the persistent storage and waits for an appropriate worker to pick it up and process it. + +### Job/Sub-job Execution + +As shown in the code above, there is a field `State` in both `Job` and `SubJob`. All the possible states and the changes are listed here: + +``` + ┌-->--- Done ->------------------┐ + | | +None -> Running -> Rollingback -> RollbackDone -> Synced + | | + └-->--- Cancelling -> Cancelled -->-┘ +``` + +We can divided these states into four types: + +| States | Normal | Abnormal | +|-----------------|-------------------|-----------------------------| +| **Uncompleted** | `None`, `Running` | `Rollingback`, `Cancelling` | +| **Completed** | `Done` | `RollbackDone`, `Cancelled` | + +Since a `Job` is executed by a DDL worker, the sub-jobs are executed in a single thread. The general principal to select a sub-job is as follows: + +- For the normal state, the first uncompleted sub-job is selected in ascending order, i.e., the sub-job with the smaller order number is executed first. +- For the abnormal state, the first uncompleted sub-job is selected in descending order, i.e., the sub-job with the larger order number is executed first. + +When one of the sub-job becomes abnormal, the parent job and all the other sub-jobs are changed to an abnormal state. + +### Schema Object State Management + +To ensure atomic execution of Multi-Schema Change, we need to carefully manage the states of the changing schema objects. Let's take the above SQL as an example: + +```SQL +ALTER TABLE t ADD COLUMN b INT, MODIFY COLUMN a CHAR(10); +``` + +If the second sub-job `MODIFY COLUMN a CHAR (10)` fails for some reason(e.g., a row has more than ten characters), the first sub-job should be able to roll back its changes (roll back the added column `b`). + +This requirement means that we cannot simply publish the schema object when a sub-job is finished. Instead, it should remain in a state invisible to users, waiting for the other sub-jobs to complete, eventually publishing all at once when it is confirmed that all sub-jobs have succeeded. This method is similar to 2PC: the "commit" cannot be started until the "prewrites" are completed. + +Here is the table of schema states that can occur in different DDLs. Note that the "Revertible States" means that the changes are invisible to the users. + +| DDL (Schema Change) | Revertible States | Non-revertible States | +|-------------------------|--------------------------------------------|---------------------------------------------| +| Add Column | None, Delete-Only, Write-Only, Write-Reorg | Public | +| Add Index | None, Delete-Only, Write-Only, Write-Reorg | Public | +| Drop Column | Public | Write-Only, Delete-Only, Delete-Reorg, None | +| Drop Index | Public | Write-Only, Delete-Only, Delete-Reorg, None | +| Non-reorg Modify Column | Public (before meta change) | Public (after meta change) | +| Reorg Modify Column | None, Delete-Only, Write-Only, Write-Reorg | Public | + +To achieve this behavior, we introduce a flag named "non-revertible" in the sub-job. This flag is set when a schema object has reached the last revertible state. A sub-job with this flag is considered temporary completed, so that the worker can select the next sub-job. When all sub-jobs are non-revertible, all associated schema objects change to the next state in one transaction. After that, the sub-jobs are executed serially to do the rest. + +On the other hand, if there is an error returned by any sub-job before all of them become non-revertible, the entire job is placed in to a `Rollingback` state. For the executed sub-jobs, we set them to `Cancelling`; for the unexecuted sub-jobs, we set them to `Cancelled`. + +Finally, we consider the extreme case: an error occurs while all the sub-jobs are non-revertible. There are two kinds of errors in general, the logical error(such as the violation of unique constraint, out-of-range data) and the physical error(such as unavailablity of the network, unusability of the storage). In this situation, the error is guaranteed to be a physical one: we tend to assume that it can be resolved in a trivial way, e.g., by retrying. This behavior is consistent with the current DDL implementation. Take `DROP COLUMN` as an example, once the column enters the "Write-Only" state, there is no way to abort this job. + +## Compatibility + +### Upgrade Compatibility + +When a TiDB cluster performs a rolling upgrade, there are 2 cases: + +1. DDL owner is the new version of TiDB. When users execute a Multi-Schema Change statement on an old version of TiDB, they receive an "unsupported multi-schema change" error message. +2. DDL owner is the old version of TiDB. When users execute a Multi-Schema Change statement on a new version of TiDB, they receive the "invalid ddl job type" error message. + +In both cases, the Multi-Schema Change statement cannot be executed. Therefore, users should avoid executing Multi-Schema Change during a rolling upgrade. + +### MySQL Compatibility + +MySQL may reorder some schema changes: + +```SQL +CREATE TABLE t (b INT, a INT, INDEX i(b)); +ALTER TABLE t DROP COLUMN b, RENAME COLUMN a TO b, ADD INDEX i(b), DROP INDEX i; -- success! + +SHOW CREATE TABLE t; +``` + +```console ++-------+-------------------------------------------------------------------------------------------------------------------------------+ +| Table | Create Table | ++-------+-------------------------------------------------------------------------------------------------------------------------------+ +| t | CREATE TABLE `t` ( + `b` int DEFAULT NULL, + KEY `i` (`b`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci | ++-------+-------------------------------------------------------------------------------------------------------------------------------+ +``` + +MySQL's execution order is as follows: + +1. `DROP INDEX i` +2. `DROP COLUMN b` +3. `RENAME a TO b` +4. `ADD INDEX i(b)` + +Since this behavior is a bit counter-intuitive, we decided not to be fully compatible with MySQL. + +```SQL +ALTER TABLE t DROP COLUMN b, RENAME COLUMN a TO b, ADD INDEX i(b), DROP INDEX i; +ERROR 1060 (42S21): Duplicate column name 'b' +``` + +TiDB validates the schema changes against a snapshot schema structure retrieved before the execution, regardless of the previous changes in the same DDL statement. This may affect some common use cases. For example, `ALTER TABLE t ADD COLUMN a, ADD INDEX i1(a);` is not supported. However, it is not difficult to support such statements: removing the specific validation is enough. + +## Future Work + +In the future, this implementation can be utilized to develop other features or achieve some optimizations: + +- The table-level data reorganization like `ALTER TABLE CONVERT TO CHARSET` can be implemented by splitting a job into multiple sub-jobs. + +- In the scenario of adding multiple indexes, we can improve the performance by reducing the read cost: merge multiple "ADD INDEX" sub-jobs into one sub-job, and read the data once instead of multiple times. + +Furthermore, to help users understand how multi-schema change works, it is a good choice to support "EXPLAIN DDL", which can display some useful information like execution order, sub-jobs, and others. + +## Alternative Proposals + +- The 'job group' way. Unlike the 'SubJob', we can use a job group to represent multiple schema changes. However, this exposes the internal details of the job groups to the DDL job queue, making it more difficult to maintain. + +- The existing way, which is a case-by-case implementation (for example, [#15540](https://github.com/pingcap/tidb/pull/15540)). Although some cases can be supported, it is not extensible. + +- Another solution is to abandon atomization and use multiple DDL jobs to accomplish the task. This is much less complex and requires little effort. However, it can lead to confusion in the visible intermediate state. diff --git a/docs/design/README.md b/docs/design/README.md index 34fe07a336c6c..4a1be6ae690f0 100644 --- a/docs/design/README.md +++ b/docs/design/README.md @@ -16,7 +16,7 @@ A hastily-proposed design document can hurt its chances of acceptance. Low-quali Although there is no single way to prepare for submitting a design document, it is generally a good idea to pursue feedback from other project developers beforehand, to ascertain that the design document may be desirable; having a consistent impact on the project requires concerted effort toward consensus-building. -The most common preparations for writing and submitting an design document for now is [creating a disucss issue](https://github.com/pingcap/tidb/issues/new/choose), which is going to be converted into a tracking issue of the design implementation. +The most common preparations for writing and submitting a design document for now is [creating an issue for discussion](https://github.com/pingcap/tidb/issues/new/choose), which is going to be converted into a tracking issue of the design implementation. ## What is the process? diff --git a/docs/design/imgs/cached-table-read.png b/docs/design/imgs/cached-table-read.png new file mode 100644 index 0000000000000..d78309d71510d Binary files /dev/null and b/docs/design/imgs/cached-table-read.png differ diff --git a/docs/design/imgs/cached-table-write.png b/docs/design/imgs/cached-table-write.png new file mode 100644 index 0000000000000..2df7445042135 Binary files /dev/null and b/docs/design/imgs/cached-table-write.png differ diff --git a/docs/design/imgs/concurrendl-ddl.png b/docs/design/imgs/concurrendl-ddl.png new file mode 100644 index 0000000000000..408950dacdcf5 Binary files /dev/null and b/docs/design/imgs/concurrendl-ddl.png differ diff --git a/docs/design/imgs/queue-ddl.png b/docs/design/imgs/queue-ddl.png new file mode 100644 index 0000000000000..d182fb9da7213 Binary files /dev/null and b/docs/design/imgs/queue-ddl.png differ diff --git a/docs/tidb_http_api.md b/docs/tidb_http_api.md index c9d63f5ea4e6b..e820b23324fc2 100644 --- a/docs/tidb_http_api.md +++ b/docs/tidb_http_api.md @@ -557,3 +557,30 @@ timezone.* # reset the size of the ballast object (2GB in this example) curl -v -X POST -d "2147483648" http://{TiDBIP}:10080/debug/ballast-object-sz ``` + + +1. Set deadlock history table capacity + + ```shell + curl -X POST -d "deadlock_history_capacity={number}" http://{TiDBIP}:10080/settings + ``` + +1. Set whether deadlock history (`DEADLOCKS`) collect retryable deadlocks + + ```shell + curl -X POST -d "deadlock_history_collect_retryable={bool_val}" http://{TiDBIP}:10080/settings + ``` + +1. Set transaction_id to digest mapping minimum duration threshold, only transactions which last longer than this threshold will be collected into `TRX_SUMMARY`. + + ```shell + curl -X POST -d "transaction_id_digest_min_duration={number}" http://{TiDBIP}:10080/settings + ``` + + Unit of duration here is ms. + +1. Set transaction summary table (`TRX_SUMMARY`) capacity + + ```shell + curl -X POST -d "transaction_summary_capacity={number}" http://{TiDBIP}:10080/settings + ``` diff --git a/domain/BUILD.bazel b/domain/BUILD.bazel new file mode 100644 index 0000000000000..b1c867746ac8d --- /dev/null +++ b/domain/BUILD.bazel @@ -0,0 +1,112 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "domain", + srcs = [ + "domain.go", + "domainctx.go", + "optimize_trace.go", + "plan_replayer.go", + "schema_checker.go", + "schema_validator.go", + "sysvar_cache.go", + "test_helper.go", + "topn_slow_query.go", + ], + importpath = "github.com/pingcap/tidb/domain", + visibility = ["//visibility:public"], + deps = [ + "//bindinfo", + "//config", + "//ddl", + "//ddl/util", + "//domain/globalconfigsync", + "//domain/infosync", + "//errno", + "//infoschema", + "//infoschema/perfschema", + "//kv", + "//meta", + "//metrics", + "//owner", + "//parser/ast", + "//parser/model", + "//parser/mysql", + "//parser/terror", + "//privilege/privileges", + "//sessionctx", + "//sessionctx/variable", + "//statistics/handle", + "//telemetry", + "//types", + "//util", + "//util/dbterror", + "//util/domainutil", + "//util/execdetails", + "//util/expensivequery", + "//util/logutil", + "//util/sqlexec", + "@com_github_ngaut_pools//:pools", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_stretchr_testify//require", + "@com_github_tikv_client_go_v2//oracle", + "@com_github_tikv_client_go_v2//tikv", + "@com_github_tikv_client_go_v2//txnkv/transaction", + "@com_github_tikv_pd_client//:client", + "@io_etcd_go_etcd_client_v3//:client", + "@io_etcd_go_etcd_client_v3//concurrency", + "@org_golang_google_grpc//:grpc", + "@org_golang_google_grpc//keepalive", + "@org_golang_x_exp//maps", + "@org_golang_x_exp//slices", + "@org_uber_go_atomic//:atomic", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "domain_test", + srcs = [ + "db_test.go", + "domain_test.go", + "domain_utils_test.go", + "domainctx_test.go", + "main_test.go", + "plan_replayer_test.go", + "schema_checker_test.go", + "schema_validator_test.go", + "session_pool_test.go", + "topn_slow_query_test.go", + ], + embed = [":domain"], + flaky = True, + shard_count = 25, + deps = [ + "//config", + "//ddl", + "//domain/infosync", + "//errno", + "//kv", + "//metrics", + "//parser/ast", + "//parser/model", + "//parser/terror", + "//server", + "//session", + "//sessionctx/variable", + "//store/mockstore", + "//testkit/testsetup", + "//util", + "//util/mock", + "@com_github_ngaut_pools//:pools", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_prometheus_client_model//go", + "@com_github_stretchr_testify//require", + "@com_github_tikv_client_go_v2//oracle", + "@com_github_tikv_client_go_v2//txnkv/transaction", + "@io_etcd_go_etcd_tests_v3//integration", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/domain/db_test.go b/domain/db_test.go index 50d69f04f587f..25b24d8116604 100644 --- a/domain/db_test.go +++ b/domain/db_test.go @@ -75,7 +75,10 @@ func TestNormalSessionPool(t *testing.T) { defer domain.Close() info, err1 := infosync.GlobalInfoSyncerInit(context.Background(), "t", func() uint64 { return 1 }, nil, true) require.NoError(t, err1) - svr, err := server.NewServer(config.GetGlobalConfig(), nil) + conf := config.GetGlobalConfig() + conf.Port = 0 + conf.Status.StatusPort = 10045 + svr, err := server.NewServer(conf, nil) require.NoError(t, err) svr.SetDomain(domain) svr.InitGlobalConnID(domain.ServerID) @@ -105,7 +108,10 @@ func TestAbnormalSessionPool(t *testing.T) { defer domain.Close() info, err1 := infosync.GlobalInfoSyncerInit(context.Background(), "t", func() uint64 { return 1 }, nil, true) require.NoError(t, err1) - svr, err := server.NewServer(config.GetGlobalConfig(), nil) + conf := config.GetGlobalConfig() + conf.Port = 0 + conf.Status.StatusPort = 10046 + svr, err := server.NewServer(conf, nil) require.NoError(t, err) svr.SetDomain(domain) svr.InitGlobalConnID(domain.ServerID) diff --git a/domain/domain.go b/domain/domain.go index 5c7064920a3a5..e9eed74e24da6 100644 --- a/domain/domain.go +++ b/domain/domain.go @@ -794,7 +794,7 @@ func (do *Domain) Init(ddlLease time.Duration, sysExecutorFactory func(*Domain) sysFac := func() (pools.Resource, error) { return sysExecutorFactory(do) } - sysCtxPool := pools.NewResourcePool(sysFac, 2, 2, resourceIdleTimeout) + sysCtxPool := pools.NewResourcePool(sysFac, 128, 128, resourceIdleTimeout) ctx, cancelFunc := context.WithCancel(context.Background()) do.cancel = cancelFunc var callback ddl.Callback diff --git a/domain/globalconfigsync/BUILD.bazel b/domain/globalconfigsync/BUILD.bazel new file mode 100644 index 0000000000000..9ee37c895beef --- /dev/null +++ b/domain/globalconfigsync/BUILD.bazel @@ -0,0 +1,29 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "globalconfigsync", + srcs = ["globalconfig.go"], + importpath = "github.com/pingcap/tidb/domain/globalconfigsync", + visibility = ["//visibility:public"], + deps = [ + "//util/logutil", + "@com_github_tikv_pd_client//:client", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "globalconfigsync_test", + srcs = ["globalconfig_test.go"], + deps = [ + ":globalconfigsync", + "//kv", + "//session", + "//store/mockstore", + "//testkit/testsetup", + "@com_github_stretchr_testify//require", + "@com_github_tikv_pd_client//:client", + "@io_etcd_go_etcd_tests_v3//integration", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/domain/infosync/BUILD.bazel b/domain/infosync/BUILD.bazel new file mode 100644 index 0000000000000..e9ecff7fa5606 --- /dev/null +++ b/domain/infosync/BUILD.bazel @@ -0,0 +1,65 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "infosync", + srcs = [ + "error.go", + "info.go", + "label_manager.go", + "placement_manager.go", + "region.go", + "tiflash_manager.go", + ], + importpath = "github.com/pingcap/tidb/domain/infosync", + visibility = ["//visibility:public"], + deps = [ + "//config", + "//ddl/label", + "//ddl/placement", + "//ddl/util", + "//errno", + "//kv", + "//metrics", + "//parser/model", + "//parser/mysql", + "//parser/terror", + "//sessionctx/binloginfo", + "//sessionctx/variable", + "//store/helper", + "//tablecodec", + "//types", + "//util", + "//util/codec", + "//util/dbterror", + "//util/hack", + "//util/logutil", + "//util/pdapi", + "//util/versioninfo", + "@com_github_gorilla_mux//:mux", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_tikv_client_go_v2//oracle", + "@io_etcd_go_etcd_client_v3//:client", + "@io_etcd_go_etcd_client_v3//concurrency", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "infosync_test", + srcs = ["info_test.go"], + embed = [":infosync"], + flaky = True, + shard_count = 50, + deps = [ + "//ddl/placement", + "//ddl/util", + "//parser/model", + "//testkit/testsetup", + "//util", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_stretchr_testify//require", + "@io_etcd_go_etcd_tests_v3//integration", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/domain/infosync/info.go b/domain/infosync/info.go index 07fbbb524f7c9..98e16e2c8c573 100644 --- a/domain/infosync/info.go +++ b/domain/infosync/info.go @@ -265,7 +265,7 @@ func SetMockTiFlash(tiflash *MockTiFlash) { m, ok := is.tiflashPlacementManager.(*mockTiFlashPlacementManager) if ok { - m.tiflash = tiflash + m.SetMockTiFlash(tiflash) } } diff --git a/domain/infosync/tiflash_manager.go b/domain/infosync/tiflash_manager.go index 48d526840ea40..e3d0afb2ee4dc 100644 --- a/domain/infosync/tiflash_manager.go +++ b/domain/infosync/tiflash_manager.go @@ -525,6 +525,13 @@ func (tiflash *MockTiFlash) PdSwitch(enabled bool) { tiflash.PdEnabled = enabled } +// SetMockTiFlash is set a mock TiFlash server. +func (m *mockTiFlashPlacementManager) SetMockTiFlash(tiflash *MockTiFlash) { + m.Lock() + defer m.Unlock() + m.tiflash = tiflash +} + // SetPlacementRule is a helper function to set placement rule. func (m *mockTiFlashPlacementManager) SetPlacementRule(ctx context.Context, rule placement.TiFlashRule) error { m.Lock() diff --git a/dumpling/README.md b/dumpling/README.md index 00715370731c6..d90afa808cbf9 100644 --- a/dumpling/README.md +++ b/dumpling/README.md @@ -6,7 +6,6 @@ [![API Docs](https://img.shields.io/badge/go.dev-reference-007d9c?logo=go&logoColor=white)](https://pkg.go.dev/github.com/pingcap/dumpling) [![Go Report Card](https://goreportcard.com/badge/github.com/pingcap/dumpling)](https://goreportcard.com/report/github.com/pingcap/dumpling) [![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fpingcap%2Fdumpling.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2Fpingcap%2Fdumpling?ref=badge_shield) -[![Discuss in Slack](https://img.shields.io/badge/slack-sig--migrate-4A154B?logo=slack)](https://slack.tidb.io/invite?team=tidb-community&channel=sig-migrate&ref=github_sig) **Dumpling** is a tool and a Go library for creating SQL dump from a MySQL-compatible database. It is intended to replace `mysqldump` and `mydumper` when targeting TiDB. @@ -24,7 +23,7 @@ Features - [ ] Write to cloud storage (S3, GCS) natively - [x] Advanced table filtering -Any questions? Let's discuss in [#sig-migrate in Slack](https://slack.tidb.io/invite?team=tidb-community&channel=sig-migrate&ref=github_sig)! +Any questions? Let's discuss on [TiDB Internals forum](https://internals.tidb.io/)! Building -------- @@ -51,4 +50,4 @@ License Dumpling is under the Apache 2.0 license. See the [LICENSE](./LICENSE) file for details. -[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fpingcap%2Fdumpling.svg?type=large)](https://app.fossa.com/projects/git%2Bgithub.com%2Fpingcap%2Fdumpling?ref=badge_large) \ No newline at end of file +[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fpingcap%2Fdumpling.svg?type=large)](https://app.fossa.com/projects/git%2Bgithub.com%2Fpingcap%2Fdumpling?ref=badge_large) diff --git a/dumpling/cli/BUILD.bazel b/dumpling/cli/BUILD.bazel new file mode 100644 index 0000000000000..7ae5d3f604959 --- /dev/null +++ b/dumpling/cli/BUILD.bazel @@ -0,0 +1,12 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "cli", + srcs = ["versions.go"], + importpath = "github.com/pingcap/tidb/dumpling/cli", + visibility = ["//visibility:public"], + deps = [ + "//dumpling/log", + "@org_uber_go_zap//:zap", + ], +) diff --git a/dumpling/cmd/dumpling/BUILD.bazel b/dumpling/cmd/dumpling/BUILD.bazel new file mode 100644 index 0000000000000..87ca3a640bfac --- /dev/null +++ b/dumpling/cmd/dumpling/BUILD.bazel @@ -0,0 +1,22 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library") + +go_library( + name = "dumpling_lib", + srcs = ["main.go"], + importpath = "github.com/pingcap/tidb/dumpling/cmd/dumpling", + visibility = ["//visibility:private"], + deps = [ + "//dumpling/cli", + "//dumpling/export", + "@com_github_prometheus_client_golang//prometheus", + "@com_github_prometheus_client_golang//prometheus/collectors", + "@com_github_spf13_pflag//:pflag", + "@org_uber_go_zap//:zap", + ], +) + +go_binary( + name = "dumpling", + embed = [":dumpling_lib"], + visibility = ["//visibility:public"], +) diff --git a/dumpling/context/BUILD.bazel b/dumpling/context/BUILD.bazel new file mode 100644 index 0000000000000..4b14d24307d5d --- /dev/null +++ b/dumpling/context/BUILD.bazel @@ -0,0 +1,9 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "context", + srcs = ["context.go"], + importpath = "github.com/pingcap/tidb/dumpling/context", + visibility = ["//visibility:public"], + deps = ["//dumpling/log"], +) diff --git a/dumpling/export/BUILD.bazel b/dumpling/export/BUILD.bazel new file mode 100644 index 0000000000000..fca79ffd31a76 --- /dev/null +++ b/dumpling/export/BUILD.bazel @@ -0,0 +1,108 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "export", + srcs = [ + "block_allow_list.go", + "config.go", + "conn.go", + "consistency.go", + "dump.go", + "http_handler.go", + "ir.go", + "ir_impl.go", + "metadata.go", + "metrics.go", + "prepare.go", + "retry.go", + "sql.go", + "sql_type.go", + "status.go", + "task.go", + "util.go", + "writer.go", + "writer_util.go", + ], + importpath = "github.com/pingcap/tidb/dumpling/export", + visibility = ["//visibility:public"], + deps = [ + "//br/pkg/storage", + "//br/pkg/summary", + "//br/pkg/utils", + "//br/pkg/version", + "//config", + "//dumpling/cli", + "//dumpling/context", + "//dumpling/log", + "//errno", + "//parser", + "//parser/ast", + "//parser/format", + "//parser/model", + "//store/helper", + "//tablecodec", + "//util", + "//util/codec", + "//util/dbutil", + "//util/promutil", + "//util/table-filter", + "@com_github_coreos_go_semver//semver", + "@com_github_docker_go_units//:go-units", + "@com_github_go_sql_driver_mysql//:mysql", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_pingcap_log//:log", + "@com_github_prometheus_client_golang//prometheus", + "@com_github_prometheus_client_golang//prometheus/promhttp", + "@com_github_prometheus_client_model//go", + "@com_github_soheilhy_cmux//:cmux", + "@com_github_spf13_pflag//:pflag", + "@com_github_tikv_pd_client//:client", + "@io_etcd_go_etcd_client_v3//:client", + "@org_golang_x_sync//errgroup", + "@org_uber_go_multierr//:multierr", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "export_test", + srcs = [ + "block_allow_list_test.go", + "config_test.go", + "consistency_test.go", + "dump_test.go", + "ir_impl_test.go", + "main_test.go", + "metadata_test.go", + "metrics_test.go", + "prepare_test.go", + "sql_test.go", + "sql_type_test.go", + "status_test.go", + "util_for_test.go", + "util_test.go", + "writer_serial_test.go", + "writer_test.go", + ], + data = glob(["**"]), + embed = [":export"], + deps = [ + "//br/pkg/storage", + "//br/pkg/version", + "//config", + "//dumpling/context", + "//dumpling/log", + "//parser", + "//util/filter", + "//util/promutil", + "//util/table-filter", + "@com_github_data_dog_go_sqlmock//:go-sqlmock", + "@com_github_go_sql_driver_mysql//:mysql", + "@com_github_pingcap_errors//:errors", + "@com_github_prometheus_client_golang//prometheus/collectors", + "@com_github_stretchr_testify//require", + "@org_golang_x_sync//errgroup", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/dumpling/export/dump.go b/dumpling/export/dump.go index 7f27759211a44..43d801430e6e8 100755 --- a/dumpling/export/dump.go +++ b/dumpling/export/dump.go @@ -81,10 +81,17 @@ func NewDumper(ctx context.Context, conf *Config) (*Dumper, error) { selectTiDBTableRegionFunc: selectTiDBTableRegion, } + var err error + d.metrics = newMetrics(conf.PromFactory, conf.Labels) d.metrics.registerTo(conf.PromRegistry) + defer func() { + if err != nil { + d.metrics.unregisterFrom(conf.PromRegistry) + } + }() - err := adjustConfig(conf, + err = adjustConfig(conf, registerTLSConfig, validateSpecifiedSQL, adjustFileFormat) diff --git a/dumpling/export/dump_test.go b/dumpling/export/dump_test.go index 204826f8e7716..b059a1ae28ac2 100644 --- a/dumpling/export/dump_test.go +++ b/dumpling/export/dump_test.go @@ -9,6 +9,7 @@ import ( "time" "github.com/DATA-DOG/go-sqlmock" + "github.com/pingcap/tidb/util/promutil" "github.com/stretchr/testify/require" "golang.org/x/sync/errgroup" @@ -207,5 +208,20 @@ func TestAdjustTableCollation(t *testing.T) { require.NoError(t, err) require.Equal(t, expectedSQLs[i], newSQL) } +} + +func TestUnregisterMetrics(t *testing.T) { + ctx := context.Background() + conf := &Config{ + SQL: "not empty", + Where: "not empty", + PromFactory: promutil.NewDefaultFactory(), + PromRegistry: promutil.NewDefaultRegistry(), + } + _, err := NewDumper(ctx, conf) + require.Error(t, err) + _, err = NewDumper(ctx, conf) + // should not panic + require.Error(t, err) } diff --git a/dumpling/export/ir_impl.go b/dumpling/export/ir_impl.go index cd8272c3772a6..57a14f5a66d11 100644 --- a/dumpling/export/ir_impl.go +++ b/dumpling/export/ir_impl.go @@ -92,12 +92,10 @@ func (iter *multiQueriesChunkIter) nextRows() { for iter.id < len(iter.queries) { rows := iter.rows if rows != nil { - err = rows.Close() - if err != nil { + if err = rows.Close(); err != nil { return } - err = rows.Err() - if err != nil { + if err = rows.Err(); err != nil { return } } diff --git a/dumpling/export/sql.go b/dumpling/export/sql.go index dda0013116ff6..9f866209241b5 100644 --- a/dumpling/export/sql.go +++ b/dumpling/export/sql.go @@ -1512,7 +1512,7 @@ func GetCharsetAndDefaultCollation(ctx context.Context, db *sql.Conn) (map[strin if err = rows.Close(); err != nil { return nil, errors.Annotatef(err, "sql: %s", query) } - if rows.Err() != nil { + if err = rows.Err(); err != nil { return nil, errors.Annotatef(err, "sql: %s", query) } return charsetAndDefaultCollation, err diff --git a/dumpling/log/BUILD.bazel b/dumpling/log/BUILD.bazel new file mode 100644 index 0000000000000..5686f7289667a --- /dev/null +++ b/dumpling/log/BUILD.bazel @@ -0,0 +1,13 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "log", + srcs = ["log.go"], + importpath = "github.com/pingcap/tidb/dumpling/log", + visibility = ["//visibility:public"], + deps = [ + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_log//:log", + "@org_uber_go_zap//:zap", + ], +) diff --git a/dumpling/tests/s3/BUILD.bazel b/dumpling/tests/s3/BUILD.bazel new file mode 100644 index 0000000000000..360a2702aaeef --- /dev/null +++ b/dumpling/tests/s3/BUILD.bazel @@ -0,0 +1,20 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library") + +go_library( + name = "s3_lib", + srcs = ["import.go"], + importpath = "github.com/pingcap/tidb/dumpling/tests/s3", + visibility = ["//visibility:private"], + deps = [ + "@com_github_go_sql_driver_mysql//:mysql", + "@com_github_pingcap_errors//:errors", + "@com_github_spf13_cobra//:cobra", + "@org_golang_x_sync//errgroup", + ], +) + +go_binary( + name = "s3", + embed = [":s3_lib"], + visibility = ["//visibility:public"], +) diff --git a/errno/BUILD.bazel b/errno/BUILD.bazel new file mode 100644 index 0000000000000..511fcf64502a6 --- /dev/null +++ b/errno/BUILD.bazel @@ -0,0 +1,26 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "errno", + srcs = [ + "errcode.go", + "errname.go", + "infoschema.go", + ], + importpath = "github.com/pingcap/tidb/errno", + visibility = ["//visibility:public"], + deps = ["//parser/mysql"], +) + +go_test( + name = "errno_test", + srcs = [ + "infoschema_test.go", + "main_test.go", + ], + embed = [":errno"], + deps = [ + "//testkit/testsetup", + "@com_github_stretchr_testify//assert", + ], +) diff --git a/errno/errcode.go b/errno/errcode.go index 4296db33d3dd5..a26a1a1eaea6e 100644 --- a/errno/errcode.go +++ b/errno/errcode.go @@ -979,6 +979,7 @@ const ( ErrWarnOptimizerHintParseError = 8064 ErrWarnOptimizerHintInvalidInteger = 8065 ErrUnsupportedSecondArgumentType = 8066 + ErrColumnNotMatched = 8067 ErrInvalidPluginID = 8101 ErrInvalidPluginManifest = 8102 ErrInvalidPluginName = 8103 @@ -1022,6 +1023,8 @@ const ( ErrAssertionFailed = 8141 ErrInstanceScope = 8142 ErrNonTransactionalJobFailure = 8143 + ErrSettingNoopVariable = 8144 + ErrGettingNoopVariable = 8145 // Error codes used by TiDB ddl package ErrUnsupportedDDLOperation = 8200 @@ -1068,6 +1071,7 @@ const ( ErrOptOnCacheTable = 8242 ErrHTTPServiceError = 8243 ErrPartitionColumnStatsMissing = 8244 + ErrColumnInChange = 8245 // TiKV/PD/TiFlash errors. ErrPDServerTimeout = 9001 ErrTiKVServerTimeout = 9002 diff --git a/errno/errname.go b/errno/errname.go index 3cf46e82fe6b5..58866b7564cd0 100644 --- a/errno/errname.go +++ b/errno/errname.go @@ -1018,6 +1018,8 @@ var MySQLErrName = map[uint16]*mysql.ErrMessage{ ErrAssertionFailed: mysql.Message("assertion failed: key: %s, assertion: %s, start_ts: %v, existing start ts: %v, existing commit ts: %v", []int{0}), ErrInstanceScope: mysql.Message("modifying %s will require SET GLOBAL in a future version of TiDB", nil), ErrNonTransactionalJobFailure: mysql.Message("non-transactional job failed, job id: %d, total jobs: %d. job range: [%s, %s], job sql: %s, err: %v", []int{2, 3, 4}), + ErrSettingNoopVariable: mysql.Message("setting %s has no effect in TiDB", nil), + ErrGettingNoopVariable: mysql.Message("variable %s has no effect in TiDB", nil), ErrWarnOptimizerHintInvalidInteger: mysql.Message("integer value is out of range in '%s'", nil), ErrWarnOptimizerHintUnsupportedHint: mysql.Message("Optimizer hint %s is not supported by TiDB and is ignored", nil), @@ -1046,6 +1048,7 @@ var MySQLErrName = map[uint16]*mysql.ErrMessage{ ErrInvalidWildCard: mysql.Message("Wildcard fields without any table name appears in wrong place", nil), ErrMixOfGroupFuncAndFieldsIncompatible: mysql.Message("In aggregated query without GROUP BY, expression #%d of SELECT list contains nonaggregated column '%s'; this is incompatible with sql_mode=only_full_group_by", nil), ErrUnsupportedSecondArgumentType: mysql.Message("JSON_OBJECTAGG: unsupported second argument type %v", nil), + ErrColumnNotMatched: mysql.Message("Load data: unmatched columns", nil), ErrLockExpire: mysql.Message("TTL manager has timed out, pessimistic locks may expire, please commit or rollback this transaction", nil), ErrTableOptionUnionUnsupported: mysql.Message("CREATE/ALTER table with union option is not supported", nil), ErrTableOptionInsertMethodUnsupported: mysql.Message("CREATE/ALTER table with insert method option is not supported", nil), @@ -1074,6 +1077,8 @@ var MySQLErrName = map[uint16]*mysql.ErrMessage{ ErrPlacementPolicyWithDirectOption: mysql.Message("Placement policy '%s' can't co-exist with direct placement options", nil), ErrPlacementPolicyInUse: mysql.Message("Placement policy '%-.192s' is still in use", nil), ErrOptOnCacheTable: mysql.Message("'%s' is unsupported on cache tables.", nil), + + ErrColumnInChange: mysql.Message("column %s id %d does not exist, this column may have been updated by other DDL ran in parallel", nil), // TiKV/PD errors. ErrPDServerTimeout: mysql.Message("PD server timeout", nil), ErrTiKVServerTimeout: mysql.Message("TiKV server timeout", nil), diff --git a/errors.toml b/errors.toml index d8112d297e6fe..11518f664cda6 100755 --- a/errors.toml +++ b/errors.toml @@ -1231,6 +1231,11 @@ error = ''' '%s' is unsupported on cache tables. ''' +["ddl:8245"] +error = ''' +column %s id %d does not exist, this column may have been updated by other DDL ran in parallel +''' + ["domain:8027"] error = ''' Information schema is out of date: schema failed to update in 1 lease, please make sure TiDB can connect to TiKV @@ -1376,6 +1381,11 @@ error = ''' TiDB admin check table failed. ''' +["executor:8067"] +error = ''' +Load data: unmatched columns +''' + ["executor:8114"] error = ''' Unknown plan @@ -1446,6 +1456,11 @@ error = ''' modifying %s will require SET GLOBAL in a future version of TiDB ''' +["executor:8144"] +error = ''' +setting %s has no effect in TiDB +''' + ["executor:8212"] error = ''' Failed to split region ranges: %s @@ -2066,6 +2081,11 @@ error = ''' Column '%s' in ANALYZE column option does not exist in table '%s' ''' +["planner:8145"] +error = ''' +variable %s has no effect in TiDB +''' + ["planner:8242"] error = ''' '%s' is unsupported on cache tables. diff --git a/executor/BUILD.bazel b/executor/BUILD.bazel new file mode 100644 index 0000000000000..295b9e07c1f3d --- /dev/null +++ b/executor/BUILD.bazel @@ -0,0 +1,431 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "executor", + srcs = [ + "adapter.go", + "admin.go", + "admin_plugins.go", + "admin_telemetry.go", + "aggregate.go", + "analyze.go", + "analyze_col.go", + "analyze_col_v2.go", + "analyze_fast.go", + "analyze_global_stats.go", + "analyze_idx.go", + "analyze_incremental.go", + "analyze_utils.go", + "apply_cache.go", + "batch_checker.go", + "batch_point_get.go", + "bind.go", + "brie.go", + "builder.go", + "change.go", + "checksum.go", + "compact_table.go", + "compiler.go", + "concurrent_map.go", + "coprocessor.go", + "cte.go", + "cte_table_reader.go", + "ddl.go", + "delete.go", + "distsql.go", + "errors.go", + "executor.go", + "explain.go", + "grant.go", + "hash_table.go", + "index_advise.go", + "index_lookup_hash_join.go", + "index_lookup_join.go", + "index_lookup_merge_join.go", + "index_merge_reader.go", + "infoschema_reader.go", + "insert.go", + "insert_common.go", + "inspection_common.go", + "inspection_profile.go", + "inspection_result.go", + "inspection_summary.go", + "join.go", + "joiner.go", + "load_data.go", + "load_stats.go", + "mem_reader.go", + "memtable_reader.go", + "merge_join.go", + "metrics_reader.go", + "mpp_gather.go", + "opt_rule_blacklist.go", + "parallel_apply.go", + "partition_table.go", + "pipelined_window.go", + "plan_replayer.go", + "point_get.go", + "prepared.go", + "projection.go", + "reload_expr_pushdown_blacklist.go", + "replace.go", + "revoke.go", + "sample.go", + "select_into.go", + "set.go", + "set_config.go", + "show.go", + "show_placement.go", + "show_stats.go", + "shuffle.go", + "simple.go", + "slow_query.go", + "sort.go", + "split.go", + "table_reader.go", + "trace.go", + "union_scan.go", + "update.go", + "utils.go", + "window.go", + "write.go", + ], + importpath = "github.com/pingcap/tidb/executor", + visibility = ["//visibility:public"], + deps = [ + "//bindinfo", + "//br/pkg/glue", + "//br/pkg/storage", + "//br/pkg/task", + "//config", + "//ddl", + "//ddl/label", + "//ddl/placement", + "//distsql", + "//domain", + "//domain/infosync", + "//errno", + "//executor/aggfuncs", + "//expression", + "//expression/aggregation", + "//infoschema", + "//kv", + "//meta", + "//meta/autoid", + "//metrics", + "//parser", + "//parser/ast", + "//parser/auth", + "//parser/charset", + "//parser/model", + "//parser/mysql", + "//parser/terror", + "//planner", + "//planner/core", + "//planner/util", + "//plugin", + "//privilege", + "//privilege/privileges", + "//session/txninfo", + "//sessionctx", + "//sessionctx/sessionstates", + "//sessionctx/stmtctx", + "//sessionctx/variable", + "//sessiontxn", + "//sessiontxn/legacy", + "//sessiontxn/staleread", + "//statistics", + "//statistics/handle", + "//store/driver/backoff", + "//store/driver/error", + "//store/driver/txn", + "//store/helper", + "//table", + "//table/tables", + "//table/temptable", + "//tablecodec", + "//telemetry", + "//tidb-binlog/node", + "//types", + "//types/json", + "//types/parser_driver", + "//util", + "//util/admin", + "//util/bitmap", + "//util/chunk", + "//util/codec", + "//util/collate", + "//util/cteutil", + "//util/dbterror", + "//util/deadlockhistory", + "//util/disk", + "//util/etcd", + "//util/execdetails", + "//util/format", + "//util/gcutil", + "//util/hack", + "//util/hint", + "//util/keydecoder", + "//util/kvcache", + "//util/logutil", + "//util/logutil/consistency", + "//util/mathutil", + "//util/memory", + "//util/mvmap", + "//util/pdapi", + "//util/plancodec", + "//util/printer", + "//util/ranger", + "//util/resourcegrouptag", + "//util/rowDecoder", + "//util/rowcodec", + "//util/sem", + "//util/set", + "//util/sqlexec", + "//util/stmtsummary", + "//util/stringutil", + "//util/table-filter", + "//util/timeutil", + "//util/tls", + "//util/topsql", + "//util/topsql/state", + "@com_github_burntsushi_toml//:toml", + "@com_github_gogo_protobuf//proto", + "@com_github_ngaut_pools//:pools", + "@com_github_opentracing_basictracer_go//:basictracer-go", + "@com_github_opentracing_opentracing_go//:opentracing-go", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_pingcap_kvproto//pkg/brpb", + "@com_github_pingcap_kvproto//pkg/coprocessor", + "@com_github_pingcap_kvproto//pkg/deadlock", + "@com_github_pingcap_kvproto//pkg/diagnosticspb", + "@com_github_pingcap_kvproto//pkg/encryptionpb", + "@com_github_pingcap_kvproto//pkg/kvrpcpb", + "@com_github_pingcap_kvproto//pkg/metapb", + "@com_github_pingcap_kvproto//pkg/tikvpb", + "@com_github_pingcap_log//:log", + "@com_github_pingcap_sysutil//:sysutil", + "@com_github_pingcap_tipb//go-tipb", + "@com_github_prometheus_client_golang//api", + "@com_github_prometheus_client_golang//api/prometheus/v1:prometheus", + "@com_github_prometheus_common//model", + "@com_github_tikv_client_go_v2//error", + "@com_github_tikv_client_go_v2//kv", + "@com_github_tikv_client_go_v2//oracle", + "@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_client_go_v2//txnkv/txnsnapshot", + "@com_github_tikv_client_go_v2//util", + "@com_github_tikv_pd_client//:client", + "@com_github_twmb_murmur3//:murmur3", + "@com_sourcegraph_sourcegraph_appdash//:appdash", + "@com_sourcegraph_sourcegraph_appdash//opentracing", + "@org_golang_google_grpc//:grpc", + "@org_golang_google_grpc//codes", + "@org_golang_google_grpc//credentials", + "@org_golang_google_grpc//status", + "@org_golang_x_sync//errgroup", + "@org_uber_go_atomic//:atomic", + "@org_uber_go_zap//:zap", + "@org_uber_go_zap//zapcore", + ], +) + +go_test( + name = "executor_test", + srcs = [ + "adapter_test.go", + "admin_test.go", + "aggregate_test.go", + "analyze_test.go", + "apply_cache_test.go", + "batch_point_get_test.go", + "benchmark_test.go", + "brie_test.go", + "charset_test.go", + "chunk_size_control_test.go", + "cluster_table_test.go", + "collation_test.go", + "compact_table_test.go", + "concurrent_map_test.go", + "copr_cache_test.go", + "cte_test.go", + "ddl_test.go", + "delete_test.go", + "distsql_test.go", + "executor_failpoint_test.go", + "executor_issue_test.go", + "executor_pkg_test.go", + "executor_required_rows_test.go", + "executor_test.go", + "executor_txn_test.go", + "explain_test.go", + "explain_unit_test.go", + "explainfor_test.go", + "grant_test.go", + "hash_table_test.go", + "hot_regions_history_table_test.go", + "index_advise_test.go", + "index_lookup_join_test.go", + "index_lookup_merge_join_test.go", + "index_merge_reader_test.go", + "infoschema_cluster_table_test.go", + "infoschema_reader_test.go", + "insert_test.go", + "inspection_common_test.go", + "inspection_result_test.go", + "inspection_summary_test.go", + "join_pkg_test.go", + "join_test.go", + "joiner_test.go", + "main_test.go", + "memory_test.go", + "memtable_reader_test.go", + "merge_join_test.go", + "metrics_reader_test.go", + "parallel_apply_test.go", + "partition_table_test.go", + "pkg_test.go", + "point_get_test.go", + "prepared_test.go", + "recover_table_test.go", + "resource_tag_test.go", + "revoke_test.go", + "rowid_test.go", + "sample_test.go", + "select_into_test.go", + "set_test.go", + "show_placement_labels_test.go", + "show_placement_test.go", + "show_stats_test.go", + "shuffle_test.go", + "simple_test.go", + "slow_query_sql_test.go", + "slow_query_test.go", + "sort_test.go", + "split_test.go", + "stale_txn_test.go", + "statement_context_test.go", + "table_readers_required_rows_test.go", + "temporary_table_test.go", + "tikv_regions_peers_table_test.go", + "trace_test.go", + "union_scan_test.go", + "update_test.go", + "utils_test.go", + "window_test.go", + "write_concurrent_test.go", + "write_test.go", + ], + data = glob(["testdata/**"]), + embed = [":executor"], + flaky = True, + shard_count = 50, + deps = [ + "//config", + "//ddl", + "//ddl/placement", + "//ddl/testutil", + "//ddl/util", + "//distsql", + "//domain", + "//domain/infosync", + "//errno", + "//executor/aggfuncs", + "//expression", + "//expression/aggregation", + "//infoschema", + "//kv", + "//meta", + "//meta/autoid", + "//parser", + "//parser/ast", + "//parser/auth", + "//parser/model", + "//parser/mysql", + "//parser/terror", + "//planner", + "//planner/core", + "//planner/property", + "//planner/util", + "//server", + "//session", + "//session/txninfo", + "//sessionctx", + "//sessionctx/binloginfo", + "//sessionctx/stmtctx", + "//sessionctx/variable", + "//sessiontxn", + "//sessiontxn/staleread", + "//statistics", + "//statistics/handle", + "//store/copr", + "//store/driver/error", + "//store/helper", + "//store/mockstore", + "//store/mockstore/unistore", + "//table", + "//table/tables", + "//tablecodec", + "//testkit", + "//testkit/external", + "//testkit/testdata", + "//testkit/testmain", + "//testkit/testsetup", + "//testkit/testutil", + "//types", + "//types/json", + "//util", + "//util/benchdaily", + "//util/chunk", + "//util/codec", + "//util/collate", + "//util/dbterror", + "//util/deadlockhistory", + "//util/disk", + "//util/execdetails", + "//util/gcutil", + "//util/hack", + "//util/kvcache", + "//util/logutil", + "//util/logutil/consistency", + "//util/mathutil", + "//util/memory", + "//util/mock", + "//util/pdapi", + "//util/plancodec", + "//util/ranger", + "//util/rowcodec", + "//util/set", + "//util/sqlexec", + "//util/stringutil", + "//util/tableutil", + "//util/timeutil", + "//util/topsql/state", + "@com_github_golang_protobuf//proto", + "@com_github_gorilla_mux//:mux", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_pingcap_fn//:fn", + "@com_github_pingcap_kvproto//pkg/diagnosticspb", + "@com_github_pingcap_kvproto//pkg/kvrpcpb", + "@com_github_pingcap_kvproto//pkg/metapb", + "@com_github_pingcap_log//:log", + "@com_github_pingcap_sysutil//:sysutil", + "@com_github_pingcap_tipb//go-binlog", + "@com_github_pingcap_tipb//go-tipb", + "@com_github_prometheus_common//model", + "@com_github_stretchr_testify//require", + "@com_github_tikv_client_go_v2//oracle", + "@com_github_tikv_client_go_v2//testutils", + "@com_github_tikv_client_go_v2//tikv", + "@com_github_tikv_client_go_v2//tikvrpc", + "@org_golang_google_grpc//:grpc", + "@org_uber_go_atomic//:atomic", + "@org_uber_go_goleak//:goleak", + "@org_uber_go_zap//:zap", + "@org_uber_go_zap//zapcore", + ], +) diff --git a/executor/adapter.go b/executor/adapter.go index b98597820649b..adb6c34865aa6 100644 --- a/executor/adapter.go +++ b/executor/adapter.go @@ -18,7 +18,6 @@ import ( "bytes" "context" "fmt" - "math" "runtime/trace" "strings" "sync/atomic" @@ -239,8 +238,7 @@ func (a *ExecStmt) PointGet(ctx context.Context, is infoschema.InfoSchema) (*rec }) ctx = a.observeStmtBeginForTopSQL(ctx) - startTs := uint64(math.MaxUint64) - err := a.Ctx.InitTxnWithStartTS(startTs) + startTs, err := sessiontxn.GetTxnManager(a.Ctx).GetStmtReadTS() if err != nil { return nil, err } @@ -417,6 +415,10 @@ func (a *ExecStmt) Exec(ctx context.Context) (_ sqlexec.RecordSet, err error) { // ExecuteExec will rewrite `a.Plan`, so set plan label should be executed after `a.buildExecutor`. ctx = a.observeStmtBeginForTopSQL(ctx) + failpoint.Inject("hookBeforeFirstRunExecutor", func() { + sessiontxn.ExecTestHook(a.Ctx, sessiontxn.HookBeforeFirstRunExecutorKey) + }) + if err = e.Open(ctx); err != nil { terror.Call(e.Close) return nil, err @@ -793,6 +795,11 @@ func (a *ExecStmt) handlePessimisticLockError(ctx context.Context, lockErr error if err != nil { return nil, err } + + failpoint.Inject("hookAfterOnStmtRetryWithLockError", func() { + sessiontxn.ExecTestHook(a.Ctx, sessiontxn.HookAfterOnStmtRetryWithLockErrorKey) + }) + e, err := a.buildExecutor() if err != nil { return nil, err @@ -823,31 +830,8 @@ func (a *ExecStmt) buildExecutor() (Executor, error) { ctx := a.Ctx stmtCtx := ctx.GetSessionVars().StmtCtx if _, ok := a.Plan.(*plannercore.Execute); !ok { - if snapshotTS := ctx.GetSessionVars().SnapshotTS; snapshotTS != 0 { - if err := ctx.InitTxnWithStartTS(snapshotTS); err != nil { - return nil, err - } - } else { - // Do not sync transaction for Execute statement, because the real optimization work is done in - // "ExecuteExec.Build". - useMaxTS, err := plannercore.IsPointGetWithPKOrUniqueKeyByAutoCommit(ctx, a.Plan) - if err != nil { - return nil, err - } - if useMaxTS { - logutil.BgLogger().Debug("init txnStartTS with MaxUint64", zap.Uint64("conn", ctx.GetSessionVars().ConnectionID), zap.String("text", a.Text)) - if err := ctx.InitTxnWithStartTS(math.MaxUint64); err != nil { - return nil, err - } - } - if stmtPri := stmtCtx.Priority; stmtPri == mysql.NoPriority { - switch { - case useMaxTS: - stmtCtx.Priority = kv.PriorityHigh - case a.LowerPriority: - stmtCtx.Priority = kv.PriorityLow - } - } + if stmtCtx.Priority == mysql.NoPriority && a.LowerPriority { + stmtCtx.Priority = kv.PriorityLow } } if _, ok := a.Plan.(*plannercore.Analyze); ok && ctx.GetSessionVars().InRestrictedSQL { diff --git a/executor/admin_test.go b/executor/admin_test.go index 151340eebe12b..ffb31b5c46e32 100644 --- a/executor/admin_test.go +++ b/executor/admin_test.go @@ -1316,6 +1316,12 @@ func TestCheckFailReport(t *testing.T) { require.NoError(t, txn.Commit(tk.ctx)) ctx, hook := withLogHook(tk.ctx, t, "inconsistency") + + // TODO(tiancaiamao): admin check doesn't support the chunk protocol. + // Remove this after https://github.com/pingcap/tidb/issues/35156 + _, err = tk.Exec(ctx, "set @@tidb_enable_chunk_rpc = off") + require.NoError(t, err) + _, err = tk.Exec(ctx, "admin check table admin_test") require.Error(t, err) require.Equal(t, `[admin:8223]data inconsistency in table: admin_test, index: uk1, handle: 282574488403969, index-values:"handle: 282574488403969, values: [KindInt64 282578800083201 KindInt64 282574488403969]" != record-values:""`, err.Error()) diff --git a/executor/aggfuncs/BUILD.bazel b/executor/aggfuncs/BUILD.bazel new file mode 100644 index 0000000000000..ea85b780540ec --- /dev/null +++ b/executor/aggfuncs/BUILD.bazel @@ -0,0 +1,113 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "aggfuncs", + srcs = [ + "aggfuncs.go", + "builder.go", + "func_avg.go", + "func_bitfuncs.go", + "func_count.go", + "func_count_distinct.go", + "func_cume_dist.go", + "func_first_row.go", + "func_group_concat.go", + "func_json_arrayagg.go", + "func_json_objectagg.go", + "func_lead_lag.go", + "func_max_min.go", + "func_ntile.go", + "func_percent_rank.go", + "func_percentile.go", + "func_rank.go", + "func_stddevpop.go", + "func_stddevsamp.go", + "func_sum.go", + "func_value.go", + "func_varpop.go", + "func_varsamp.go", + "row_number.go", + ], + importpath = "github.com/pingcap/tidb/executor/aggfuncs", + visibility = ["//visibility:public"], + deps = [ + "//expression", + "//expression/aggregation", + "//parser/ast", + "//parser/mysql", + "//planner/core", + "//planner/util", + "//sessionctx", + "//sessionctx/variable", + "//types", + "//types/json", + "//util/chunk", + "//util/codec", + "//util/collate", + "//util/hack", + "//util/logutil", + "//util/mathutil", + "//util/selection", + "//util/set", + "//util/stringutil", + "@com_github_dgryski_go_farm//:go-farm", + "@com_github_pingcap_errors//:errors", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "aggfuncs_test", + srcs = [ + "aggfunc_test.go", + "export_test.go", + "func_avg_test.go", + "func_bitfuncs_test.go", + "func_count_test.go", + "func_cume_dist_test.go", + "func_first_row_test.go", + "func_group_concat_test.go", + "func_json_arrayagg_test.go", + "func_json_objectagg_test.go", + "func_lead_lag_test.go", + "func_max_min_test.go", + "func_ntile_test.go", + "func_percent_rank_test.go", + "func_percentile_test.go", + "func_rank_test.go", + "func_stddevpop_test.go", + "func_stddevsamp_test.go", + "func_sum_test.go", + "func_value_test.go", + "func_varpop_test.go", + "func_varsamp_test.go", + "main_test.go", + "row_number_test.go", + "window_func_test.go", + ], + embed = [":aggfuncs"], + deps = [ + "//expression", + "//expression/aggregation", + "//parser/ast", + "//parser/mysql", + "//planner/util", + "//sessionctx", + "//sessionctx/stmtctx", + "//sessionctx/variable", + "//testkit", + "//testkit/testsetup", + "//types", + "//types/json", + "//util/chunk", + "//util/codec", + "//util/collate", + "//util/hack", + "//util/mock", + "//util/set", + "@com_github_dgryski_go_farm//:go-farm", + "@com_github_pingcap_errors//:errors", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/executor/analyze.go b/executor/analyze.go index e7cbd3ba2c6b3..c9559ccff3cd4 100644 --- a/executor/analyze.go +++ b/executor/analyze.go @@ -15,54 +15,31 @@ package executor import ( - "bytes" "context" "fmt" "math" - "math/rand" - "sort" "strconv" "strings" - "sync" - "sync/atomic" "time" "github.com/pingcap/errors" "github.com/pingcap/failpoint" - "github.com/pingcap/tidb/config" - "github.com/pingcap/tidb/distsql" "github.com/pingcap/tidb/domain" "github.com/pingcap/tidb/domain/infosync" - "github.com/pingcap/tidb/expression" "github.com/pingcap/tidb/infoschema" - "github.com/pingcap/tidb/kv" "github.com/pingcap/tidb/metrics" "github.com/pingcap/tidb/parser/ast" - "github.com/pingcap/tidb/parser/model" - "github.com/pingcap/tidb/parser/mysql" - "github.com/pingcap/tidb/parser/terror" "github.com/pingcap/tidb/planner/core" "github.com/pingcap/tidb/sessionctx" "github.com/pingcap/tidb/sessionctx/variable" "github.com/pingcap/tidb/statistics" "github.com/pingcap/tidb/statistics/handle" - derr "github.com/pingcap/tidb/store/driver/error" - "github.com/pingcap/tidb/table" - "github.com/pingcap/tidb/tablecodec" "github.com/pingcap/tidb/types" "github.com/pingcap/tidb/util" "github.com/pingcap/tidb/util/chunk" - "github.com/pingcap/tidb/util/codec" - "github.com/pingcap/tidb/util/collate" "github.com/pingcap/tidb/util/logutil" - "github.com/pingcap/tidb/util/mathutil" - "github.com/pingcap/tidb/util/memory" - "github.com/pingcap/tidb/util/ranger" "github.com/pingcap/tidb/util/sqlexec" - "github.com/pingcap/tidb/util/timeutil" "github.com/pingcap/tipb/go-tipb" - "github.com/tikv/client-go/v2/tikv" - atomicutil "go.uber.org/atomic" "go.uber.org/zap" ) @@ -88,8 +65,18 @@ const ( maxSketchSize = 10000 ) +type taskType int + +const ( + colTask taskType = iota + idxTask + fastTask + pkIncrementalTask + idxIncrementalTask +) + // Next implements the Executor Next interface. -func (e *AnalyzeExec) Next(ctx context.Context, req *chunk.Chunk) error { +func (e *AnalyzeExec) Next(ctx context.Context, _ *chunk.Chunk) error { concurrency, err := getBuildStatsConcurrency(e.ctx) if err != nil { return err @@ -116,148 +103,40 @@ func (e *AnalyzeExec) Next(ctx context.Context, req *chunk.Chunk) error { close(taskCh) e.wg.Wait() close(resultsCh) - - statsHandle := domain.GetDomain(e.ctx).StatsHandle() - panicCnt := 0 - pruneMode := variable.PartitionPruneMode(e.ctx.GetSessionVars().PartitionPruneMode.Load()) // needGlobalStats used to indicate whether we should merge the partition-level stats to global-level stats. needGlobalStats := pruneMode == variable.Dynamic - type globalStatsKey struct { - tableID int64 - indexID int64 - } - type globalStatsInfo struct { - isIndex int - // When the `isIndex == 0`, histIDs will be the column IDs. - // Otherwise, histIDs will only contain the index ID. - histIDs []int64 - statsVersion int - } - // globalStatsMap is a map used to store which partition tables and the corresponding indexes need global-level stats. - // The meaning of key in map is the structure that used to store the tableID and indexID. - // The meaning of value in map is some additional information needed to build global-level stats. globalStatsMap := make(map[globalStatsKey]globalStatsInfo) - for panicCnt < concurrency { - results, ok := <-resultsCh - if !ok { - break - } - if results.Err != nil { - err = results.Err - if isAnalyzeWorkerPanic(err) { - panicCnt++ - } else { - logutil.Logger(ctx).Error("analyze failed", zap.Error(err)) - } - finishJobWithLog(e.ctx, results.Job, err) - continue - } - if results.TableID.IsPartitionTable() && needGlobalStats { - for _, result := range results.Ars { - if result.IsIndex == 0 { - // If it does not belong to the statistics of index, we need to set it to -1 to distinguish. - globalStatsID := globalStatsKey{tableID: results.TableID.TableID, indexID: int64(-1)} - histIDs := make([]int64, 0, len(result.Hist)) - for _, hg := range result.Hist { - // It's normal virtual column, skip. - if hg == nil { - continue - } - histIDs = append(histIDs, hg.ID) - } - globalStatsMap[globalStatsID] = globalStatsInfo{isIndex: result.IsIndex, histIDs: histIDs, statsVersion: results.StatsVer} - } else { - for _, hg := range result.Hist { - globalStatsID := globalStatsKey{tableID: results.TableID.TableID, indexID: hg.ID} - globalStatsMap[globalStatsID] = globalStatsInfo{isIndex: result.IsIndex, histIDs: []int64{hg.ID}, statsVersion: results.StatsVer} - } - } - } - } - if err1 := statsHandle.SaveTableStatsToStorage(results, results.TableID.IsPartitionTable()); err1 != nil { - err = err1 - logutil.Logger(ctx).Error("save table stats to storage failed", zap.Error(err)) - finishJobWithLog(e.ctx, results.Job, err) - } else { - finishJobWithLog(e.ctx, results.Job, nil) - // Dump stats to historical storage. - if err := e.recordHistoricalStats(results.TableID.TableID); err != nil { - logutil.BgLogger().Error("record historical stats failed", zap.Error(err)) - } - } - } + err = e.handleResultsError(ctx, concurrency, needGlobalStats, globalStatsMap, resultsCh) for _, task := range e.tasks { if task.colExec != nil && task.colExec.memTracker != nil { task.colExec.memTracker.Detach() } } + if err != nil { + return err + } failpoint.Inject("mockKillFinishedAnalyzeJob", func() { dom := domain.GetDomain(e.ctx) dom.SysProcTracker().KillSysProcess(util.GetAutoAnalyzeProcID(dom.ServerID)) }) + + // If we enabled dynamic prune mode, then we need to generate global stats here for partition tables. + err = e.handleGlobalStats(ctx, needGlobalStats, globalStatsMap) if err != nil { return err } - if needGlobalStats { - for globalStatsID, info := range globalStatsMap { - globalOpts := e.opts - if e.OptionsMap != nil { - if v2Options, ok := e.OptionsMap[globalStatsID.tableID]; ok { - globalOpts = v2Options.FilledOpts - } - } - globalStats, err := statsHandle.MergePartitionStats2GlobalStatsByTableID(e.ctx, globalOpts, e.ctx.GetInfoSchema().(infoschema.InfoSchema), globalStatsID.tableID, info.isIndex, info.histIDs) - if err != nil { - if types.ErrPartitionStatsMissing.Equal(err) || types.ErrPartitionColumnStatsMissing.Equal(err) { - // When we find some partition-level stats are missing, we need to report warning. - e.ctx.GetSessionVars().StmtCtx.AppendWarning(err) - continue - } - return err - } - for i := 0; i < globalStats.Num; i++ { - hg, cms, topN := globalStats.Hg[i], globalStats.Cms[i], globalStats.TopN[i] - // fms for global stats doesn't need to dump to kv. - err = statsHandle.SaveStatsToStorage(globalStatsID.tableID, globalStats.Count, info.isIndex, hg, cms, topN, info.statsVersion, 1, true) - if err != nil { - logutil.Logger(ctx).Error("save global-level stats to storage failed", zap.Error(err)) - } - // Dump stats to historical storage. - if err := e.recordHistoricalStats(globalStatsID.tableID); err != nil { - logutil.BgLogger().Error("record historical stats failed", zap.Error(err)) - } - } - } - } err = e.saveV2AnalyzeOpts() if err != nil { e.ctx.GetSessionVars().StmtCtx.AppendWarning(err) } + statsHandle := domain.GetDomain(e.ctx).StatsHandle() if e.ctx.GetSessionVars().InRestrictedSQL { return statsHandle.Update(e.ctx.GetInfoSchema().(infoschema.InfoSchema)) } return statsHandle.Update(e.ctx.GetInfoSchema().(infoschema.InfoSchema), handle.WithTableStatsByQuery()) } -func finishJobWithLog(sctx sessionctx.Context, job *statistics.AnalyzeJob, analyzeErr error) { - FinishAnalyzeJob(sctx, job, analyzeErr) - if job != nil { - var state string - if analyzeErr != nil { - state = statistics.AnalyzeFailed - } else { - state = statistics.AnalyzeFinished - } - logutil.BgLogger().Info(fmt.Sprintf("analyze table `%s`.`%s` has %s", job.DBName, job.TableName, state), - zap.String("partition", job.PartitionName), - zap.String("job info", job.JobInfo), - zap.Time("start time", job.StartTime), - zap.Time("end time", job.EndTime), - zap.String("cost", job.EndTime.Sub(job.StartTime).String())) - } -} - func (e *AnalyzeExec) saveV2AnalyzeOpts() error { if !variable.PersistAnalyzeOptions.Load() || len(e.OptionsMap) == 0 { return nil @@ -330,54 +209,62 @@ func (e *AnalyzeExec) recordHistoricalStats(tableID int64) error { return nil } -func getBuildStatsConcurrency(ctx sessionctx.Context) (int, error) { - sessionVars := ctx.GetSessionVars() - concurrency, err := variable.GetSessionOrGlobalSystemVar(sessionVars, variable.TiDBBuildStatsConcurrency) - if err != nil { - return 0, err - } - c, err := strconv.ParseInt(concurrency, 10, 64) - return int(c), err -} - -type taskType int - -const ( - colTask taskType = iota - idxTask - fastTask - pkIncrementalTask - idxIncrementalTask -) - -type analyzeTask struct { - taskType taskType - idxExec *AnalyzeIndexExec - colExec *AnalyzeColumnsExec - fastExec *AnalyzeFastExec - idxIncrementalExec *analyzeIndexIncrementalExec - colIncrementalExec *analyzePKIncrementalExec - job *statistics.AnalyzeJob -} - -var errAnalyzeWorkerPanic = errors.New("analyze worker panic") -var errAnalyzeOOM = errors.Errorf("analyze panic due to memory quota exceeds, please try with smaller samplerate(refer to %d/count)", config.DefRowsForSampleRate) - -func isAnalyzeWorkerPanic(err error) bool { - return err == errAnalyzeWorkerPanic || err == errAnalyzeOOM -} - -func getAnalyzePanicErr(r interface{}) error { - if msg, ok := r.(string); ok && msg == globalPanicAnalyzeMemoryExceed { - return errAnalyzeOOM - } - if err, ok := r.(error); ok { - if err.Error() == globalPanicAnalyzeMemoryExceed { - return errAnalyzeOOM +// handleResultsError will handle the error fetch from resultsCh and record it in log +func (e *AnalyzeExec) handleResultsError(ctx context.Context, concurrency int, needGlobalStats bool, + globalStatsMap globalStatsMap, resultsCh <-chan *statistics.AnalyzeResults) error { + statsHandle := domain.GetDomain(e.ctx).StatsHandle() + panicCnt := 0 + var err error + for panicCnt < concurrency { + results, ok := <-resultsCh + if !ok { + break + } + if results.Err != nil { + err = results.Err + if isAnalyzeWorkerPanic(err) { + panicCnt++ + } else { + logutil.Logger(ctx).Error("analyze failed", zap.Error(err)) + } + finishJobWithLog(e.ctx, results.Job, err) + continue + } + if results.TableID.IsPartitionTable() && needGlobalStats { + for _, result := range results.Ars { + if result.IsIndex == 0 { + // If it does not belong to the statistics of index, we need to set it to -1 to distinguish. + globalStatsID := globalStatsKey{tableID: results.TableID.TableID, indexID: int64(-1)} + histIDs := make([]int64, 0, len(result.Hist)) + for _, hg := range result.Hist { + // It's normal virtual column, skip. + if hg == nil { + continue + } + histIDs = append(histIDs, hg.ID) + } + globalStatsMap[globalStatsID] = globalStatsInfo{isIndex: result.IsIndex, histIDs: histIDs, statsVersion: results.StatsVer} + } else { + for _, hg := range result.Hist { + globalStatsID := globalStatsKey{tableID: results.TableID.TableID, indexID: hg.ID} + globalStatsMap[globalStatsID] = globalStatsInfo{isIndex: result.IsIndex, histIDs: []int64{hg.ID}, statsVersion: results.StatsVer} + } + } + } + } + if err1 := statsHandle.SaveTableStatsToStorage(results, results.TableID.IsPartitionTable()); err1 != nil { + err = err1 + logutil.Logger(ctx).Error("save table stats to storage failed", zap.Error(err)) + finishJobWithLog(e.ctx, results.Job, err) + } else { + finishJobWithLog(e.ctx, results.Job, nil) + // Dump stats to historical storage. + if err := e.recordHistoricalStats(results.TableID.TableID); err != nil { + logutil.BgLogger().Error("record historical stats failed", zap.Error(err)) + } } - return err } - return errAnalyzeWorkerPanic + return err } func (e *AnalyzeExec) analyzeWorker(taskCh <-chan *analyzeTask, resultsCh chan<- *statistics.AnalyzeResults) { @@ -401,7 +288,7 @@ func (e *AnalyzeExec) analyzeWorker(taskCh <-chan *analyzeTask, resultsCh chan<- StartAnalyzeJob(e.ctx, task.job) switch task.taskType { case colTask: - resultsCh <- analyzeColumnsPushdownWithRetry(task.colExec) + resultsCh <- analyzeColumnsPushDownEntry(task.colExec) case idxTask: resultsCh <- analyzeIndexPushdown(task.idxExec) case fastTask: @@ -414,80 +301,14 @@ func (e *AnalyzeExec) analyzeWorker(taskCh <-chan *analyzeTask, resultsCh chan<- } } -func analyzeColumnsPushdownWithRetry(e *AnalyzeColumnsExec) *statistics.AnalyzeResults { - analyzeResult := analyzeColumnsPushdown(e) - // do not retry if succeed / not oom error / not auto-analyze / not v2 / samplerate not set - if analyzeResult.Err == nil || analyzeResult.Err != errAnalyzeOOM || - !e.ctx.GetSessionVars().InRestrictedSQL || e.StatsVersion != statistics.Version2 || - e.analyzePB.ColReq == nil || *e.analyzePB.ColReq.SampleRate <= 0 { - return analyzeResult - } - finishJobWithLog(e.ctx, analyzeResult.Job, analyzeResult.Err) - statsHandle := domain.GetDomain(e.ctx).StatsHandle() - if statsHandle == nil { - return analyzeResult - } - var statsTbl *statistics.Table - tid := e.tableID.GetStatisticsID() - if tid == e.tableInfo.ID { - statsTbl = statsHandle.GetTableStats(e.tableInfo) - } else { - statsTbl = statsHandle.GetPartitionStats(e.tableInfo, tid) - } - if statsTbl == nil || statsTbl.Count <= 0 { - return analyzeResult - } - newSampleRate := math.Min(1, float64(config.DefRowsForSampleRate)/float64(statsTbl.Count)) - if newSampleRate >= *e.analyzePB.ColReq.SampleRate { - return analyzeResult - } - *e.analyzePB.ColReq.SampleRate = newSampleRate - prepareV2AnalyzeJobInfo(e, true) - AddNewAnalyzeJob(e.ctx, e.job) - StartAnalyzeJob(e.ctx, e.job) - return analyzeColumnsPushdown(e) -} - -func analyzeIndexPushdown(idxExec *AnalyzeIndexExec) *statistics.AnalyzeResults { - ranges := ranger.FullRange() - // For single-column index, we do not load null rows from TiKV, so the built histogram would not include - // null values, and its `NullCount` would be set by result of another distsql call to get null rows. - // For multi-column index, we cannot define null for the rows, so we still use full range, and the rows - // containing null fields would exist in built histograms. Note that, the `NullCount` of histograms for - // multi-column index is always 0 then. - if len(idxExec.idxInfo.Columns) == 1 { - ranges = ranger.FullNotNullRange() - } - hist, cms, fms, topN, err := idxExec.buildStats(ranges, true) - if err != nil { - return &statistics.AnalyzeResults{Err: err, Job: idxExec.job} - } - var statsVer = statistics.Version1 - if idxExec.analyzePB.IdxReq.Version != nil { - statsVer = int(*idxExec.analyzePB.IdxReq.Version) - } - result := &statistics.AnalyzeResult{ - Hist: []*statistics.Histogram{hist}, - Cms: []*statistics.CMSketch{cms}, - TopNs: []*statistics.TopN{topN}, - Fms: []*statistics.FMSketch{fms}, - IsIndex: 1, - } - cnt := hist.NullCount - if hist.Len() > 0 { - cnt += hist.Buckets[hist.Len()-1].Count - } - if topN.TotalCount() > 0 { - cnt += int64(topN.TotalCount()) - } - return &statistics.AnalyzeResults{ - TableID: idxExec.tableID, - Ars: []*statistics.AnalyzeResult{result}, - Job: idxExec.job, - StatsVer: statsVer, - Count: cnt, - Snapshot: idxExec.snapshot, - } +type analyzeTask struct { + taskType taskType + idxExec *AnalyzeIndexExec + colExec *AnalyzeColumnsExec + fastExec *AnalyzeFastExec + idxIncrementalExec *analyzeIndexIncrementalExec + colIncrementalExec *analyzePKIncrementalExec + job *statistics.AnalyzeJob } type baseAnalyzeExec struct { @@ -500,1999 +321,55 @@ type baseAnalyzeExec struct { snapshot uint64 } -func analyzeIndexNDVPushDown(idxExec *AnalyzeIndexExec) *statistics.AnalyzeResults { - ranges := ranger.FullRange() - // For single-column index, we do not load null rows from TiKV, so the built histogram would not include - // null values, and its `NullCount` would be set by result of another distsql call to get null rows. - // For multi-column index, we cannot define null for the rows, so we still use full range, and the rows - // containing null fields would exist in built histograms. Note that, the `NullCount` of histograms for - // multi-column index is always 0 then. - if len(idxExec.idxInfo.Columns) == 1 { - ranges = ranger.FullNotNullRange() +// AddNewAnalyzeJob records the new analyze job. +func AddNewAnalyzeJob(ctx sessionctx.Context, job *statistics.AnalyzeJob) { + if job == nil { + return } - fms, nullHist, err := idxExec.buildSimpleStats(ranges, len(idxExec.idxInfo.Columns) == 1) + var instance string + serverInfo, err := infosync.GetServerInfo() if err != nil { - return &statistics.AnalyzeResults{Err: err, Job: idxExec.job} - } - result := &statistics.AnalyzeResult{ - Fms: []*statistics.FMSketch{fms}, - // We use histogram to get the Index's ID. - Hist: []*statistics.Histogram{statistics.NewHistogram(idxExec.idxInfo.ID, 0, 0, statistics.Version1, types.NewFieldType(mysql.TypeBlob), 0, 0)}, - IsIndex: 1, - } - r := &statistics.AnalyzeResults{ - TableID: idxExec.tableID, - Ars: []*statistics.AnalyzeResult{result}, - Job: idxExec.job, - // TODO: avoid reusing Version1. - StatsVer: statistics.Version1, + logutil.BgLogger().Error("failed to get server info", zap.Error(err)) + instance = "unknown" + } else { + instance = fmt.Sprintf("%s:%d", serverInfo.IP, serverInfo.Port) } - if nullHist != nil && nullHist.Len() > 0 { - r.Count = nullHist.Buckets[nullHist.Len()-1].Count + statsHandle := domain.GetDomain(ctx).StatsHandle() + err = statsHandle.InsertAnalyzeJob(job, instance, ctx.GetSessionVars().ConnectionID) + if err != nil { + logutil.BgLogger().Error("failed to insert analyze job", zap.Error(err)) } - return r -} - -// AnalyzeIndexExec represents analyze index push down executor. -type AnalyzeIndexExec struct { - baseAnalyzeExec - - idxInfo *model.IndexInfo - isCommonHandle bool - result distsql.SelectResult - countNullRes distsql.SelectResult } -// fetchAnalyzeResult builds and dispatches the `kv.Request` from given ranges, and stores the `SelectResult` -// in corresponding fields based on the input `isNullRange` argument, which indicates if the range is the -// special null range for single-column index to get the null count. -func (e *AnalyzeIndexExec) fetchAnalyzeResult(ranges []*ranger.Range, isNullRange bool) error { - var builder distsql.RequestBuilder - var kvReqBuilder *distsql.RequestBuilder - if e.isCommonHandle && e.idxInfo.Primary { - kvReqBuilder = builder.SetHandleRangesForTables(e.ctx.GetSessionVars().StmtCtx, []int64{e.tableID.GetStatisticsID()}, true, ranges, nil) - } else { - kvReqBuilder = builder.SetIndexRangesForTables(e.ctx.GetSessionVars().StmtCtx, []int64{e.tableID.GetStatisticsID()}, e.idxInfo.ID, ranges) - } - kvReqBuilder.SetResourceGroupTagger(e.ctx.GetSessionVars().StmtCtx.GetResourceGroupTagger()) - kvReq, err := kvReqBuilder. - SetAnalyzeRequest(e.analyzePB). - SetStartTS(e.snapshot). - SetKeepOrder(true). - SetConcurrency(e.concurrency). - Build() - if err != nil { - return err +// StartAnalyzeJob marks the state of the analyze job as running and sets the start time. +func StartAnalyzeJob(ctx sessionctx.Context, job *statistics.AnalyzeJob) { + if job == nil || job.ID == nil { + return } - ctx := context.TODO() - result, err := distsql.Analyze(ctx, e.ctx.GetClient(), kvReq, e.ctx.GetSessionVars().KVVars, e.ctx.GetSessionVars().InRestrictedSQL, e.ctx.GetSessionVars().StmtCtx) + job.StartTime = time.Now() + job.Progress.SetLastDumpTime(job.StartTime) + exec := ctx.(sqlexec.RestrictedSQLExecutor) + const sql = "UPDATE mysql.analyze_jobs SET start_time = CONVERT_TZ(%?, '+00:00', @@TIME_ZONE), state = %? WHERE id = %?" + _, _, err := exec.ExecRestrictedSQL(context.TODO(), []sqlexec.OptionFuncAlias{sqlexec.ExecOptionUseSessionPool}, sql, job.StartTime.UTC().Format(types.TimeFormat), statistics.AnalyzeRunning, *job.ID) if err != nil { - return err - } - if isNullRange { - e.countNullRes = result - } else { - e.result = result + logutil.BgLogger().Warn("failed to update analyze job", zap.String("update", fmt.Sprintf("%s->%s", statistics.AnalyzePending, statistics.AnalyzeRunning)), zap.Error(err)) } - return nil } -func (e *AnalyzeIndexExec) open(ranges []*ranger.Range, considerNull bool) error { - err := e.fetchAnalyzeResult(ranges, false) - if err != nil { - return err +// UpdateAnalyzeJob updates count of the processed rows when increment reaches a threshold. +func UpdateAnalyzeJob(ctx sessionctx.Context, job *statistics.AnalyzeJob, rowCount int64) { + if job == nil || job.ID == nil { + return } - if considerNull && len(e.idxInfo.Columns) == 1 { - ranges = ranger.NullRange() - err = e.fetchAnalyzeResult(ranges, true) - if err != nil { - return err - } - } - return nil -} - -func updateIndexResult( - ctx sessionctx.Context, - resp *tipb.AnalyzeIndexResp, - job *statistics.AnalyzeJob, - hist *statistics.Histogram, - cms *statistics.CMSketch, - fms *statistics.FMSketch, - topn *statistics.TopN, - idxInfo *model.IndexInfo, - numBuckets int, - numTopN int, - statsVer int, -) ( - *statistics.Histogram, - *statistics.CMSketch, - *statistics.FMSketch, - *statistics.TopN, - error, -) { - var err error - needCMS := cms != nil - respHist := statistics.HistogramFromProto(resp.Hist) - if job != nil { - UpdateAnalyzeJob(ctx, job, int64(respHist.TotalRowCount())) - } - hist, err = statistics.MergeHistograms(ctx.GetSessionVars().StmtCtx, hist, respHist, numBuckets, statsVer) - if err != nil { - return nil, nil, nil, nil, err - } - if needCMS { - if resp.Cms == nil { - logutil.Logger(context.TODO()).Warn("nil CMS in response", zap.String("table", idxInfo.Table.O), zap.String("index", idxInfo.Name.O)) - } else { - cm, tmpTopN := statistics.CMSketchAndTopNFromProto(resp.Cms) - if err := cms.MergeCMSketch(cm); err != nil { - return nil, nil, nil, nil, err - } - statistics.MergeTopNAndUpdateCMSketch(topn, tmpTopN, cms, uint32(numTopN)) - } - } - if fms != nil && resp.Collector != nil && resp.Collector.FmSketch != nil { - fms.MergeFMSketch(statistics.FMSketchFromProto(resp.Collector.FmSketch)) - } - return hist, cms, fms, topn, nil -} - -func (e *AnalyzeIndexExec) buildStatsFromResult(result distsql.SelectResult, needCMS bool) (*statistics.Histogram, *statistics.CMSketch, *statistics.FMSketch, *statistics.TopN, error) { - failpoint.Inject("buildStatsFromResult", func(val failpoint.Value) { - if val.(bool) { - failpoint.Return(nil, nil, nil, nil, errors.New("mock buildStatsFromResult error")) - } - }) - hist := &statistics.Histogram{} - var cms *statistics.CMSketch - var topn *statistics.TopN - if needCMS { - cms = statistics.NewCMSketch(int32(e.opts[ast.AnalyzeOptCMSketchDepth]), int32(e.opts[ast.AnalyzeOptCMSketchWidth])) - topn = statistics.NewTopN(int(e.opts[ast.AnalyzeOptNumTopN])) - } - fms := statistics.NewFMSketch(maxSketchSize) - statsVer := statistics.Version1 - if e.analyzePB.IdxReq.Version != nil { - statsVer = int(*e.analyzePB.IdxReq.Version) - } - for { - failpoint.Inject("mockKillRunningAnalyzeIndexJob", func() { - dom := domain.GetDomain(e.ctx) - dom.SysProcTracker().KillSysProcess(util.GetAutoAnalyzeProcID(dom.ServerID)) - }) - if atomic.LoadUint32(&e.ctx.GetSessionVars().Killed) == 1 { - return nil, nil, nil, nil, errors.Trace(ErrQueryInterrupted) - } - failpoint.Inject("mockSlowAnalyzeIndex", func() { - time.Sleep(1000 * time.Second) - }) - data, err := result.NextRaw(context.TODO()) - if err != nil { - return nil, nil, nil, nil, err - } - if data == nil { - break - } - resp := &tipb.AnalyzeIndexResp{} - err = resp.Unmarshal(data) - if err != nil { - return nil, nil, nil, nil, err - } - hist, cms, fms, topn, err = updateIndexResult(e.ctx, resp, e.job, hist, cms, fms, topn, - e.idxInfo, int(e.opts[ast.AnalyzeOptNumBuckets]), int(e.opts[ast.AnalyzeOptNumTopN]), statsVer) - if err != nil { - return nil, nil, nil, nil, err - } - } - if needCMS && topn.TotalCount() > 0 { - hist.RemoveVals(topn.TopN) - } - if needCMS && cms != nil { - cms.CalcDefaultValForAnalyze(uint64(hist.NDV)) - } - return hist, cms, fms, topn, nil -} - -func (e *AnalyzeIndexExec) buildStats(ranges []*ranger.Range, considerNull bool) (hist *statistics.Histogram, cms *statistics.CMSketch, fms *statistics.FMSketch, topN *statistics.TopN, err error) { - if err = e.open(ranges, considerNull); err != nil { - return nil, nil, nil, nil, err - } - defer func() { - err1 := closeAll(e.result, e.countNullRes) - if err == nil { - err = err1 - } - }() - hist, cms, fms, topN, err = e.buildStatsFromResult(e.result, true) - if err != nil { - return nil, nil, nil, nil, err - } - if e.countNullRes != nil { - nullHist, _, _, _, err := e.buildStatsFromResult(e.countNullRes, false) - if err != nil { - return nil, nil, nil, nil, err - } - if l := nullHist.Len(); l > 0 { - hist.NullCount = nullHist.Buckets[l-1].Count - } - } - hist.ID = e.idxInfo.ID - return hist, cms, fms, topN, nil -} - -func (e *AnalyzeIndexExec) buildSimpleStats(ranges []*ranger.Range, considerNull bool) (fms *statistics.FMSketch, nullHist *statistics.Histogram, err error) { - if err = e.open(ranges, considerNull); err != nil { - return nil, nil, err - } - defer func() { - err1 := closeAll(e.result, e.countNullRes) - if err == nil { - err = err1 - } - }() - _, _, fms, _, err = e.buildStatsFromResult(e.result, false) - if e.countNullRes != nil { - nullHist, _, _, _, err := e.buildStatsFromResult(e.countNullRes, false) - if err != nil { - return nil, nil, err - } - if l := nullHist.Len(); l > 0 { - return fms, nullHist, nil - } - } - return fms, nil, nil -} - -func analyzeColumnsPushdown(colExec *AnalyzeColumnsExec) *statistics.AnalyzeResults { - var ranges []*ranger.Range - if hc := colExec.handleCols; hc != nil { - if hc.IsInt() { - ranges = ranger.FullIntRange(mysql.HasUnsignedFlag(hc.GetCol(0).RetType.GetFlag())) - } else { - ranges = ranger.FullNotNullRange() - } - } else { - ranges = ranger.FullIntRange(false) - } - collExtStats := colExec.ctx.GetSessionVars().EnableExtendedStats - if colExec.StatsVersion == statistics.Version2 { - specialIndexes := make([]*model.IndexInfo, 0, len(colExec.indexes)) - specialIndexesOffsets := make([]int, 0, len(colExec.indexes)) - for i, idx := range colExec.indexes { - isSpecial := false - for _, col := range idx.Columns { - colInfo := colExec.colsInfo[col.Offset] - isVirtualCol := colInfo.IsGenerated() && !colInfo.GeneratedStored - isPrefixCol := col.Length != types.UnspecifiedLength - if isVirtualCol || isPrefixCol { - isSpecial = true - break - } - } - if isSpecial { - specialIndexesOffsets = append(specialIndexesOffsets, i) - specialIndexes = append(specialIndexes, idx) - } - } - idxNDVPushDownCh := make(chan analyzeIndexNDVTotalResult, 1) - // subIndexWorkerWg is better to be initialized in handleNDVForSpecialIndexes, however if we do so, golang would - // report unexpected/unreasonable data race error on subIndexWorkerWg when running TestAnalyzeVirtualCol test - // case with `-race` flag now. - var wg util.WaitGroupWrapper - wg.Run(func() { - colExec.handleNDVForSpecialIndexes(specialIndexes, idxNDVPushDownCh) - }) - defer wg.Wait() - count, hists, topns, fmSketches, extStats, err := colExec.buildSamplingStats(ranges, collExtStats, specialIndexesOffsets, idxNDVPushDownCh) - if err != nil { - colExec.memTracker.Consume(-colExec.memTracker.BytesConsumed()) - return &statistics.AnalyzeResults{Err: err, Job: colExec.job} - } - cLen := len(colExec.analyzePB.ColReq.ColumnsInfo) - colGroupResult := &statistics.AnalyzeResult{ - Hist: hists[cLen:], - TopNs: topns[cLen:], - Fms: fmSketches[cLen:], - IsIndex: 1, - } - // Discard stats of _tidb_rowid. - // Because the process of analyzing will keep the order of results be the same as the colsInfo in the analyze task, - // and in `buildAnalyzeFullSamplingTask` we always place the _tidb_rowid at the last of colsInfo, so if there are - // stats for _tidb_rowid, it must be at the end of the column stats. - // Virtual column has no histogram yet. So we check nil here. - if hists[cLen-1] != nil && hists[cLen-1].ID == -1 { - cLen -= 1 - } - colResult := &statistics.AnalyzeResult{ - Hist: hists[:cLen], - TopNs: topns[:cLen], - Fms: fmSketches[:cLen], - } - return &statistics.AnalyzeResults{ - TableID: colExec.tableID, - Ars: []*statistics.AnalyzeResult{colResult, colGroupResult}, - Job: colExec.job, - StatsVer: colExec.StatsVersion, - Count: count, - Snapshot: colExec.snapshot, - ExtStats: extStats, - BaseCount: colExec.baseCount, - BaseModifyCnt: colExec.baseModifyCnt, - } - } - hists, cms, topNs, fms, extStats, err := colExec.buildStats(ranges, collExtStats) - if err != nil { - return &statistics.AnalyzeResults{Err: err, Job: colExec.job} - } - - if hasPkHist(colExec.handleCols) { - PKresult := &statistics.AnalyzeResult{ - Hist: hists[:1], - Cms: cms[:1], - TopNs: topNs[:1], - Fms: fms[:1], - } - restResult := &statistics.AnalyzeResult{ - Hist: hists[1:], - Cms: cms[1:], - TopNs: topNs[1:], - Fms: fms[1:], - } - return &statistics.AnalyzeResults{ - TableID: colExec.tableID, - Ars: []*statistics.AnalyzeResult{PKresult, restResult}, - ExtStats: extStats, - Job: colExec.job, - StatsVer: colExec.StatsVersion, - Count: int64(PKresult.Hist[0].TotalRowCount()), - Snapshot: colExec.snapshot, - } - } - var ars []*statistics.AnalyzeResult - if colExec.analyzePB.Tp == tipb.AnalyzeType_TypeMixed { - ars = append(ars, &statistics.AnalyzeResult{ - Hist: []*statistics.Histogram{hists[0]}, - Cms: []*statistics.CMSketch{cms[0]}, - TopNs: []*statistics.TopN{topNs[0]}, - Fms: []*statistics.FMSketch{nil}, - IsIndex: 1, - }) - hists = hists[1:] - cms = cms[1:] - topNs = topNs[1:] - } - colResult := &statistics.AnalyzeResult{ - Hist: hists, - Cms: cms, - TopNs: topNs, - Fms: fms, - } - ars = append(ars, colResult) - cnt := int64(hists[0].TotalRowCount()) - if colExec.StatsVersion >= statistics.Version2 { - cnt += int64(topNs[0].TotalCount()) - } - return &statistics.AnalyzeResults{ - TableID: colExec.tableID, - Ars: ars, - Job: colExec.job, - StatsVer: colExec.StatsVersion, - ExtStats: extStats, - Count: cnt, - Snapshot: colExec.snapshot, - } -} - -// AnalyzeColumnsExec represents Analyze columns push down executor. -type AnalyzeColumnsExec struct { - baseAnalyzeExec - - tableInfo *model.TableInfo - colsInfo []*model.ColumnInfo - handleCols core.HandleCols - commonHandle *model.IndexInfo - resultHandler *tableResultHandler - indexes []*model.IndexInfo - core.AnalyzeInfo - - samplingBuilderWg *notifyErrorWaitGroupWrapper - samplingMergeWg *util.WaitGroupWrapper - - schemaForVirtualColEval *expression.Schema - baseCount int64 - baseModifyCnt int64 - - memTracker *memory.Tracker -} - -func (e *AnalyzeColumnsExec) open(ranges []*ranger.Range) error { - e.memTracker = memory.NewTracker(e.ctx.GetSessionVars().PlanID, -1) - e.memTracker.AttachTo(e.ctx.GetSessionVars().StmtCtx.MemTracker) - e.resultHandler = &tableResultHandler{} - firstPartRanges, secondPartRanges := distsql.SplitRangesAcrossInt64Boundary(ranges, true, false, !hasPkHist(e.handleCols)) - firstResult, err := e.buildResp(firstPartRanges) - if err != nil { - return err - } - if len(secondPartRanges) == 0 { - e.resultHandler.open(nil, firstResult) - return nil - } - var secondResult distsql.SelectResult - secondResult, err = e.buildResp(secondPartRanges) - if err != nil { - return err - } - e.resultHandler.open(firstResult, secondResult) - - return nil -} - -func (e *AnalyzeColumnsExec) buildResp(ranges []*ranger.Range) (distsql.SelectResult, error) { - var builder distsql.RequestBuilder - reqBuilder := builder.SetHandleRangesForTables(e.ctx.GetSessionVars().StmtCtx, []int64{e.TableID.GetStatisticsID()}, e.handleCols != nil && !e.handleCols.IsInt(), ranges, nil) - builder.SetResourceGroupTagger(e.ctx.GetSessionVars().StmtCtx.GetResourceGroupTagger()) - // Always set KeepOrder of the request to be true, in order to compute - // correct `correlation` of columns. - kvReq, err := reqBuilder. - SetAnalyzeRequest(e.analyzePB). - SetStartTS(e.snapshot). - SetKeepOrder(true). - SetConcurrency(e.concurrency). - SetMemTracker(e.memTracker). - Build() - if err != nil { - return nil, err - } - ctx := context.TODO() - result, err := distsql.Analyze(ctx, e.ctx.GetClient(), kvReq, e.ctx.GetSessionVars().KVVars, e.ctx.GetSessionVars().InRestrictedSQL, e.ctx.GetSessionVars().StmtCtx) - if err != nil { - return nil, err - } - return result, nil -} - -// decodeSampleDataWithVirtualColumn constructs the virtual column by evaluating from the deocded normal columns. -// If it failed, it would return false to trigger normal decoding way without the virtual column. -func (e AnalyzeColumnsExec) decodeSampleDataWithVirtualColumn( - collector statistics.RowSampleCollector, - fieldTps []*types.FieldType, - virtualColIdx []int, - schema *expression.Schema, -) error { - totFts := make([]*types.FieldType, 0, e.schemaForVirtualColEval.Len()) - for _, col := range e.schemaForVirtualColEval.Columns { - totFts = append(totFts, col.RetType) - } - chk := chunk.NewChunkWithCapacity(totFts, len(collector.Base().Samples)) - decoder := codec.NewDecoder(chk, e.ctx.GetSessionVars().Location()) - for _, sample := range collector.Base().Samples { - for i := range sample.Columns { - if schema.Columns[i].VirtualExpr != nil { - continue - } - _, err := decoder.DecodeOne(sample.Columns[i].GetBytes(), i, e.schemaForVirtualColEval.Columns[i].RetType) - if err != nil { - return err - } - } - } - err := FillVirtualColumnValue(fieldTps, virtualColIdx, schema, e.colsInfo, e.ctx, chk) - if err != nil { - return err - } - iter := chunk.NewIterator4Chunk(chk) - for row, i := iter.Begin(), 0; row != iter.End(); row, i = iter.Next(), i+1 { - datums := row.GetDatumRow(totFts) - collector.Base().Samples[i].Columns = datums - } - return nil -} - -func readDataAndSendTask(ctx sessionctx.Context, handler *tableResultHandler, mergeTaskCh chan []byte, memTracker *memory.Tracker) error { - defer close(mergeTaskCh) - for { - failpoint.Inject("mockKillRunningV2AnalyzeJob", func() { - dom := domain.GetDomain(ctx) - dom.SysProcTracker().KillSysProcess(util.GetAutoAnalyzeProcID(dom.ServerID)) - }) - if atomic.LoadUint32(&ctx.GetSessionVars().Killed) == 1 { - return errors.Trace(ErrQueryInterrupted) - } - failpoint.Inject("mockSlowAnalyzeV2", func() { - time.Sleep(1000 * time.Second) - }) - data, err := handler.nextRaw(context.TODO()) - if err != nil { - return errors.Trace(err) - } - if data == nil { - break - } - memTracker.Consume(int64(cap(data))) - mergeTaskCh <- data - } - return nil -} - -func (e *AnalyzeColumnsExec) buildSamplingStats( - ranges []*ranger.Range, - needExtStats bool, - indexesWithVirtualColOffsets []int, - idxNDVPushDownCh chan analyzeIndexNDVTotalResult, -) ( - count int64, - hists []*statistics.Histogram, - topns []*statistics.TopN, - fmSketches []*statistics.FMSketch, - extStats *statistics.ExtendedStatsColl, - err error, -) { - if err = e.open(ranges); err != nil { - return 0, nil, nil, nil, nil, err - } - defer func() { - if err1 := e.resultHandler.Close(); err1 != nil { - err = err1 - } - }() - l := len(e.analyzePB.ColReq.ColumnsInfo) + len(e.analyzePB.ColReq.ColumnGroups) - rootRowCollector := statistics.NewRowSampleCollector(int(e.analyzePB.ColReq.SampleSize), e.analyzePB.ColReq.GetSampleRate(), l) - for i := 0; i < l; i++ { - rootRowCollector.Base().FMSketches = append(rootRowCollector.Base().FMSketches, statistics.NewFMSketch(maxSketchSize)) - } - sc := e.ctx.GetSessionVars().StmtCtx - statsConcurrency, err := getBuildStatsConcurrency(e.ctx) - if err != nil { - return 0, nil, nil, nil, nil, err - } - mergeResultCh := make(chan *samplingMergeResult, statsConcurrency) - mergeTaskCh := make(chan []byte, statsConcurrency) - e.samplingMergeWg = &util.WaitGroupWrapper{} - e.samplingMergeWg.Add(statsConcurrency) - for i := 0; i < statsConcurrency; i++ { - go e.subMergeWorker(mergeResultCh, mergeTaskCh, l, i == 0) - } - if err = readDataAndSendTask(e.ctx, e.resultHandler, mergeTaskCh, e.memTracker); err != nil { - return 0, nil, nil, nil, nil, getAnalyzePanicErr(err) - } - - mergeWorkerPanicCnt := 0 - for mergeWorkerPanicCnt < statsConcurrency { - mergeResult, ok := <-mergeResultCh - if !ok { - break - } - if mergeResult.err != nil { - err = mergeResult.err - if isAnalyzeWorkerPanic(mergeResult.err) { - mergeWorkerPanicCnt++ - } - continue - } - oldRootCollectorSize := rootRowCollector.Base().MemSize - rootRowCollector.MergeCollector(mergeResult.collector) - e.memTracker.Consume(rootRowCollector.Base().MemSize - oldRootCollectorSize - mergeResult.collector.Base().MemSize) - } - if err != nil { - return 0, nil, nil, nil, nil, err - } - - // handling virtual columns - virtualColIdx := buildVirtualColumnIndex(e.schemaForVirtualColEval, e.colsInfo) - if len(virtualColIdx) > 0 { - fieldTps := make([]*types.FieldType, 0, len(virtualColIdx)) - for _, colOffset := range virtualColIdx { - fieldTps = append(fieldTps, e.schemaForVirtualColEval.Columns[colOffset].RetType) - } - err = e.decodeSampleDataWithVirtualColumn(rootRowCollector, fieldTps, virtualColIdx, e.schemaForVirtualColEval) - if err != nil { - return 0, nil, nil, nil, nil, err - } - } else { - // If there's no virtual column or we meet error during eval virtual column, we fallback to normal decode otherwise. - for _, sample := range rootRowCollector.Base().Samples { - for i := range sample.Columns { - sample.Columns[i], err = tablecodec.DecodeColumnValue(sample.Columns[i].GetBytes(), &e.colsInfo[i].FieldType, sc.TimeZone) - if err != nil { - return 0, nil, nil, nil, nil, err - } - } - } - } - - for _, sample := range rootRowCollector.Base().Samples { - // Calculate handle from the row data for each row. It will be used to sort the samples. - sample.Handle, err = e.handleCols.BuildHandleByDatums(sample.Columns) - if err != nil { - return 0, nil, nil, nil, nil, err - } - } - - colLen := len(e.colsInfo) - - // The order of the samples are broken when merging samples from sub-collectors. - // So now we need to sort the samples according to the handle in order to calculate correlation. - sort.Slice(rootRowCollector.Base().Samples, func(i, j int) bool { - return rootRowCollector.Base().Samples[i].Handle.Compare(rootRowCollector.Base().Samples[j].Handle) < 0 - }) - - totalLen := len(e.colsInfo) + len(e.indexes) - hists = make([]*statistics.Histogram, totalLen) - topns = make([]*statistics.TopN, totalLen) - fmSketches = make([]*statistics.FMSketch, 0, totalLen) - buildResultChan := make(chan error, totalLen) - buildTaskChan := make(chan *samplingBuildTask, totalLen) - if totalLen < statsConcurrency { - statsConcurrency = totalLen - } - e.samplingBuilderWg = newNotifyErrorWaitGroupWrapper(buildResultChan) - sampleCollectors := make([]*statistics.SampleCollector, len(e.colsInfo)) - exitCh := make(chan struct{}) - e.samplingBuilderWg.Add(statsConcurrency) - for i := 0; i < statsConcurrency; i++ { - e.samplingBuilderWg.Run(func() { - e.subBuildWorker(buildResultChan, buildTaskChan, hists, topns, sampleCollectors, exitCh) - }) - } - for i, col := range e.colsInfo { - buildTaskChan <- &samplingBuildTask{ - id: col.ID, - rootRowCollector: rootRowCollector, - tp: &col.FieldType, - isColumn: true, - slicePos: i, - } - fmSketches = append(fmSketches, rootRowCollector.Base().FMSketches[i]) - } - - indexPushedDownResult := <-idxNDVPushDownCh - if indexPushedDownResult.err != nil { - close(exitCh) - e.samplingBuilderWg.Wait() - return 0, nil, nil, nil, nil, indexPushedDownResult.err - } - for _, offset := range indexesWithVirtualColOffsets { - ret := indexPushedDownResult.results[e.indexes[offset].ID] - rootRowCollector.Base().NullCount[colLen+offset] = ret.Count - rootRowCollector.Base().FMSketches[colLen+offset] = ret.Ars[0].Fms[0] - } - - // build index stats - for i, idx := range e.indexes { - buildTaskChan <- &samplingBuildTask{ - id: idx.ID, - rootRowCollector: rootRowCollector, - tp: types.NewFieldType(mysql.TypeBlob), - isColumn: false, - slicePos: colLen + i, - } - fmSketches = append(fmSketches, rootRowCollector.Base().FMSketches[colLen+i]) - } - close(buildTaskChan) - panicCnt := 0 - for panicCnt < statsConcurrency { - err1, ok := <-buildResultChan - if !ok { - break - } - if err1 != nil { - err = err1 - if isAnalyzeWorkerPanic(err1) { - panicCnt++ - } - continue - } - } - if err != nil { - return 0, nil, nil, nil, nil, err - } - count = rootRowCollector.Base().Count - if needExtStats { - statsHandle := domain.GetDomain(e.ctx).StatsHandle() - extStats, err = statsHandle.BuildExtendedStats(e.TableID.GetStatisticsID(), e.colsInfo, sampleCollectors) - if err != nil { - return 0, nil, nil, nil, nil, err - } - } - totalSampleCollectorSize := int64(0) - for _, sampleCollector := range sampleCollectors { - if sampleCollector != nil { - totalSampleCollectorSize += sampleCollector.MemSize - } - } - e.memTracker.Consume(-rootRowCollector.Base().MemSize - totalSampleCollectorSize) - return -} - -type analyzeIndexNDVTotalResult struct { - results map[int64]*statistics.AnalyzeResults - err error -} - -// handleNDVForSpecialIndexes deals with the logic to analyze the index containing the virtual column when the mode is full sampling. -func (e *AnalyzeColumnsExec) handleNDVForSpecialIndexes(indexInfos []*model.IndexInfo, totalResultCh chan analyzeIndexNDVTotalResult) { - defer func() { - if r := recover(); r != nil { - logutil.BgLogger().Error("analyze ndv for special index panicked", zap.Any("recover", r), zap.Stack("stack")) - metrics.PanicCounter.WithLabelValues(metrics.LabelAnalyze).Inc() - totalResultCh <- analyzeIndexNDVTotalResult{ - err: getAnalyzePanicErr(r), - } - } - }() - tasks := e.buildSubIndexJobForSpecialIndex(indexInfos) - statsConcurrncy, err := getBuildStatsConcurrency(e.ctx) - taskCh := make(chan *analyzeTask, len(tasks)) - for _, task := range tasks { - AddNewAnalyzeJob(e.ctx, task.job) - } - resultsCh := make(chan *statistics.AnalyzeResults, len(tasks)) - if len(tasks) < statsConcurrncy { - statsConcurrncy = len(tasks) - } - var subIndexWorkerWg = NewAnalyzeResultsNotifyWaitGroupWrapper(resultsCh) - subIndexWorkerWg.Add(statsConcurrncy) - for i := 0; i < statsConcurrncy; i++ { - subIndexWorkerWg.Run(func() { e.subIndexWorkerForNDV(taskCh, resultsCh) }) - } - for _, task := range tasks { - taskCh <- task - } - close(taskCh) - panicCnt := 0 - totalResult := analyzeIndexNDVTotalResult{ - results: make(map[int64]*statistics.AnalyzeResults, len(indexInfos)), - } - for panicCnt < statsConcurrncy { - results, ok := <-resultsCh - if !ok { - break - } - if results.Err != nil { - err = results.Err - FinishAnalyzeJob(e.ctx, results.Job, err) - if isAnalyzeWorkerPanic(err) { - panicCnt++ - } - continue - } - FinishAnalyzeJob(e.ctx, results.Job, nil) - totalResult.results[results.Ars[0].Hist[0].ID] = results - } - if err != nil { - totalResult.err = err - } - totalResultCh <- totalResult -} - -// subIndexWorker receive the task for each index and return the result for them. -func (e *AnalyzeColumnsExec) subIndexWorkerForNDV(taskCh chan *analyzeTask, resultsCh chan *statistics.AnalyzeResults) { - var task *analyzeTask - defer func() { - if r := recover(); r != nil { - logutil.BgLogger().Error("analyze worker panicked", zap.Any("recover", r), zap.Stack("stack")) - metrics.PanicCounter.WithLabelValues(metrics.LabelAnalyze).Inc() - resultsCh <- &statistics.AnalyzeResults{ - Err: getAnalyzePanicErr(r), - Job: task.job, - } - } - }() - for { - var ok bool - task, ok = <-taskCh - if !ok { - break - } - StartAnalyzeJob(e.ctx, task.job) - if task.taskType != idxTask { - resultsCh <- &statistics.AnalyzeResults{ - Err: errors.Errorf("incorrect analyze type"), - Job: task.job, - } - continue - } - task.idxExec.job = task.job - resultsCh <- analyzeIndexNDVPushDown(task.idxExec) - } -} - -// buildSubIndexJobForSpecialIndex builds sub index pushed down task to calculate the NDV information for indexes containing virtual column. -// This is because we cannot push the calculation of the virtual column down to the tikv side. -func (e *AnalyzeColumnsExec) buildSubIndexJobForSpecialIndex(indexInfos []*model.IndexInfo) []*analyzeTask { - _, offset := timeutil.Zone(e.ctx.GetSessionVars().Location()) - tasks := make([]*analyzeTask, 0, len(indexInfos)) - sc := e.ctx.GetSessionVars().StmtCtx - for _, indexInfo := range indexInfos { - base := baseAnalyzeExec{ - ctx: e.ctx, - tableID: e.TableID, - concurrency: e.ctx.GetSessionVars().IndexSerialScanConcurrency(), - analyzePB: &tipb.AnalyzeReq{ - Tp: tipb.AnalyzeType_TypeIndex, - Flags: sc.PushDownFlags(), - TimeZoneOffset: offset, - }, - snapshot: e.snapshot, - } - idxExec := &AnalyzeIndexExec{ - baseAnalyzeExec: base, - isCommonHandle: e.tableInfo.IsCommonHandle, - idxInfo: indexInfo, - } - idxExec.opts = make(map[ast.AnalyzeOptionType]uint64, len(ast.AnalyzeOptionString)) - idxExec.opts[ast.AnalyzeOptNumTopN] = 0 - idxExec.opts[ast.AnalyzeOptCMSketchDepth] = 0 - idxExec.opts[ast.AnalyzeOptCMSketchWidth] = 0 - idxExec.opts[ast.AnalyzeOptNumSamples] = 0 - idxExec.opts[ast.AnalyzeOptNumBuckets] = 1 - statsVersion := new(int32) - *statsVersion = statistics.Version1 - // No Top-N - topnSize := int32(0) - idxExec.analyzePB.IdxReq = &tipb.AnalyzeIndexReq{ - // One bucket to store the null for null histogram. - BucketSize: 1, - NumColumns: int32(len(indexInfo.Columns)), - TopNSize: &topnSize, - Version: statsVersion, - SketchSize: maxSketchSize, - } - if idxExec.isCommonHandle && indexInfo.Primary { - idxExec.analyzePB.Tp = tipb.AnalyzeType_TypeCommonHandle - } - // No CM-Sketch. - depth := int32(0) - width := int32(0) - idxExec.analyzePB.IdxReq.CmsketchDepth = &depth - idxExec.analyzePB.IdxReq.CmsketchWidth = &width - autoAnalyze := "" - if e.ctx.GetSessionVars().InRestrictedSQL { - autoAnalyze = "auto " - } - job := &statistics.AnalyzeJob{DBName: e.job.DBName, TableName: e.job.TableName, PartitionName: e.job.PartitionName, JobInfo: autoAnalyze + "analyze ndv for index " + indexInfo.Name.O} - idxExec.job = job - tasks = append(tasks, &analyzeTask{ - taskType: idxTask, - idxExec: idxExec, - job: job, - }) - } - return tasks -} - -type samplingMergeResult struct { - collector statistics.RowSampleCollector - err error -} - -func (e *AnalyzeColumnsExec) subMergeWorker(resultCh chan<- *samplingMergeResult, taskCh <-chan []byte, l int, isClosedChanThread bool) { - defer func() { - if r := recover(); r != nil { - logutil.BgLogger().Error("analyze worker panicked", zap.Any("recover", r), zap.Stack("stack")) - metrics.PanicCounter.WithLabelValues(metrics.LabelAnalyze).Inc() - resultCh <- &samplingMergeResult{err: getAnalyzePanicErr(r)} - } - // Consume the remaining things. - for { - _, ok := <-taskCh - if !ok { - break - } - } - e.samplingMergeWg.Done() - if isClosedChanThread { - e.samplingMergeWg.Wait() - close(resultCh) - } - }() - failpoint.Inject("mockAnalyzeSamplingMergeWorkerPanic", func() { - panic("failpoint triggered") - }) - retCollector := statistics.NewRowSampleCollector(int(e.analyzePB.ColReq.SampleSize), e.analyzePB.ColReq.GetSampleRate(), l) - for i := 0; i < l; i++ { - retCollector.Base().FMSketches = append(retCollector.Base().FMSketches, statistics.NewFMSketch(maxSketchSize)) - } - for { - data, ok := <-taskCh - if !ok { - break - } - dataSize := int64(cap(data)) - colResp := &tipb.AnalyzeColumnsResp{} - err := colResp.Unmarshal(data) - if err != nil { - resultCh <- &samplingMergeResult{err: err} - return - } - colRespSize := int64(colResp.Size()) - e.memTracker.Consume(colRespSize) - subCollector := statistics.NewRowSampleCollector(int(e.analyzePB.ColReq.SampleSize), e.analyzePB.ColReq.GetSampleRate(), l) - subCollector.Base().FromProto(colResp.RowCollector, e.memTracker) - UpdateAnalyzeJob(e.ctx, e.job, subCollector.Base().Count) - oldRetCollectorSize := retCollector.Base().MemSize - retCollector.MergeCollector(subCollector) - newRetCollectorSize := retCollector.Base().MemSize - subCollectorSize := subCollector.Base().MemSize - e.memTracker.Consume(newRetCollectorSize - dataSize - colRespSize - oldRetCollectorSize - subCollectorSize) - } - resultCh <- &samplingMergeResult{collector: retCollector} -} - -type samplingBuildTask struct { - id int64 - rootRowCollector statistics.RowSampleCollector - tp *types.FieldType - isColumn bool - slicePos int -} - -func (e *AnalyzeColumnsExec) subBuildWorker(resultCh chan error, taskCh chan *samplingBuildTask, hists []*statistics.Histogram, topns []*statistics.TopN, collectors []*statistics.SampleCollector, exitCh chan struct{}) { - defer func() { - if r := recover(); r != nil { - logutil.BgLogger().Error("analyze worker panicked", zap.Any("recover", r), zap.Stack("stack")) - metrics.PanicCounter.WithLabelValues(metrics.LabelAnalyze).Inc() - resultCh <- getAnalyzePanicErr(r) - } - }() - failpoint.Inject("mockAnalyzeSamplingBuildWorkerPanic", func() { - panic("failpoint triggered") - }) - colLen := len(e.colsInfo) -workLoop: - for { - select { - case task, ok := <-taskCh: - if !ok { - break workLoop - } - var collector *statistics.SampleCollector - if task.isColumn { - if e.colsInfo[task.slicePos].IsGenerated() && !e.colsInfo[task.slicePos].GeneratedStored { - hists[task.slicePos] = nil - topns[task.slicePos] = nil - continue - } - sampleNum := task.rootRowCollector.Base().Samples.Len() - sampleItems := make([]*statistics.SampleItem, 0, sampleNum) - // consume mandatory memory at the beginning, including empty SampleItems of all sample rows, if exceeds, fast fail - collectorMemSize := int64(sampleNum) * (8 + statistics.EmptySampleItemSize) - e.memTracker.Consume(collectorMemSize) - bufferedMemSize := int64(0) - var collator collate.Collator - ft := e.colsInfo[task.slicePos].FieldType - // When it's new collation data, we need to use its collate key instead of original value because only - // the collate key can ensure the correct ordering. - // This is also corresponding to similar operation in (*statistics.Column).GetColumnRowCount(). - if ft.EvalType() == types.ETString && ft.GetType() != mysql.TypeEnum && ft.GetType() != mysql.TypeSet { - collator = collate.GetCollator(ft.GetCollate()) - } - for j, row := range task.rootRowCollector.Base().Samples { - if row.Columns[task.slicePos].IsNull() { - continue - } - val := row.Columns[task.slicePos] - // If this value is very big, we think that it is not a value that can occur many times. So we don't record it. - if len(val.GetBytes()) > statistics.MaxSampleValueLength { - continue - } - if collator != nil { - val.SetBytes(collator.Key(val.GetString())) - deltaSize := int64(cap(val.GetBytes())) - collectorMemSize += deltaSize - e.memTracker.BufferedConsume(&bufferedMemSize, deltaSize) - } - sampleItems = append(sampleItems, &statistics.SampleItem{ - Value: val, - Ordinal: j, - }) - } - e.memTracker.Consume(bufferedMemSize) - collector = &statistics.SampleCollector{ - Samples: sampleItems, - NullCount: task.rootRowCollector.Base().NullCount[task.slicePos], - Count: task.rootRowCollector.Base().Count - task.rootRowCollector.Base().NullCount[task.slicePos], - FMSketch: task.rootRowCollector.Base().FMSketches[task.slicePos], - TotalSize: task.rootRowCollector.Base().TotalSizes[task.slicePos], - MemSize: collectorMemSize, - } - } else { - var tmpDatum types.Datum - var err error - idx := e.indexes[task.slicePos-colLen] - sampleNum := task.rootRowCollector.Base().Samples.Len() - sampleItems := make([]*statistics.SampleItem, 0, sampleNum) - // consume mandatory memory at the beginning, including all SampleItems, if exceeds, fast fail - // 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) - indexSampleCollectLoop: - for _, row := range task.rootRowCollector.Base().Samples { - if len(idx.Columns) == 1 && row.Columns[idx.Columns[0].Offset].IsNull() { - continue - } - b := make([]byte, 0, 8) - for _, col := range idx.Columns { - // If the index value contains one value which is too long, we think that it's a value that doesn't occur many times. - if len(row.Columns[col.Offset].GetBytes()) > statistics.MaxSampleValueLength { - continue indexSampleCollectLoop - } - 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) - if err != nil { - resultCh <- err - continue workLoop - } - continue - } - b, err = codec.EncodeKey(e.ctx.GetSessionVars().StmtCtx, b, row.Columns[col.Offset]) - if err != nil { - resultCh <- err - continue workLoop - } - } - sampleItems = append(sampleItems, &statistics.SampleItem{ - Value: types.NewBytesDatum(b), - }) - } - collector = &statistics.SampleCollector{ - Samples: sampleItems, - NullCount: task.rootRowCollector.Base().NullCount[task.slicePos], - Count: task.rootRowCollector.Base().Count - task.rootRowCollector.Base().NullCount[task.slicePos], - FMSketch: task.rootRowCollector.Base().FMSketches[task.slicePos], - TotalSize: task.rootRowCollector.Base().TotalSizes[task.slicePos], - MemSize: collectorMemSize, - } - } - if task.isColumn { - collectors[task.slicePos] = collector - } - releaseCollectorMemory := func() { - if !task.isColumn { - e.memTracker.Consume(-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) - if err != nil { - resultCh <- err - releaseCollectorMemory() - continue - } - finalMemSize := hist.MemoryUsage() + topn.MemoryUsage() - e.memTracker.Consume(finalMemSize) - hists[task.slicePos] = hist - topns[task.slicePos] = topn - resultCh <- nil - releaseCollectorMemory() - case <-exitCh: - return - } - } -} - -func (e *AnalyzeColumnsExec) buildStats(ranges []*ranger.Range, needExtStats bool) (hists []*statistics.Histogram, cms []*statistics.CMSketch, topNs []*statistics.TopN, fms []*statistics.FMSketch, extStats *statistics.ExtendedStatsColl, err error) { - if err = e.open(ranges); err != nil { - return nil, nil, nil, nil, nil, err - } - defer func() { - if err1 := e.resultHandler.Close(); err1 != nil { - hists = nil - cms = nil - extStats = nil - err = err1 - } - }() - var handleHist *statistics.Histogram - var handleCms *statistics.CMSketch - var handleFms *statistics.FMSketch - var handleTopn *statistics.TopN - statsVer := statistics.Version1 - if e.analyzePB.Tp == tipb.AnalyzeType_TypeMixed { - handleHist = &statistics.Histogram{} - handleCms = statistics.NewCMSketch(int32(e.opts[ast.AnalyzeOptCMSketchDepth]), int32(e.opts[ast.AnalyzeOptCMSketchWidth])) - handleTopn = statistics.NewTopN(int(e.opts[ast.AnalyzeOptNumTopN])) - handleFms = statistics.NewFMSketch(maxSketchSize) - if e.analyzePB.IdxReq.Version != nil { - statsVer = int(*e.analyzePB.IdxReq.Version) - } - } - pkHist := &statistics.Histogram{} - collectors := make([]*statistics.SampleCollector, len(e.colsInfo)) - for i := range collectors { - collectors[i] = &statistics.SampleCollector{ - IsMerger: true, - FMSketch: statistics.NewFMSketch(maxSketchSize), - MaxSampleSize: int64(e.opts[ast.AnalyzeOptNumSamples]), - CMSketch: statistics.NewCMSketch(int32(e.opts[ast.AnalyzeOptCMSketchDepth]), int32(e.opts[ast.AnalyzeOptCMSketchWidth])), - } - } - for { - failpoint.Inject("mockKillRunningV1AnalyzeJob", func() { - dom := domain.GetDomain(e.ctx) - dom.SysProcTracker().KillSysProcess(util.GetAutoAnalyzeProcID(dom.ServerID)) - }) - if atomic.LoadUint32(&e.ctx.GetSessionVars().Killed) == 1 { - return nil, nil, nil, nil, nil, errors.Trace(ErrQueryInterrupted) - } - failpoint.Inject("mockSlowAnalyzeV1", func() { - time.Sleep(1000 * time.Second) - }) - data, err1 := e.resultHandler.nextRaw(context.TODO()) - if err1 != nil { - return nil, nil, nil, nil, nil, err1 - } - if data == nil { - break - } - var colResp *tipb.AnalyzeColumnsResp - if e.analyzePB.Tp == tipb.AnalyzeType_TypeMixed { - resp := &tipb.AnalyzeMixedResp{} - err = resp.Unmarshal(data) - if err != nil { - return nil, nil, nil, nil, nil, err - } - colResp = resp.ColumnsResp - handleHist, handleCms, handleFms, handleTopn, err = updateIndexResult(e.ctx, resp.IndexResp, nil, handleHist, - handleCms, handleFms, handleTopn, e.commonHandle, int(e.opts[ast.AnalyzeOptNumBuckets]), - int(e.opts[ast.AnalyzeOptNumTopN]), statsVer) - - if err != nil { - return nil, nil, nil, nil, nil, err - } - } else { - colResp = &tipb.AnalyzeColumnsResp{} - err = colResp.Unmarshal(data) - } - sc := e.ctx.GetSessionVars().StmtCtx - rowCount := int64(0) - if hasPkHist(e.handleCols) { - respHist := statistics.HistogramFromProto(colResp.PkHist) - rowCount = int64(respHist.TotalRowCount()) - pkHist, err = statistics.MergeHistograms(sc, pkHist, respHist, int(e.opts[ast.AnalyzeOptNumBuckets]), statistics.Version1) - if err != nil { - return nil, nil, nil, nil, nil, err - } - } - for i, rc := range colResp.Collectors { - respSample := statistics.SampleCollectorFromProto(rc) - rowCount = respSample.Count + respSample.NullCount - collectors[i].MergeSampleCollector(sc, respSample) - } - UpdateAnalyzeJob(e.ctx, e.job, rowCount) - } - timeZone := e.ctx.GetSessionVars().Location() - if hasPkHist(e.handleCols) { - pkInfo := e.handleCols.GetCol(0) - pkHist.ID = pkInfo.ID - err = pkHist.DecodeTo(pkInfo.RetType, timeZone) - if err != nil { - return nil, nil, nil, nil, nil, err - } - hists = append(hists, pkHist) - cms = append(cms, nil) - topNs = append(topNs, nil) - fms = append(fms, nil) - } - for i, col := range e.colsInfo { - if e.StatsVersion < 2 { - // In analyze version 2, we don't collect TopN this way. We will collect TopN from samples in `BuildColumnHistAndTopN()` below. - err := collectors[i].ExtractTopN(uint32(e.opts[ast.AnalyzeOptNumTopN]), e.ctx.GetSessionVars().StmtCtx, &col.FieldType, timeZone) - if err != nil { - return nil, nil, nil, nil, nil, err - } - topNs = append(topNs, collectors[i].TopN) - } - for j, s := range collectors[i].Samples { - collectors[i].Samples[j].Ordinal = j - collectors[i].Samples[j].Value, err = tablecodec.DecodeColumnValue(s.Value.GetBytes(), &col.FieldType, timeZone) - if err != nil { - return nil, nil, nil, nil, nil, err - } - // When collation is enabled, we store the Key representation of the sampling data. So we set it to kind `Bytes` here - // to avoid to convert it to its Key representation once more. - if collectors[i].Samples[j].Value.Kind() == types.KindString { - collectors[i].Samples[j].Value.SetBytes(collectors[i].Samples[j].Value.GetBytes()) - } - } - var hg *statistics.Histogram - var err error - var topn *statistics.TopN - 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) - topNs = append(topNs, topn) - } - if err != nil { - return nil, nil, nil, nil, nil, err - } - hists = append(hists, hg) - collectors[i].CMSketch.CalcDefaultValForAnalyze(uint64(hg.NDV)) - cms = append(cms, collectors[i].CMSketch) - fms = append(fms, collectors[i].FMSketch) - } - if needExtStats { - statsHandle := domain.GetDomain(e.ctx).StatsHandle() - extStats, err = statsHandle.BuildExtendedStats(e.TableID.GetStatisticsID(), e.colsInfo, collectors) - if err != nil { - return nil, nil, nil, nil, nil, err - } - } - if handleHist != nil { - handleHist.ID = e.commonHandle.ID - if handleTopn != nil && handleTopn.TotalCount() > 0 { - handleHist.RemoveVals(handleTopn.TopN) - } - if handleCms != nil { - handleCms.CalcDefaultValForAnalyze(uint64(handleHist.NDV)) - } - hists = append([]*statistics.Histogram{handleHist}, hists...) - cms = append([]*statistics.CMSketch{handleCms}, cms...) - fms = append([]*statistics.FMSketch{handleFms}, fms...) - topNs = append([]*statistics.TopN{handleTopn}, topNs...) - } - return hists, cms, topNs, fms, extStats, nil -} - -func hasPkHist(handleCols core.HandleCols) bool { - return handleCols != nil && handleCols.IsInt() -} - -func pkColsCount(handleCols core.HandleCols) int { - if handleCols == nil { - return 0 - } - return handleCols.NumCols() -} - -var ( - fastAnalyzeHistogramSample = metrics.FastAnalyzeHistogram.WithLabelValues(metrics.LblGeneral, "sample") - fastAnalyzeHistogramAccessRegions = metrics.FastAnalyzeHistogram.WithLabelValues(metrics.LblGeneral, "access_regions") - fastAnalyzeHistogramScanKeys = metrics.FastAnalyzeHistogram.WithLabelValues(metrics.LblGeneral, "scan_keys") -) - -func analyzeFastExec(exec *AnalyzeFastExec) *statistics.AnalyzeResults { - hists, cms, topNs, fms, err := exec.buildStats() - if err != nil { - return &statistics.AnalyzeResults{Err: err, Job: exec.job} - } - var results []*statistics.AnalyzeResult - pkColCount := pkColsCount(exec.handleCols) - if len(exec.idxsInfo) > 0 { - idxResult := &statistics.AnalyzeResult{ - Hist: hists[pkColCount+len(exec.colsInfo):], - Cms: cms[pkColCount+len(exec.colsInfo):], - TopNs: topNs[pkColCount+len(exec.colsInfo):], - Fms: fms[pkColCount+len(exec.colsInfo):], - IsIndex: 1, - } - results = append(results, idxResult) - } - colResult := &statistics.AnalyzeResult{ - Hist: hists[:pkColCount+len(exec.colsInfo)], - Cms: cms[:pkColCount+len(exec.colsInfo)], - TopNs: topNs[:pkColCount+len(exec.colsInfo)], - Fms: fms[:pkColCount+len(exec.colsInfo)], - } - results = append(results, colResult) - hist := hists[0] - cnt := hist.NullCount - if hist.Len() > 0 { - cnt += hist.Buckets[hist.Len()-1].Count - } - if exec.rowCount != 0 { - cnt = exec.rowCount - } - return &statistics.AnalyzeResults{ - TableID: exec.tableID, - Ars: results, - Job: exec.job, - StatsVer: statistics.Version1, - Count: cnt, - Snapshot: exec.snapshot, - } -} - -// AnalyzeFastExec represents Fast Analyze executor. -type AnalyzeFastExec struct { - baseAnalyzeExec - handleCols core.HandleCols - colsInfo []*model.ColumnInfo - idxsInfo []*model.IndexInfo - tblInfo *model.TableInfo - cache *tikv.RegionCache - wg *sync.WaitGroup - rowCount int64 - sampCursor int32 - sampTasks []*tikv.KeyLocation - scanTasks []*tikv.KeyLocation - collectors []*statistics.SampleCollector - randSeed int64 - estSampStep uint32 -} - -func (e *AnalyzeFastExec) calculateEstimateSampleStep() (err error) { - exec := e.ctx.(sqlexec.RestrictedSQLExecutor) - rows, _, err := exec.ExecRestrictedSQL(context.TODO(), nil, "select flag from mysql.stats_histograms where table_id = %?", e.tableID.GetStatisticsID()) - if err != nil { - return - } - var historyRowCount uint64 - hasBeenAnalyzed := len(rows) != 0 && rows[0].GetInt64(0) == statistics.AnalyzeFlag - if hasBeenAnalyzed { - historyRowCount = uint64(domain.GetDomain(e.ctx).StatsHandle().GetPartitionStats(e.tblInfo, e.tableID.GetStatisticsID()).Count) - } else { - dbInfo, ok := domain.GetDomain(e.ctx).InfoSchema().SchemaByTable(e.tblInfo) - if !ok { - err = errors.Errorf("database not found for table '%s'", e.tblInfo.Name) - return - } - var rollbackFn func() error - rollbackFn, err = e.activateTxnForRowCount() - if err != nil { - return - } - defer func() { - if rollbackFn != nil { - err = rollbackFn() - } - }() - sql := new(strings.Builder) - sqlexec.MustFormatSQL(sql, "select count(*) from %n.%n", dbInfo.Name.L, e.tblInfo.Name.L) - - if e.tblInfo.ID != e.tableID.GetStatisticsID() { - for _, definition := range e.tblInfo.Partition.Definitions { - if definition.ID == e.tableID.GetStatisticsID() { - sqlexec.MustFormatSQL(sql, " partition(%n)", definition.Name.L) - break - } - } - } - var rs sqlexec.RecordSet - rs, err = e.ctx.(sqlexec.SQLExecutor).ExecuteInternal(context.TODO(), sql.String()) - if err != nil { - return - } - if rs == nil { - err = errors.Trace(errors.Errorf("empty record set")) - return - } - defer terror.Call(rs.Close) - chk := rs.NewChunk(nil) - err = rs.Next(context.TODO(), chk) - if err != nil { - return - } - e.rowCount = chk.GetRow(0).GetInt64(0) - historyRowCount = uint64(e.rowCount) - } - totalSampSize := e.opts[ast.AnalyzeOptNumSamples] - e.estSampStep = uint32(historyRowCount / totalSampSize) - return -} - -func (e *AnalyzeFastExec) activateTxnForRowCount() (rollbackFn func() error, err error) { - txn, err := e.ctx.Txn(true) - if err != nil { - if kv.ErrInvalidTxn.Equal(err) { - _, err := e.ctx.(sqlexec.SQLExecutor).ExecuteInternal(context.TODO(), "begin") - if err != nil { - return nil, errors.Trace(err) - } - rollbackFn = func() error { - _, err := e.ctx.(sqlexec.SQLExecutor).ExecuteInternal(context.TODO(), "rollback") - return err - } - } else { - return nil, errors.Trace(err) - } - } - txn.SetOption(kv.Priority, kv.PriorityLow) - txn.SetOption(kv.IsolationLevel, kv.SI) - txn.SetOption(kv.NotFillCache, true) - return rollbackFn, nil -} - -// buildSampTask build sample tasks. -func (e *AnalyzeFastExec) buildSampTask() (err error) { - bo := tikv.NewBackofferWithVars(context.Background(), 500, nil) - store, _ := e.ctx.GetStore().(tikv.Storage) - e.cache = store.GetRegionCache() - accessRegionsCounter := 0 - pid := e.tableID.GetStatisticsID() - startKey, endKey := tablecodec.GetTableHandleKeyRange(pid) - targetKey := startKey - for { - // Search for the region which contains the targetKey. - loc, err := e.cache.LocateKey(bo, targetKey) - if err != nil { - return derr.ToTiDBErr(err) - } - if bytes.Compare(endKey, loc.StartKey) < 0 { - break - } - accessRegionsCounter++ - - // Set the next search key. - targetKey = loc.EndKey - - // If the KV pairs in the region all belonging to the table, add it to the sample task. - if bytes.Compare(startKey, loc.StartKey) <= 0 && len(loc.EndKey) != 0 && bytes.Compare(loc.EndKey, endKey) <= 0 { - e.sampTasks = append(e.sampTasks, loc) - continue - } - - e.scanTasks = append(e.scanTasks, loc) - if bytes.Compare(loc.StartKey, startKey) < 0 { - loc.StartKey = startKey - } - if bytes.Compare(endKey, loc.EndKey) < 0 || len(loc.EndKey) == 0 { - loc.EndKey = endKey - break - } - } - fastAnalyzeHistogramAccessRegions.Observe(float64(accessRegionsCounter)) - - return nil -} - -func (e *AnalyzeFastExec) decodeValues(handle kv.Handle, sValue []byte, wantCols map[int64]*types.FieldType) (values map[int64]types.Datum, err error) { - loc := e.ctx.GetSessionVars().Location() - values, err = tablecodec.DecodeRowToDatumMap(sValue, wantCols, loc) - if err != nil || e.handleCols == nil { - return values, err - } - wantCols = make(map[int64]*types.FieldType, e.handleCols.NumCols()) - handleColIDs := make([]int64, e.handleCols.NumCols()) - for i := 0; i < e.handleCols.NumCols(); i++ { - c := e.handleCols.GetCol(i) - handleColIDs[i] = c.ID - wantCols[c.ID] = c.RetType - } - return tablecodec.DecodeHandleToDatumMap(handle, handleColIDs, wantCols, loc, values) -} - -func (e *AnalyzeFastExec) getValueByInfo(colInfo *model.ColumnInfo, values map[int64]types.Datum) (types.Datum, error) { - val, ok := values[colInfo.ID] - if !ok { - return table.GetColOriginDefaultValue(e.ctx, colInfo) - } - return val, nil -} - -func (e *AnalyzeFastExec) updateCollectorSamples(sValue []byte, sKey kv.Key, samplePos int32) (err error) { - var handle kv.Handle - handle, err = tablecodec.DecodeRowKey(sKey) - if err != nil { - return err - } - - // Decode cols for analyze table - wantCols := make(map[int64]*types.FieldType, len(e.colsInfo)) - for _, col := range e.colsInfo { - wantCols[col.ID] = &col.FieldType - } - - // Pre-build index->cols relationship and refill wantCols if not exists(analyze index) - index2Cols := make([][]*model.ColumnInfo, len(e.idxsInfo)) - for i, idxInfo := range e.idxsInfo { - for _, idxCol := range idxInfo.Columns { - colInfo := e.tblInfo.Columns[idxCol.Offset] - index2Cols[i] = append(index2Cols[i], colInfo) - wantCols[colInfo.ID] = &colInfo.FieldType - } - } - - // Decode the cols value in order. - var values map[int64]types.Datum - values, err = e.decodeValues(handle, sValue, wantCols) - if err != nil { - return err - } - // Update the primary key collector. - pkColsCount := pkColsCount(e.handleCols) - for i := 0; i < pkColsCount; i++ { - col := e.handleCols.GetCol(i) - v, ok := values[col.ID] - if !ok { - return errors.Trace(errors.Errorf("Primary key column not found")) - } - if e.collectors[i].Samples[samplePos] == nil { - e.collectors[i].Samples[samplePos] = &statistics.SampleItem{} - } - e.collectors[i].Samples[samplePos].Handle = handle - e.collectors[i].Samples[samplePos].Value = v - } - - // Update the columns' collectors. - for j, colInfo := range e.colsInfo { - v, err := e.getValueByInfo(colInfo, values) - if err != nil { - return err - } - if e.collectors[pkColsCount+j].Samples[samplePos] == nil { - e.collectors[pkColsCount+j].Samples[samplePos] = &statistics.SampleItem{} - } - e.collectors[pkColsCount+j].Samples[samplePos].Handle = handle - e.collectors[pkColsCount+j].Samples[samplePos].Value = v - } - // Update the indexes' collectors. - for j, idxInfo := range e.idxsInfo { - idxVals := make([]types.Datum, 0, len(idxInfo.Columns)) - cols := index2Cols[j] - for _, colInfo := range cols { - v, err := e.getValueByInfo(colInfo, values) - if err != nil { - return err - } - idxVals = append(idxVals, v) - } - var keyBytes []byte - keyBytes, err = codec.EncodeKey(e.ctx.GetSessionVars().StmtCtx, keyBytes, idxVals...) - if err != nil { - return err - } - if e.collectors[len(e.colsInfo)+pkColsCount+j].Samples[samplePos] == nil { - e.collectors[len(e.colsInfo)+pkColsCount+j].Samples[samplePos] = &statistics.SampleItem{} - } - e.collectors[len(e.colsInfo)+pkColsCount+j].Samples[samplePos].Handle = handle - e.collectors[len(e.colsInfo)+pkColsCount+j].Samples[samplePos].Value = types.NewBytesDatum(keyBytes) - } - return nil -} - -func (e *AnalyzeFastExec) handleBatchSeekResponse(kvMap map[string][]byte) (err error) { - length := int32(len(kvMap)) - newCursor := atomic.AddInt32(&e.sampCursor, length) - samplePos := newCursor - length - for sKey, sValue := range kvMap { - exceedNeededSampleCounts := uint64(samplePos) >= e.opts[ast.AnalyzeOptNumSamples] - if exceedNeededSampleCounts { - atomic.StoreInt32(&e.sampCursor, int32(e.opts[ast.AnalyzeOptNumSamples])) - break - } - err = e.updateCollectorSamples(sValue, kv.Key(sKey), samplePos) - if err != nil { - return err - } - samplePos++ - } - return nil -} - -func (e *AnalyzeFastExec) handleScanIter(iter kv.Iterator) (scanKeysSize int, err error) { - rander := rand.New(rand.NewSource(e.randSeed)) // #nosec G404 - sampleSize := int64(e.opts[ast.AnalyzeOptNumSamples]) - for ; iter.Valid() && err == nil; err = iter.Next() { - // reservoir sampling - scanKeysSize++ - randNum := rander.Int63n(int64(e.sampCursor) + int64(scanKeysSize)) - if randNum > sampleSize && e.sampCursor == int32(sampleSize) { - continue - } - - p := rander.Int31n(int32(sampleSize)) - if e.sampCursor < int32(sampleSize) { - p = e.sampCursor - e.sampCursor++ - } - - err = e.updateCollectorSamples(iter.Value(), iter.Key(), p) - if err != nil { - return - } - } - return -} - -func (e *AnalyzeFastExec) handleScanTasks(bo *tikv.Backoffer) (keysSize int, err error) { - snapshot := e.ctx.GetStore().GetSnapshot(kv.NewVersion(e.snapshot)) - snapshot.SetOption(kv.IsolationLevel, kv.SI) - if e.ctx.GetSessionVars().GetReplicaRead().IsFollowerRead() { - snapshot.SetOption(kv.ReplicaRead, kv.ReplicaReadFollower) - } - setOptionForTopSQL(e.ctx.GetSessionVars().StmtCtx, snapshot) - for _, t := range e.scanTasks { - iter, err := snapshot.Iter(kv.Key(t.StartKey), kv.Key(t.EndKey)) - if err != nil { - return keysSize, err - } - size, err := e.handleScanIter(iter) - keysSize += size - if err != nil { - return keysSize, err - } - } - return keysSize, nil -} - -func (e *AnalyzeFastExec) handleSampTasks(workID int, step uint32, err *error) { - defer e.wg.Done() - snapshot := e.ctx.GetStore().GetSnapshot(kv.NewVersion(e.snapshot)) - snapshot.SetOption(kv.NotFillCache, true) - snapshot.SetOption(kv.IsolationLevel, kv.SI) - snapshot.SetOption(kv.Priority, kv.PriorityLow) - setOptionForTopSQL(e.ctx.GetSessionVars().StmtCtx, snapshot) - readReplicaType := e.ctx.GetSessionVars().GetReplicaRead() - if readReplicaType.IsFollowerRead() { - snapshot.SetOption(kv.ReplicaRead, readReplicaType) - } - - rander := rand.New(rand.NewSource(e.randSeed)) // #nosec G404 - for i := workID; i < len(e.sampTasks); i += e.concurrency { - task := e.sampTasks[i] - // randomize the estimate step in range [step - 2 * sqrt(step), step] - if step > 4 { // 2*sqrt(x) < x - lower, upper := step-uint32(2*math.Sqrt(float64(step))), step - step = uint32(rander.Intn(int(upper-lower))) + lower - } - snapshot.SetOption(kv.SampleStep, step) - kvMap := make(map[string][]byte) - var iter kv.Iterator - iter, *err = snapshot.Iter(kv.Key(task.StartKey), kv.Key(task.EndKey)) - if *err != nil { - return - } - for iter.Valid() { - kvMap[string(iter.Key())] = iter.Value() - *err = iter.Next() - if *err != nil { - return - } - } - fastAnalyzeHistogramSample.Observe(float64(len(kvMap))) - - *err = e.handleBatchSeekResponse(kvMap) - if *err != nil { - return - } - } -} - -func (e *AnalyzeFastExec) buildColumnStats(ID int64, collector *statistics.SampleCollector, tp *types.FieldType, rowCount int64) (*statistics.Histogram, *statistics.CMSketch, *statistics.TopN, *statistics.FMSketch, error) { - sc := e.ctx.GetSessionVars().StmtCtx - data := make([][]byte, 0, len(collector.Samples)) - fmSketch := statistics.NewFMSketch(maxSketchSize) - notNullSamples := make([]*statistics.SampleItem, 0, len(collector.Samples)) - for i, sample := range collector.Samples { - sample.Ordinal = i - if sample.Value.IsNull() { - collector.NullCount++ - continue - } - notNullSamples = append(notNullSamples, sample) - err := fmSketch.InsertValue(sc, sample.Value) - if err != nil { - return nil, nil, nil, nil, err - } - valBytes, err := tablecodec.EncodeValue(sc, nil, sample.Value) - if err != nil { - return nil, nil, nil, nil, err - } - data = append(data, valBytes) - } - // Build CMSketch. - cmSketch, topN, ndv, scaleRatio := statistics.NewCMSketchAndTopN(int32(e.opts[ast.AnalyzeOptCMSketchDepth]), int32(e.opts[ast.AnalyzeOptCMSketchWidth]), data, uint32(e.opts[ast.AnalyzeOptNumTopN]), uint64(rowCount)) - // Build Histogram. - collector.Samples = notNullSamples - hist, err := statistics.BuildColumnHist(e.ctx, int64(e.opts[ast.AnalyzeOptNumBuckets]), ID, collector, tp, rowCount, int64(ndv), collector.NullCount*int64(scaleRatio)) - return hist, cmSketch, topN, fmSketch, err -} - -func (e *AnalyzeFastExec) buildIndexStats(idxInfo *model.IndexInfo, collector *statistics.SampleCollector, rowCount int64) (*statistics.Histogram, *statistics.CMSketch, *statistics.TopN, error) { - data := make([][][]byte, len(idxInfo.Columns)) - for _, sample := range collector.Samples { - var preLen int - remained := sample.Value.GetBytes() - // We need to insert each prefix values into CM Sketch. - for i := 0; i < len(idxInfo.Columns); i++ { - var err error - var value []byte - value, remained, err = codec.CutOne(remained) - if err != nil { - return nil, nil, nil, err - } - preLen += len(value) - data[i] = append(data[i], sample.Value.GetBytes()[:preLen]) - } - } - numTop := uint32(e.opts[ast.AnalyzeOptNumTopN]) - cmSketch, topN, ndv, scaleRatio := statistics.NewCMSketchAndTopN(int32(e.opts[ast.AnalyzeOptCMSketchDepth]), int32(e.opts[ast.AnalyzeOptCMSketchWidth]), data[0], numTop, uint64(rowCount)) - // Build CM Sketch for each prefix and merge them into one. - for i := 1; i < len(idxInfo.Columns); i++ { - var curCMSketch *statistics.CMSketch - var curTopN *statistics.TopN - // `ndv` should be the ndv of full index, so just rewrite it here. - curCMSketch, curTopN, ndv, scaleRatio = statistics.NewCMSketchAndTopN(int32(e.opts[ast.AnalyzeOptCMSketchDepth]), int32(e.opts[ast.AnalyzeOptCMSketchWidth]), data[i], numTop, uint64(rowCount)) - err := cmSketch.MergeCMSketch(curCMSketch) - if err != nil { - return nil, nil, nil, err - } - statistics.MergeTopNAndUpdateCMSketch(topN, curTopN, cmSketch, numTop) - } - // Build Histogram. - hist, err := statistics.BuildColumnHist(e.ctx, int64(e.opts[ast.AnalyzeOptNumBuckets]), idxInfo.ID, collector, types.NewFieldType(mysql.TypeBlob), rowCount, int64(ndv), collector.NullCount*int64(scaleRatio)) - return hist, cmSketch, topN, err -} - -func (e *AnalyzeFastExec) runTasks() ([]*statistics.Histogram, []*statistics.CMSketch, []*statistics.TopN, []*statistics.FMSketch, error) { - errs := make([]error, e.concurrency) - pkColCount := pkColsCount(e.handleCols) - // collect column samples and primary key samples and index samples. - length := len(e.colsInfo) + pkColCount + len(e.idxsInfo) - e.collectors = make([]*statistics.SampleCollector, length) - for i := range e.collectors { - e.collectors[i] = &statistics.SampleCollector{ - MaxSampleSize: int64(e.opts[ast.AnalyzeOptNumSamples]), - Samples: make([]*statistics.SampleItem, e.opts[ast.AnalyzeOptNumSamples]), - } - } - - e.wg.Add(e.concurrency) - bo := tikv.NewBackofferWithVars(context.Background(), 500, nil) - for i := 0; i < e.concurrency; i++ { - go e.handleSampTasks(i, e.estSampStep, &errs[i]) - } - e.wg.Wait() - for _, err := range errs { - if err != nil { - return nil, nil, nil, nil, err - } - } - - scanKeysSize, err := e.handleScanTasks(bo) - fastAnalyzeHistogramScanKeys.Observe(float64(scanKeysSize)) - if err != nil { - return nil, nil, nil, nil, err - } - - stats := domain.GetDomain(e.ctx).StatsHandle() - var rowCount int64 = 0 - if stats.Lease() > 0 { - if t := stats.GetPartitionStats(e.tblInfo, e.tableID.GetStatisticsID()); !t.Pseudo { - rowCount = t.Count - } - } - hists, cms, topNs, fms := make([]*statistics.Histogram, length), make([]*statistics.CMSketch, length), make([]*statistics.TopN, length), make([]*statistics.FMSketch, length) - for i := 0; i < length; i++ { - // Build collector properties. - collector := e.collectors[i] - collector.Samples = collector.Samples[:e.sampCursor] - sort.Slice(collector.Samples, func(i, j int) bool { - return collector.Samples[i].Handle.Compare(collector.Samples[j].Handle) < 0 - }) - collector.CalcTotalSize() - // Adjust the row count in case the count of `tblStats` is not accurate and too small. - rowCount = mathutil.Max(rowCount, int64(len(collector.Samples))) - // Scale the total column size. - if len(collector.Samples) > 0 { - collector.TotalSize *= rowCount / int64(len(collector.Samples)) - } - if i < pkColCount { - pkCol := e.handleCols.GetCol(i) - hists[i], cms[i], topNs[i], fms[i], err = e.buildColumnStats(pkCol.ID, e.collectors[i], pkCol.RetType, rowCount) - } else if i < pkColCount+len(e.colsInfo) { - hists[i], cms[i], topNs[i], fms[i], err = e.buildColumnStats(e.colsInfo[i-pkColCount].ID, e.collectors[i], &e.colsInfo[i-pkColCount].FieldType, rowCount) - } else { - hists[i], cms[i], topNs[i], err = e.buildIndexStats(e.idxsInfo[i-pkColCount-len(e.colsInfo)], e.collectors[i], rowCount) - } - if err != nil { - return nil, nil, nil, nil, err - } - } - return hists, cms, topNs, fms, nil -} - -func (e *AnalyzeFastExec) buildStats() (hists []*statistics.Histogram, cms []*statistics.CMSketch, topNs []*statistics.TopN, fms []*statistics.FMSketch, err error) { - // To set rand seed, it's for unit test. - // To ensure that random sequences are different in non-test environments, RandSeed must be set time.Now(). - if atomic.LoadInt64(&RandSeed) == 1 { - atomic.StoreInt64(&e.randSeed, time.Now().UnixNano()) - } else { - atomic.StoreInt64(&e.randSeed, RandSeed) - } - - err = e.buildSampTask() - if err != nil { - return nil, nil, nil, nil, err - } - - return e.runTasks() -} - -// AnalyzeTestFastExec is for fast sample in unit test. -type AnalyzeTestFastExec struct { - AnalyzeFastExec - Ctx sessionctx.Context - TableID statistics.AnalyzeTableID - HandleCols core.HandleCols - ColsInfo []*model.ColumnInfo - IdxsInfo []*model.IndexInfo - Concurrency int - Collectors []*statistics.SampleCollector - TblInfo *model.TableInfo - Opts map[ast.AnalyzeOptionType]uint64 - Snapshot uint64 -} - -// TestFastSample only test the fast sample in unit test. -func (e *AnalyzeTestFastExec) TestFastSample() error { - e.ctx = e.Ctx - e.handleCols = e.HandleCols - e.colsInfo = e.ColsInfo - e.idxsInfo = e.IdxsInfo - e.concurrency = e.Concurrency - e.tableID = e.TableID - e.wg = &sync.WaitGroup{} - e.job = &statistics.AnalyzeJob{} - e.tblInfo = e.TblInfo - e.opts = e.Opts - e.snapshot = e.Snapshot - _, _, _, _, err := e.buildStats() - e.Collectors = e.collectors - return err -} - -type analyzeIndexIncrementalExec struct { - AnalyzeIndexExec - oldHist *statistics.Histogram - oldCMS *statistics.CMSketch - oldTopN *statistics.TopN -} - -func analyzeIndexIncremental(idxExec *analyzeIndexIncrementalExec) *statistics.AnalyzeResults { - var statsVer = statistics.Version1 - if idxExec.analyzePB.IdxReq.Version != nil { - statsVer = int(*idxExec.analyzePB.IdxReq.Version) - } - pruneMode := variable.PartitionPruneMode(idxExec.ctx.GetSessionVars().PartitionPruneMode.Load()) - if idxExec.tableID.IsPartitionTable() && pruneMode == variable.Dynamic { - err := errors.Errorf("[stats]: global statistics for partitioned tables unavailable in ANALYZE INCREMENTAL") - return &statistics.AnalyzeResults{Err: err, Job: idxExec.job} - } - startPos := idxExec.oldHist.GetUpper(idxExec.oldHist.Len() - 1) - values, _, err := codec.DecodeRange(startPos.GetBytes(), len(idxExec.idxInfo.Columns), nil, nil) - if err != nil { - return &statistics.AnalyzeResults{Err: err, Job: idxExec.job} - } - ran := ranger.Range{LowVal: values, HighVal: []types.Datum{types.MaxValueDatum()}, Collators: collate.GetBinaryCollatorSlice(1)} - hist, cms, fms, topN, err := idxExec.buildStats([]*ranger.Range{&ran}, false) - if err != nil { - return &statistics.AnalyzeResults{Err: err, Job: idxExec.job} - } - hist, err = statistics.MergeHistograms(idxExec.ctx.GetSessionVars().StmtCtx, idxExec.oldHist, hist, int(idxExec.opts[ast.AnalyzeOptNumBuckets]), statsVer) - if err != nil { - return &statistics.AnalyzeResults{Err: err, Job: idxExec.job} - } - if idxExec.oldCMS != nil && cms != nil { - err = cms.MergeCMSketch4IncrementalAnalyze(idxExec.oldCMS, uint32(idxExec.opts[ast.AnalyzeOptNumTopN])) - if err != nil { - return &statistics.AnalyzeResults{Err: err, Job: idxExec.job} - } - cms.CalcDefaultValForAnalyze(uint64(hist.NDV)) - } - if statsVer >= statistics.Version2 { - poped := statistics.MergeTopNAndUpdateCMSketch(topN, idxExec.oldTopN, cms, uint32(idxExec.opts[ast.AnalyzeOptNumTopN])) - hist.AddIdxVals(poped) - } - result := &statistics.AnalyzeResult{ - Hist: []*statistics.Histogram{hist}, - Cms: []*statistics.CMSketch{cms}, - TopNs: []*statistics.TopN{topN}, - Fms: []*statistics.FMSketch{fms}, - IsIndex: 1, - } - cnt := hist.NullCount - if hist.Len() > 0 { - cnt += hist.Buckets[hist.Len()-1].Count - } - return &statistics.AnalyzeResults{ - TableID: idxExec.tableID, - Ars: []*statistics.AnalyzeResult{result}, - Job: idxExec.job, - StatsVer: statsVer, - Count: cnt, - Snapshot: idxExec.snapshot, - } -} - -type analyzePKIncrementalExec struct { - AnalyzeColumnsExec - oldHist *statistics.Histogram -} - -func analyzePKIncremental(colExec *analyzePKIncrementalExec) *statistics.AnalyzeResults { - var maxVal types.Datum - pkInfo := colExec.handleCols.GetCol(0) - if mysql.HasUnsignedFlag(pkInfo.RetType.GetFlag()) { - maxVal = types.NewUintDatum(math.MaxUint64) - } else { - maxVal = types.NewIntDatum(math.MaxInt64) - } - startPos := *colExec.oldHist.GetUpper(colExec.oldHist.Len() - 1) - ran := ranger.Range{LowVal: []types.Datum{startPos}, LowExclude: true, HighVal: []types.Datum{maxVal}, Collators: collate.GetBinaryCollatorSlice(1)} - hists, _, _, _, _, err := colExec.buildStats([]*ranger.Range{&ran}, false) - if err != nil { - return &statistics.AnalyzeResults{Err: err, Job: colExec.job} - } - hist := hists[0] - hist, err = statistics.MergeHistograms(colExec.ctx.GetSessionVars().StmtCtx, colExec.oldHist, hist, int(colExec.opts[ast.AnalyzeOptNumBuckets]), statistics.Version1) - if err != nil { - return &statistics.AnalyzeResults{Err: err, Job: colExec.job} - } - result := &statistics.AnalyzeResult{ - Hist: []*statistics.Histogram{hist}, - Cms: []*statistics.CMSketch{nil}, - TopNs: []*statistics.TopN{nil}, - Fms: []*statistics.FMSketch{nil}, - } - var cnt int64 - if hist.Len() > 0 { - cnt = hist.Buckets[hist.Len()-1].Count - } - return &statistics.AnalyzeResults{ - TableID: colExec.tableID, - Ars: []*statistics.AnalyzeResult{result}, - Job: colExec.job, - StatsVer: statistics.Version1, - Count: cnt, - Snapshot: colExec.snapshot, - } -} - -// AddNewAnalyzeJob records the new analyze job. -func AddNewAnalyzeJob(ctx sessionctx.Context, job *statistics.AnalyzeJob) { - if job == nil { - return - } - var instance string - serverInfo, err := infosync.GetServerInfo() - if err != nil { - logutil.BgLogger().Error("failed to get server info", zap.Error(err)) - instance = "unknown" - } else { - instance = fmt.Sprintf("%s:%d", serverInfo.IP, serverInfo.Port) - } - statsHandle := domain.GetDomain(ctx).StatsHandle() - err = statsHandle.InsertAnalyzeJob(job, instance, ctx.GetSessionVars().ConnectionID) - if err != nil { - logutil.BgLogger().Error("failed to insert analyze job", zap.Error(err)) - } -} - -// StartAnalyzeJob marks the state of the analyze job as running and sets the start time. -func StartAnalyzeJob(ctx sessionctx.Context, job *statistics.AnalyzeJob) { - if job == nil || job.ID == nil { - return - } - job.StartTime = time.Now() - job.Progress.SetLastDumpTime(job.StartTime) - exec := ctx.(sqlexec.RestrictedSQLExecutor) - const sql = "UPDATE mysql.analyze_jobs SET start_time = CONVERT_TZ(%?, '+00:00', @@TIME_ZONE), state = %? WHERE id = %?" - _, _, err := exec.ExecRestrictedSQL(context.TODO(), []sqlexec.OptionFuncAlias{sqlexec.ExecOptionUseSessionPool}, sql, job.StartTime.UTC().Format(types.TimeFormat), statistics.AnalyzeRunning, *job.ID) - if err != nil { - logutil.BgLogger().Warn("failed to update analyze job", zap.String("update", fmt.Sprintf("%s->%s", statistics.AnalyzePending, statistics.AnalyzeRunning)), zap.Error(err)) - } -} - -// UpdateAnalyzeJob updates count of the processed rows when increment reaches a threshold. -func UpdateAnalyzeJob(ctx sessionctx.Context, job *statistics.AnalyzeJob, rowCount int64) { - if job == nil || job.ID == nil { - return - } - delta := job.Progress.Update(rowCount) - if delta == 0 { - return - } - exec := ctx.(sqlexec.RestrictedSQLExecutor) - const sql = "UPDATE mysql.analyze_jobs SET processed_rows = processed_rows + %? WHERE id = %?" - _, _, err := exec.ExecRestrictedSQL(context.TODO(), []sqlexec.OptionFuncAlias{sqlexec.ExecOptionUseSessionPool}, sql, delta, *job.ID) - if err != nil { - logutil.BgLogger().Warn("failed to update analyze job", zap.String("update", fmt.Sprintf("process %v rows", delta)), zap.Error(err)) + delta := job.Progress.Update(rowCount) + if delta == 0 { + return + } + exec := ctx.(sqlexec.RestrictedSQLExecutor) + const sql = "UPDATE mysql.analyze_jobs SET processed_rows = processed_rows + %? WHERE id = %?" + _, _, err := exec.ExecRestrictedSQL(context.TODO(), []sqlexec.OptionFuncAlias{sqlexec.ExecOptionUseSessionPool}, sql, delta, *job.ID) + if err != nil { + logutil.BgLogger().Warn("failed to update analyze job", zap.String("update", fmt.Sprintf("process %v rows", delta)), zap.Error(err)) } } @@ -2531,125 +408,20 @@ func FinishAnalyzeJob(ctx sessionctx.Context, job *statistics.AnalyzeJob, analyz } } -func prepareV2AnalyzeJobInfo(e *AnalyzeColumnsExec, retry bool) { - if e == nil || e.StatsVersion != statistics.Version2 { - return - } - opts := e.opts - cols := e.colsInfo - if e.V2Options != nil { - opts = e.V2Options.FilledOpts - } - sampleRate := *e.analyzePB.ColReq.SampleRate - var b strings.Builder - if retry { - b.WriteString("retry ") - } - if e.ctx.GetSessionVars().InRestrictedSQL { - b.WriteString("auto ") - } - b.WriteString("analyze table") - if len(cols) > 0 && cols[len(cols)-1].ID == model.ExtraHandleID { - cols = cols[:len(cols)-1] - } - if len(cols) < len(e.tableInfo.Columns) { - b.WriteString(" columns ") - for i, col := range cols { - if i > 0 { - b.WriteString(", ") - } - b.WriteString(col.Name.O) - } - } else { - b.WriteString(" all columns") - } - var needComma bool - b.WriteString(" with ") - printOption := func(optType ast.AnalyzeOptionType) { - if val, ok := opts[optType]; ok { - if needComma { - b.WriteString(", ") - } else { - needComma = true - } - b.WriteString(fmt.Sprintf("%v %s", val, strings.ToLower(ast.AnalyzeOptionString[optType]))) - } - } - printOption(ast.AnalyzeOptNumBuckets) - printOption(ast.AnalyzeOptNumTopN) - if opts[ast.AnalyzeOptNumSamples] != 0 { - printOption(ast.AnalyzeOptNumSamples) - } else { - if needComma { - b.WriteString(", ") +func finishJobWithLog(sctx sessionctx.Context, job *statistics.AnalyzeJob, analyzeErr error) { + FinishAnalyzeJob(sctx, job, analyzeErr) + if job != nil { + var state string + if analyzeErr != nil { + state = statistics.AnalyzeFailed } else { - needComma = true + state = statistics.AnalyzeFinished } - b.WriteString(fmt.Sprintf("%v samplerate", sampleRate)) - } - e.job.JobInfo = b.String() -} - -// analyzeResultsNotifyWaitGroupWrapper is a wrapper for sync.WaitGroup -// Please add all goroutine count when to `Add` to avoid exiting in advance. -type analyzeResultsNotifyWaitGroupWrapper struct { - sync.WaitGroup - notify chan *statistics.AnalyzeResults - cnt atomicutil.Uint64 -} - -// NewAnalyzeResultsNotifyWaitGroupWrapper is to create analyzeResultsNotifyWaitGroupWrapper -func NewAnalyzeResultsNotifyWaitGroupWrapper(notify chan *statistics.AnalyzeResults) *analyzeResultsNotifyWaitGroupWrapper { - return &analyzeResultsNotifyWaitGroupWrapper{ - notify: notify, - cnt: *atomicutil.NewUint64(0), - } -} - -// Run runs a function in a goroutine and calls done when function returns. -// Please DO NOT use panic in the cb function. -func (w *analyzeResultsNotifyWaitGroupWrapper) Run(exec func()) { - old := w.cnt.Inc() - 1 - go func(cnt uint64) { - defer func() { - w.Done() - if cnt == 0 { - w.Wait() - close(w.notify) - } - }() - exec() - }(old) -} - -// notifyErrorWaitGroupWrapper is a wrapper for sync.WaitGroup -// Please add all goroutine count when to `Add` to avoid exiting in advance. -type notifyErrorWaitGroupWrapper struct { - sync.WaitGroup - notify chan error - cnt atomicutil.Uint64 -} - -// newNotifyErrorWaitGroupWrapper is to create notifyErrorWaitGroupWrapper -func newNotifyErrorWaitGroupWrapper(notify chan error) *notifyErrorWaitGroupWrapper { - return ¬ifyErrorWaitGroupWrapper{ - notify: notify, - cnt: *atomicutil.NewUint64(0), + logutil.BgLogger().Info(fmt.Sprintf("analyze table `%s`.`%s` has %s", job.DBName, job.TableName, state), + zap.String("partition", job.PartitionName), + zap.String("job info", job.JobInfo), + zap.Time("start time", job.StartTime), + zap.Time("end time", job.EndTime), + zap.String("cost", job.EndTime.Sub(job.StartTime).String())) } } - -// Run runs a function in a goroutine and calls done when function returns. -// Please DO NOT use panic in the cb function. -func (w *notifyErrorWaitGroupWrapper) Run(exec func()) { - old := w.cnt.Inc() - 1 - go func(cnt uint64) { - defer func() { - w.Done() - if cnt == 0 { - w.Wait() - close(w.notify) - } - }() - exec() - }(old) -} diff --git a/executor/analyze_col.go b/executor/analyze_col.go new file mode 100644 index 0000000000000..1cd6a55c55b39 --- /dev/null +++ b/executor/analyze_col.go @@ -0,0 +1,435 @@ +// 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 executor + +import ( + "context" + "fmt" + "strings" + "sync/atomic" + "time" + + "github.com/pingcap/errors" + "github.com/pingcap/failpoint" + "github.com/pingcap/tidb/distsql" + "github.com/pingcap/tidb/domain" + "github.com/pingcap/tidb/expression" + "github.com/pingcap/tidb/parser/ast" + "github.com/pingcap/tidb/parser/model" + "github.com/pingcap/tidb/parser/mysql" + "github.com/pingcap/tidb/planner/core" + "github.com/pingcap/tidb/statistics" + "github.com/pingcap/tidb/tablecodec" + "github.com/pingcap/tidb/types" + "github.com/pingcap/tidb/util" + "github.com/pingcap/tidb/util/memory" + "github.com/pingcap/tidb/util/ranger" + "github.com/pingcap/tipb/go-tipb" +) + +// AnalyzeColumnsExec represents Analyze columns push down executor. +type AnalyzeColumnsExec struct { + baseAnalyzeExec + + tableInfo *model.TableInfo + colsInfo []*model.ColumnInfo + handleCols core.HandleCols + commonHandle *model.IndexInfo + resultHandler *tableResultHandler + indexes []*model.IndexInfo + core.AnalyzeInfo + + samplingBuilderWg *notifyErrorWaitGroupWrapper + samplingMergeWg *util.WaitGroupWrapper + + schemaForVirtualColEval *expression.Schema + baseCount int64 + baseModifyCnt int64 + + memTracker *memory.Tracker +} + +func analyzeColumnsPushDownEntry(e *AnalyzeColumnsExec) *statistics.AnalyzeResults { + if e.AnalyzeInfo.StatsVersion >= statistics.Version2 { + return e.toV2().analyzeColumnsPushDownWithRetryV2() + } + return e.toV1().analyzeColumnsPushDownV1() +} + +func (e *AnalyzeColumnsExec) toV1() *AnalyzeColumnsExecV1 { + return &AnalyzeColumnsExecV1{ + AnalyzeColumnsExec: e, + } +} + +func (e *AnalyzeColumnsExec) toV2() *AnalyzeColumnsExecV2 { + return &AnalyzeColumnsExecV2{ + AnalyzeColumnsExec: e, + } +} + +func (e *AnalyzeColumnsExec) open(ranges []*ranger.Range) error { + e.memTracker = memory.NewTracker(e.ctx.GetSessionVars().PlanID, -1) + e.memTracker.AttachTo(e.ctx.GetSessionVars().StmtCtx.MemTracker) + e.resultHandler = &tableResultHandler{} + firstPartRanges, secondPartRanges := distsql.SplitRangesAcrossInt64Boundary(ranges, true, false, !hasPkHist(e.handleCols)) + firstResult, err := e.buildResp(firstPartRanges) + if err != nil { + return err + } + if len(secondPartRanges) == 0 { + e.resultHandler.open(nil, firstResult) + return nil + } + var secondResult distsql.SelectResult + secondResult, err = e.buildResp(secondPartRanges) + if err != nil { + return err + } + e.resultHandler.open(firstResult, secondResult) + + return nil +} + +func (e *AnalyzeColumnsExec) buildResp(ranges []*ranger.Range) (distsql.SelectResult, error) { + var builder distsql.RequestBuilder + reqBuilder := builder.SetHandleRangesForTables(e.ctx.GetSessionVars().StmtCtx, []int64{e.TableID.GetStatisticsID()}, e.handleCols != nil && !e.handleCols.IsInt(), ranges, nil) + builder.SetResourceGroupTagger(e.ctx.GetSessionVars().StmtCtx.GetResourceGroupTagger()) + // Always set KeepOrder of the request to be true, in order to compute + // correct `correlation` of columns. + kvReq, err := reqBuilder. + SetAnalyzeRequest(e.analyzePB). + SetStartTS(e.snapshot). + SetKeepOrder(true). + SetConcurrency(e.concurrency). + SetMemTracker(e.memTracker). + Build() + if err != nil { + return nil, err + } + ctx := context.TODO() + result, err := distsql.Analyze(ctx, e.ctx.GetClient(), kvReq, e.ctx.GetSessionVars().KVVars, e.ctx.GetSessionVars().InRestrictedSQL, e.ctx.GetSessionVars().StmtCtx) + if err != nil { + return nil, err + } + return result, nil +} + +func (e *AnalyzeColumnsExec) buildStats(ranges []*ranger.Range, needExtStats bool) (hists []*statistics.Histogram, cms []*statistics.CMSketch, topNs []*statistics.TopN, fms []*statistics.FMSketch, extStats *statistics.ExtendedStatsColl, err error) { + if err = e.open(ranges); err != nil { + return nil, nil, nil, nil, nil, err + } + defer func() { + if err1 := e.resultHandler.Close(); err1 != nil { + hists = nil + cms = nil + extStats = nil + err = err1 + } + }() + var handleHist *statistics.Histogram + var handleCms *statistics.CMSketch + var handleFms *statistics.FMSketch + var handleTopn *statistics.TopN + statsVer := statistics.Version1 + if e.analyzePB.Tp == tipb.AnalyzeType_TypeMixed { + handleHist = &statistics.Histogram{} + handleCms = statistics.NewCMSketch(int32(e.opts[ast.AnalyzeOptCMSketchDepth]), int32(e.opts[ast.AnalyzeOptCMSketchWidth])) + handleTopn = statistics.NewTopN(int(e.opts[ast.AnalyzeOptNumTopN])) + handleFms = statistics.NewFMSketch(maxSketchSize) + if e.analyzePB.IdxReq.Version != nil { + statsVer = int(*e.analyzePB.IdxReq.Version) + } + } + pkHist := &statistics.Histogram{} + collectors := make([]*statistics.SampleCollector, len(e.colsInfo)) + for i := range collectors { + collectors[i] = &statistics.SampleCollector{ + IsMerger: true, + FMSketch: statistics.NewFMSketch(maxSketchSize), + MaxSampleSize: int64(e.opts[ast.AnalyzeOptNumSamples]), + CMSketch: statistics.NewCMSketch(int32(e.opts[ast.AnalyzeOptCMSketchDepth]), int32(e.opts[ast.AnalyzeOptCMSketchWidth])), + } + } + for { + failpoint.Inject("mockKillRunningV1AnalyzeJob", func() { + dom := domain.GetDomain(e.ctx) + dom.SysProcTracker().KillSysProcess(util.GetAutoAnalyzeProcID(dom.ServerID)) + }) + if atomic.LoadUint32(&e.ctx.GetSessionVars().Killed) == 1 { + return nil, nil, nil, nil, nil, errors.Trace(ErrQueryInterrupted) + } + failpoint.Inject("mockSlowAnalyzeV1", func() { + time.Sleep(1000 * time.Second) + }) + data, err1 := e.resultHandler.nextRaw(context.TODO()) + if err1 != nil { + return nil, nil, nil, nil, nil, err1 + } + if data == nil { + break + } + var colResp *tipb.AnalyzeColumnsResp + if e.analyzePB.Tp == tipb.AnalyzeType_TypeMixed { + resp := &tipb.AnalyzeMixedResp{} + err = resp.Unmarshal(data) + if err != nil { + return nil, nil, nil, nil, nil, err + } + colResp = resp.ColumnsResp + handleHist, handleCms, handleFms, handleTopn, err = updateIndexResult(e.ctx, resp.IndexResp, nil, handleHist, + handleCms, handleFms, handleTopn, e.commonHandle, int(e.opts[ast.AnalyzeOptNumBuckets]), + int(e.opts[ast.AnalyzeOptNumTopN]), statsVer) + + if err != nil { + return nil, nil, nil, nil, nil, err + } + } else { + colResp = &tipb.AnalyzeColumnsResp{} + err = colResp.Unmarshal(data) + } + sc := e.ctx.GetSessionVars().StmtCtx + rowCount := int64(0) + if hasPkHist(e.handleCols) { + respHist := statistics.HistogramFromProto(colResp.PkHist) + rowCount = int64(respHist.TotalRowCount()) + pkHist, err = statistics.MergeHistograms(sc, pkHist, respHist, int(e.opts[ast.AnalyzeOptNumBuckets]), statistics.Version1) + if err != nil { + return nil, nil, nil, nil, nil, err + } + } + for i, rc := range colResp.Collectors { + respSample := statistics.SampleCollectorFromProto(rc) + rowCount = respSample.Count + respSample.NullCount + collectors[i].MergeSampleCollector(sc, respSample) + } + UpdateAnalyzeJob(e.ctx, e.job, rowCount) + } + timeZone := e.ctx.GetSessionVars().Location() + if hasPkHist(e.handleCols) { + pkInfo := e.handleCols.GetCol(0) + pkHist.ID = pkInfo.ID + err = pkHist.DecodeTo(pkInfo.RetType, timeZone) + if err != nil { + return nil, nil, nil, nil, nil, err + } + hists = append(hists, pkHist) + cms = append(cms, nil) + topNs = append(topNs, nil) + fms = append(fms, nil) + } + for i, col := range e.colsInfo { + if e.StatsVersion < 2 { + // In analyze version 2, we don't collect TopN this way. We will collect TopN from samples in `BuildColumnHistAndTopN()` below. + err := collectors[i].ExtractTopN(uint32(e.opts[ast.AnalyzeOptNumTopN]), e.ctx.GetSessionVars().StmtCtx, &col.FieldType, timeZone) + if err != nil { + return nil, nil, nil, nil, nil, err + } + topNs = append(topNs, collectors[i].TopN) + } + for j, s := range collectors[i].Samples { + collectors[i].Samples[j].Ordinal = j + collectors[i].Samples[j].Value, err = tablecodec.DecodeColumnValue(s.Value.GetBytes(), &col.FieldType, timeZone) + if err != nil { + return nil, nil, nil, nil, nil, err + } + // When collation is enabled, we store the Key representation of the sampling data. So we set it to kind `Bytes` here + // to avoid to convert it to its Key representation once more. + if collectors[i].Samples[j].Value.Kind() == types.KindString { + collectors[i].Samples[j].Value.SetBytes(collectors[i].Samples[j].Value.GetBytes()) + } + } + var hg *statistics.Histogram + var err error + var topn *statistics.TopN + 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) + topNs = append(topNs, topn) + } + if err != nil { + return nil, nil, nil, nil, nil, err + } + hists = append(hists, hg) + collectors[i].CMSketch.CalcDefaultValForAnalyze(uint64(hg.NDV)) + cms = append(cms, collectors[i].CMSketch) + fms = append(fms, collectors[i].FMSketch) + } + if needExtStats { + statsHandle := domain.GetDomain(e.ctx).StatsHandle() + extStats, err = statsHandle.BuildExtendedStats(e.TableID.GetStatisticsID(), e.colsInfo, collectors) + if err != nil { + return nil, nil, nil, nil, nil, err + } + } + if handleHist != nil { + handleHist.ID = e.commonHandle.ID + if handleTopn != nil && handleTopn.TotalCount() > 0 { + handleHist.RemoveVals(handleTopn.TopN) + } + if handleCms != nil { + handleCms.CalcDefaultValForAnalyze(uint64(handleHist.NDV)) + } + hists = append([]*statistics.Histogram{handleHist}, hists...) + cms = append([]*statistics.CMSketch{handleCms}, cms...) + fms = append([]*statistics.FMSketch{handleFms}, fms...) + topNs = append([]*statistics.TopN{handleTopn}, topNs...) + } + return hists, cms, topNs, fms, extStats, nil +} + +// AnalyzeColumnsExecV1 is used to maintain v1 analyze process +type AnalyzeColumnsExecV1 struct { + *AnalyzeColumnsExec +} + +func (e *AnalyzeColumnsExecV1) analyzeColumnsPushDownV1() *statistics.AnalyzeResults { + var ranges []*ranger.Range + if hc := e.handleCols; hc != nil { + if hc.IsInt() { + ranges = ranger.FullIntRange(mysql.HasUnsignedFlag(hc.GetCol(0).RetType.GetFlag())) + } else { + ranges = ranger.FullNotNullRange() + } + } else { + ranges = ranger.FullIntRange(false) + } + collExtStats := e.ctx.GetSessionVars().EnableExtendedStats + hists, cms, topNs, fms, extStats, err := e.buildStats(ranges, collExtStats) + if err != nil { + return &statistics.AnalyzeResults{Err: err, Job: e.job} + } + + if hasPkHist(e.handleCols) { + PKresult := &statistics.AnalyzeResult{ + Hist: hists[:1], + Cms: cms[:1], + TopNs: topNs[:1], + Fms: fms[:1], + } + restResult := &statistics.AnalyzeResult{ + Hist: hists[1:], + Cms: cms[1:], + TopNs: topNs[1:], + Fms: fms[1:], + } + return &statistics.AnalyzeResults{ + TableID: e.tableID, + Ars: []*statistics.AnalyzeResult{PKresult, restResult}, + ExtStats: extStats, + Job: e.job, + StatsVer: e.StatsVersion, + Count: int64(PKresult.Hist[0].TotalRowCount()), + Snapshot: e.snapshot, + } + } + var ars []*statistics.AnalyzeResult + if e.analyzePB.Tp == tipb.AnalyzeType_TypeMixed { + ars = append(ars, &statistics.AnalyzeResult{ + Hist: []*statistics.Histogram{hists[0]}, + Cms: []*statistics.CMSketch{cms[0]}, + TopNs: []*statistics.TopN{topNs[0]}, + Fms: []*statistics.FMSketch{nil}, + IsIndex: 1, + }) + hists = hists[1:] + cms = cms[1:] + topNs = topNs[1:] + } + colResult := &statistics.AnalyzeResult{ + Hist: hists, + Cms: cms, + TopNs: topNs, + Fms: fms, + } + ars = append(ars, colResult) + cnt := int64(hists[0].TotalRowCount()) + if e.StatsVersion >= statistics.Version2 { + cnt += int64(topNs[0].TotalCount()) + } + return &statistics.AnalyzeResults{ + TableID: e.tableID, + Ars: ars, + Job: e.job, + StatsVer: e.StatsVersion, + ExtStats: extStats, + Count: cnt, + Snapshot: e.snapshot, + } +} + +func hasPkHist(handleCols core.HandleCols) bool { + return handleCols != nil && handleCols.IsInt() +} + +func prepareV2AnalyzeJobInfo(e *AnalyzeColumnsExec, retry bool) { + if e == nil || e.StatsVersion != statistics.Version2 { + return + } + opts := e.opts + cols := e.colsInfo + if e.V2Options != nil { + opts = e.V2Options.FilledOpts + } + sampleRate := *e.analyzePB.ColReq.SampleRate + var b strings.Builder + if retry { + b.WriteString("retry ") + } + if e.ctx.GetSessionVars().InRestrictedSQL { + b.WriteString("auto ") + } + b.WriteString("analyze table") + if len(cols) > 0 && cols[len(cols)-1].ID == model.ExtraHandleID { + cols = cols[:len(cols)-1] + } + if len(cols) < len(e.tableInfo.Columns) { + b.WriteString(" columns ") + for i, col := range cols { + if i > 0 { + b.WriteString(", ") + } + b.WriteString(col.Name.O) + } + } else { + b.WriteString(" all columns") + } + var needComma bool + b.WriteString(" with ") + printOption := func(optType ast.AnalyzeOptionType) { + if val, ok := opts[optType]; ok { + if needComma { + b.WriteString(", ") + } else { + needComma = true + } + b.WriteString(fmt.Sprintf("%v %s", val, strings.ToLower(ast.AnalyzeOptionString[optType]))) + } + } + printOption(ast.AnalyzeOptNumBuckets) + printOption(ast.AnalyzeOptNumTopN) + if opts[ast.AnalyzeOptNumSamples] != 0 { + printOption(ast.AnalyzeOptNumSamples) + } else { + if needComma { + b.WriteString(", ") + } else { + needComma = true + } + b.WriteString(fmt.Sprintf("%v samplerate", sampleRate)) + } + e.job.JobInfo = b.String() +} diff --git a/executor/analyze_col_v2.go b/executor/analyze_col_v2.go new file mode 100644 index 0000000000000..88b94e8ff1b16 --- /dev/null +++ b/executor/analyze_col_v2.go @@ -0,0 +1,784 @@ +// 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 executor + +import ( + "context" + "math" + "sort" + "sync/atomic" + "time" + + "github.com/pingcap/errors" + "github.com/pingcap/failpoint" + "github.com/pingcap/tidb/config" + "github.com/pingcap/tidb/domain" + "github.com/pingcap/tidb/expression" + "github.com/pingcap/tidb/metrics" + "github.com/pingcap/tidb/parser/ast" + "github.com/pingcap/tidb/parser/model" + "github.com/pingcap/tidb/parser/mysql" + "github.com/pingcap/tidb/sessionctx" + "github.com/pingcap/tidb/statistics" + "github.com/pingcap/tidb/tablecodec" + "github.com/pingcap/tidb/types" + "github.com/pingcap/tidb/util" + "github.com/pingcap/tidb/util/chunk" + "github.com/pingcap/tidb/util/codec" + "github.com/pingcap/tidb/util/collate" + "github.com/pingcap/tidb/util/logutil" + "github.com/pingcap/tidb/util/memory" + "github.com/pingcap/tidb/util/ranger" + "github.com/pingcap/tidb/util/timeutil" + "github.com/pingcap/tipb/go-tipb" + "go.uber.org/zap" +) + +// AnalyzeColumnsExecV2 is used to maintain v2 analyze process +type AnalyzeColumnsExecV2 struct { + *AnalyzeColumnsExec +} + +func (e *AnalyzeColumnsExecV2) analyzeColumnsPushDownWithRetryV2() *statistics.AnalyzeResults { + analyzeResult := e.analyzeColumnsPushDownV2() + // do not retry if succeed / not oom error / not auto-analyze / samplerate not set + if analyzeResult.Err == nil || analyzeResult.Err != errAnalyzeOOM || + !e.ctx.GetSessionVars().InRestrictedSQL || + e.analyzePB.ColReq == nil || *e.analyzePB.ColReq.SampleRate <= 0 { + return analyzeResult + } + finishJobWithLog(e.ctx, analyzeResult.Job, analyzeResult.Err) + statsHandle := domain.GetDomain(e.ctx).StatsHandle() + if statsHandle == nil { + return analyzeResult + } + var statsTbl *statistics.Table + tid := e.tableID.GetStatisticsID() + if tid == e.tableInfo.ID { + statsTbl = statsHandle.GetTableStats(e.tableInfo) + } else { + statsTbl = statsHandle.GetPartitionStats(e.tableInfo, tid) + } + if statsTbl == nil || statsTbl.Count <= 0 { + return analyzeResult + } + newSampleRate := math.Min(1, float64(config.DefRowsForSampleRate)/float64(statsTbl.Count)) + if newSampleRate >= *e.analyzePB.ColReq.SampleRate { + return analyzeResult + } + *e.analyzePB.ColReq.SampleRate = newSampleRate + prepareV2AnalyzeJobInfo(e.AnalyzeColumnsExec, true) + AddNewAnalyzeJob(e.ctx, e.job) + StartAnalyzeJob(e.ctx, e.job) + return e.analyzeColumnsPushDownV2() +} + +func (e *AnalyzeColumnsExecV2) analyzeColumnsPushDownV2() *statistics.AnalyzeResults { + var ranges []*ranger.Range + if hc := e.handleCols; hc != nil { + if hc.IsInt() { + ranges = ranger.FullIntRange(mysql.HasUnsignedFlag(hc.GetCol(0).RetType.GetFlag())) + } else { + ranges = ranger.FullNotNullRange() + } + } else { + ranges = ranger.FullIntRange(false) + } + collExtStats := e.ctx.GetSessionVars().EnableExtendedStats + specialIndexes := make([]*model.IndexInfo, 0, len(e.indexes)) + specialIndexesOffsets := make([]int, 0, len(e.indexes)) + for i, idx := range e.indexes { + isSpecial := false + for _, col := range idx.Columns { + colInfo := e.colsInfo[col.Offset] + isVirtualCol := colInfo.IsGenerated() && !colInfo.GeneratedStored + isPrefixCol := col.Length != types.UnspecifiedLength + if isVirtualCol || isPrefixCol { + isSpecial = true + break + } + } + if isSpecial { + specialIndexesOffsets = append(specialIndexesOffsets, i) + specialIndexes = append(specialIndexes, idx) + } + } + idxNDVPushDownCh := make(chan analyzeIndexNDVTotalResult, 1) + // subIndexWorkerWg is better to be initialized in handleNDVForSpecialIndexes, however if we do so, golang would + // report unexpected/unreasonable data race error on subIndexWorkerWg when running TestAnalyzeVirtualCol test + // case with `-race` flag now. + var wg util.WaitGroupWrapper + wg.Run(func() { + e.handleNDVForSpecialIndexes(specialIndexes, idxNDVPushDownCh) + }) + defer wg.Wait() + count, hists, topns, fmSketches, extStats, err := e.buildSamplingStats(ranges, collExtStats, specialIndexesOffsets, idxNDVPushDownCh) + if err != nil { + e.memTracker.Consume(-e.memTracker.BytesConsumed()) + return &statistics.AnalyzeResults{Err: err, Job: e.job} + } + cLen := len(e.analyzePB.ColReq.ColumnsInfo) + colGroupResult := &statistics.AnalyzeResult{ + Hist: hists[cLen:], + TopNs: topns[cLen:], + Fms: fmSketches[cLen:], + IsIndex: 1, + } + // Discard stats of _tidb_rowid. + // Because the process of analyzing will keep the order of results be the same as the colsInfo in the analyze task, + // and in `buildAnalyzeFullSamplingTask` we always place the _tidb_rowid at the last of colsInfo, so if there are + // stats for _tidb_rowid, it must be at the end of the column stats. + // Virtual column has no histogram yet. So we check nil here. + if hists[cLen-1] != nil && hists[cLen-1].ID == -1 { + cLen -= 1 + } + colResult := &statistics.AnalyzeResult{ + Hist: hists[:cLen], + TopNs: topns[:cLen], + Fms: fmSketches[:cLen], + } + return &statistics.AnalyzeResults{ + TableID: e.tableID, + Ars: []*statistics.AnalyzeResult{colResult, colGroupResult}, + Job: e.job, + StatsVer: e.StatsVersion, + Count: count, + Snapshot: e.snapshot, + ExtStats: extStats, + BaseCount: e.baseCount, + BaseModifyCnt: e.baseModifyCnt, + } +} + +// decodeSampleDataWithVirtualColumn constructs the virtual column by evaluating from the deocded normal columns. +// If it failed, it would return false to trigger normal decoding way without the virtual column. +func (e *AnalyzeColumnsExecV2) decodeSampleDataWithVirtualColumn( + collector statistics.RowSampleCollector, + fieldTps []*types.FieldType, + virtualColIdx []int, + schema *expression.Schema, +) error { + totFts := make([]*types.FieldType, 0, e.schemaForVirtualColEval.Len()) + for _, col := range e.schemaForVirtualColEval.Columns { + totFts = append(totFts, col.RetType) + } + chk := chunk.NewChunkWithCapacity(totFts, len(collector.Base().Samples)) + decoder := codec.NewDecoder(chk, e.ctx.GetSessionVars().Location()) + for _, sample := range collector.Base().Samples { + for i := range sample.Columns { + if schema.Columns[i].VirtualExpr != nil { + continue + } + _, err := decoder.DecodeOne(sample.Columns[i].GetBytes(), i, e.schemaForVirtualColEval.Columns[i].RetType) + if err != nil { + return err + } + } + } + err := FillVirtualColumnValue(fieldTps, virtualColIdx, schema, e.colsInfo, e.ctx, chk) + if err != nil { + return err + } + iter := chunk.NewIterator4Chunk(chk) + for row, i := iter.Begin(), 0; row != iter.End(); row, i = iter.Next(), i+1 { + datums := row.GetDatumRow(totFts) + collector.Base().Samples[i].Columns = datums + } + return nil +} + +func (e *AnalyzeColumnsExecV2) buildSamplingStats( + ranges []*ranger.Range, + needExtStats bool, + indexesWithVirtualColOffsets []int, + idxNDVPushDownCh chan analyzeIndexNDVTotalResult, +) ( + count int64, + hists []*statistics.Histogram, + topns []*statistics.TopN, + fmSketches []*statistics.FMSketch, + extStats *statistics.ExtendedStatsColl, + err error, +) { + if err = e.open(ranges); err != nil { + return 0, nil, nil, nil, nil, err + } + defer func() { + if err1 := e.resultHandler.Close(); err1 != nil { + err = err1 + } + }() + l := len(e.analyzePB.ColReq.ColumnsInfo) + len(e.analyzePB.ColReq.ColumnGroups) + rootRowCollector := statistics.NewRowSampleCollector(int(e.analyzePB.ColReq.SampleSize), e.analyzePB.ColReq.GetSampleRate(), l) + for i := 0; i < l; i++ { + rootRowCollector.Base().FMSketches = append(rootRowCollector.Base().FMSketches, statistics.NewFMSketch(maxSketchSize)) + } + sc := e.ctx.GetSessionVars().StmtCtx + statsConcurrency, err := getBuildStatsConcurrency(e.ctx) + if err != nil { + return 0, nil, nil, nil, nil, err + } + mergeResultCh := make(chan *samplingMergeResult, statsConcurrency) + mergeTaskCh := make(chan []byte, statsConcurrency) + e.samplingMergeWg = &util.WaitGroupWrapper{} + e.samplingMergeWg.Add(statsConcurrency) + for i := 0; i < statsConcurrency; i++ { + go e.subMergeWorker(mergeResultCh, mergeTaskCh, l, i == 0) + } + if err = readDataAndSendTask(e.ctx, e.resultHandler, mergeTaskCh, e.memTracker); err != nil { + return 0, nil, nil, nil, nil, getAnalyzePanicErr(err) + } + + mergeWorkerPanicCnt := 0 + for mergeWorkerPanicCnt < statsConcurrency { + mergeResult, ok := <-mergeResultCh + if !ok { + break + } + if mergeResult.err != nil { + err = mergeResult.err + if isAnalyzeWorkerPanic(mergeResult.err) { + mergeWorkerPanicCnt++ + } + continue + } + oldRootCollectorSize := rootRowCollector.Base().MemSize + rootRowCollector.MergeCollector(mergeResult.collector) + e.memTracker.Consume(rootRowCollector.Base().MemSize - oldRootCollectorSize - mergeResult.collector.Base().MemSize) + } + if err != nil { + return 0, nil, nil, nil, nil, err + } + + // handling virtual columns + virtualColIdx := buildVirtualColumnIndex(e.schemaForVirtualColEval, e.colsInfo) + if len(virtualColIdx) > 0 { + fieldTps := make([]*types.FieldType, 0, len(virtualColIdx)) + for _, colOffset := range virtualColIdx { + fieldTps = append(fieldTps, e.schemaForVirtualColEval.Columns[colOffset].RetType) + } + err = e.decodeSampleDataWithVirtualColumn(rootRowCollector, fieldTps, virtualColIdx, e.schemaForVirtualColEval) + if err != nil { + return 0, nil, nil, nil, nil, err + } + } else { + // If there's no virtual column or we meet error during eval virtual column, we fallback to normal decode otherwise. + for _, sample := range rootRowCollector.Base().Samples { + for i := range sample.Columns { + sample.Columns[i], err = tablecodec.DecodeColumnValue(sample.Columns[i].GetBytes(), &e.colsInfo[i].FieldType, sc.TimeZone) + if err != nil { + return 0, nil, nil, nil, nil, err + } + } + } + } + + for _, sample := range rootRowCollector.Base().Samples { + // Calculate handle from the row data for each row. It will be used to sort the samples. + sample.Handle, err = e.handleCols.BuildHandleByDatums(sample.Columns) + if err != nil { + return 0, nil, nil, nil, nil, err + } + } + + colLen := len(e.colsInfo) + + // The order of the samples are broken when merging samples from sub-collectors. + // So now we need to sort the samples according to the handle in order to calculate correlation. + sort.Slice(rootRowCollector.Base().Samples, func(i, j int) bool { + return rootRowCollector.Base().Samples[i].Handle.Compare(rootRowCollector.Base().Samples[j].Handle) < 0 + }) + + totalLen := len(e.colsInfo) + len(e.indexes) + hists = make([]*statistics.Histogram, totalLen) + topns = make([]*statistics.TopN, totalLen) + fmSketches = make([]*statistics.FMSketch, 0, totalLen) + buildResultChan := make(chan error, totalLen) + buildTaskChan := make(chan *samplingBuildTask, totalLen) + if totalLen < statsConcurrency { + statsConcurrency = totalLen + } + e.samplingBuilderWg = newNotifyErrorWaitGroupWrapper(buildResultChan) + sampleCollectors := make([]*statistics.SampleCollector, len(e.colsInfo)) + exitCh := make(chan struct{}) + e.samplingBuilderWg.Add(statsConcurrency) + for i := 0; i < statsConcurrency; i++ { + e.samplingBuilderWg.Run(func() { + e.subBuildWorker(buildResultChan, buildTaskChan, hists, topns, sampleCollectors, exitCh) + }) + } + for i, col := range e.colsInfo { + buildTaskChan <- &samplingBuildTask{ + id: col.ID, + rootRowCollector: rootRowCollector, + tp: &col.FieldType, + isColumn: true, + slicePos: i, + } + fmSketches = append(fmSketches, rootRowCollector.Base().FMSketches[i]) + } + + indexPushedDownResult := <-idxNDVPushDownCh + if indexPushedDownResult.err != nil { + close(exitCh) + e.samplingBuilderWg.Wait() + return 0, nil, nil, nil, nil, indexPushedDownResult.err + } + for _, offset := range indexesWithVirtualColOffsets { + ret := indexPushedDownResult.results[e.indexes[offset].ID] + rootRowCollector.Base().NullCount[colLen+offset] = ret.Count + rootRowCollector.Base().FMSketches[colLen+offset] = ret.Ars[0].Fms[0] + } + + // build index stats + for i, idx := range e.indexes { + buildTaskChan <- &samplingBuildTask{ + id: idx.ID, + rootRowCollector: rootRowCollector, + tp: types.NewFieldType(mysql.TypeBlob), + isColumn: false, + slicePos: colLen + i, + } + fmSketches = append(fmSketches, rootRowCollector.Base().FMSketches[colLen+i]) + } + close(buildTaskChan) + panicCnt := 0 + for panicCnt < statsConcurrency { + err1, ok := <-buildResultChan + if !ok { + break + } + if err1 != nil { + err = err1 + if isAnalyzeWorkerPanic(err1) { + panicCnt++ + } + continue + } + } + if err != nil { + return 0, nil, nil, nil, nil, err + } + count = rootRowCollector.Base().Count + if needExtStats { + statsHandle := domain.GetDomain(e.ctx).StatsHandle() + extStats, err = statsHandle.BuildExtendedStats(e.TableID.GetStatisticsID(), e.colsInfo, sampleCollectors) + if err != nil { + return 0, nil, nil, nil, nil, err + } + } + totalSampleCollectorSize := int64(0) + for _, sampleCollector := range sampleCollectors { + if sampleCollector != nil { + totalSampleCollectorSize += sampleCollector.MemSize + } + } + e.memTracker.Consume(-rootRowCollector.Base().MemSize - totalSampleCollectorSize) + return +} + +// handleNDVForSpecialIndexes deals with the logic to analyze the index containing the virtual column when the mode is full sampling. +func (e *AnalyzeColumnsExecV2) handleNDVForSpecialIndexes(indexInfos []*model.IndexInfo, totalResultCh chan analyzeIndexNDVTotalResult) { + defer func() { + if r := recover(); r != nil { + logutil.BgLogger().Error("analyze ndv for special index panicked", zap.Any("recover", r), zap.Stack("stack")) + metrics.PanicCounter.WithLabelValues(metrics.LabelAnalyze).Inc() + totalResultCh <- analyzeIndexNDVTotalResult{ + err: getAnalyzePanicErr(r), + } + } + }() + tasks := e.buildSubIndexJobForSpecialIndex(indexInfos) + statsConcurrncy, err := getBuildStatsConcurrency(e.ctx) + taskCh := make(chan *analyzeTask, len(tasks)) + for _, task := range tasks { + AddNewAnalyzeJob(e.ctx, task.job) + } + resultsCh := make(chan *statistics.AnalyzeResults, len(tasks)) + if len(tasks) < statsConcurrncy { + statsConcurrncy = len(tasks) + } + var subIndexWorkerWg = NewAnalyzeResultsNotifyWaitGroupWrapper(resultsCh) + subIndexWorkerWg.Add(statsConcurrncy) + for i := 0; i < statsConcurrncy; i++ { + subIndexWorkerWg.Run(func() { e.subIndexWorkerForNDV(taskCh, resultsCh) }) + } + for _, task := range tasks { + taskCh <- task + } + close(taskCh) + panicCnt := 0 + totalResult := analyzeIndexNDVTotalResult{ + results: make(map[int64]*statistics.AnalyzeResults, len(indexInfos)), + } + for panicCnt < statsConcurrncy { + results, ok := <-resultsCh + if !ok { + break + } + if results.Err != nil { + err = results.Err + FinishAnalyzeJob(e.ctx, results.Job, err) + if isAnalyzeWorkerPanic(err) { + panicCnt++ + } + continue + } + FinishAnalyzeJob(e.ctx, results.Job, nil) + totalResult.results[results.Ars[0].Hist[0].ID] = results + } + if err != nil { + totalResult.err = err + } + totalResultCh <- totalResult +} + +// subIndexWorker receive the task for each index and return the result for them. +func (e *AnalyzeColumnsExecV2) subIndexWorkerForNDV(taskCh chan *analyzeTask, resultsCh chan *statistics.AnalyzeResults) { + var task *analyzeTask + defer func() { + if r := recover(); r != nil { + logutil.BgLogger().Error("analyze worker panicked", zap.Any("recover", r), zap.Stack("stack")) + metrics.PanicCounter.WithLabelValues(metrics.LabelAnalyze).Inc() + resultsCh <- &statistics.AnalyzeResults{ + Err: getAnalyzePanicErr(r), + Job: task.job, + } + } + }() + for { + var ok bool + task, ok = <-taskCh + if !ok { + break + } + StartAnalyzeJob(e.ctx, task.job) + if task.taskType != idxTask { + resultsCh <- &statistics.AnalyzeResults{ + Err: errors.Errorf("incorrect analyze type"), + Job: task.job, + } + continue + } + task.idxExec.job = task.job + resultsCh <- analyzeIndexNDVPushDown(task.idxExec) + } +} + +// buildSubIndexJobForSpecialIndex builds sub index pushed down task to calculate the NDV information for indexes containing virtual column. +// This is because we cannot push the calculation of the virtual column down to the tikv side. +func (e *AnalyzeColumnsExecV2) buildSubIndexJobForSpecialIndex(indexInfos []*model.IndexInfo) []*analyzeTask { + _, offset := timeutil.Zone(e.ctx.GetSessionVars().Location()) + tasks := make([]*analyzeTask, 0, len(indexInfos)) + sc := e.ctx.GetSessionVars().StmtCtx + for _, indexInfo := range indexInfos { + base := baseAnalyzeExec{ + ctx: e.ctx, + tableID: e.TableID, + concurrency: e.ctx.GetSessionVars().IndexSerialScanConcurrency(), + analyzePB: &tipb.AnalyzeReq{ + Tp: tipb.AnalyzeType_TypeIndex, + Flags: sc.PushDownFlags(), + TimeZoneOffset: offset, + }, + snapshot: e.snapshot, + } + idxExec := &AnalyzeIndexExec{ + baseAnalyzeExec: base, + isCommonHandle: e.tableInfo.IsCommonHandle, + idxInfo: indexInfo, + } + idxExec.opts = make(map[ast.AnalyzeOptionType]uint64, len(ast.AnalyzeOptionString)) + idxExec.opts[ast.AnalyzeOptNumTopN] = 0 + idxExec.opts[ast.AnalyzeOptCMSketchDepth] = 0 + idxExec.opts[ast.AnalyzeOptCMSketchWidth] = 0 + idxExec.opts[ast.AnalyzeOptNumSamples] = 0 + idxExec.opts[ast.AnalyzeOptNumBuckets] = 1 + statsVersion := new(int32) + *statsVersion = statistics.Version1 + // No Top-N + topnSize := int32(0) + idxExec.analyzePB.IdxReq = &tipb.AnalyzeIndexReq{ + // One bucket to store the null for null histogram. + BucketSize: 1, + NumColumns: int32(len(indexInfo.Columns)), + TopNSize: &topnSize, + Version: statsVersion, + SketchSize: maxSketchSize, + } + if idxExec.isCommonHandle && indexInfo.Primary { + idxExec.analyzePB.Tp = tipb.AnalyzeType_TypeCommonHandle + } + // No CM-Sketch. + depth := int32(0) + width := int32(0) + idxExec.analyzePB.IdxReq.CmsketchDepth = &depth + idxExec.analyzePB.IdxReq.CmsketchWidth = &width + autoAnalyze := "" + if e.ctx.GetSessionVars().InRestrictedSQL { + autoAnalyze = "auto " + } + job := &statistics.AnalyzeJob{DBName: e.job.DBName, TableName: e.job.TableName, PartitionName: e.job.PartitionName, JobInfo: autoAnalyze + "analyze ndv for index " + indexInfo.Name.O} + idxExec.job = job + tasks = append(tasks, &analyzeTask{ + taskType: idxTask, + idxExec: idxExec, + job: job, + }) + } + return tasks +} + +func (e *AnalyzeColumnsExecV2) subMergeWorker(resultCh chan<- *samplingMergeResult, taskCh <-chan []byte, l int, isClosedChanThread bool) { + defer func() { + if r := recover(); r != nil { + logutil.BgLogger().Error("analyze worker panicked", zap.Any("recover", r), zap.Stack("stack")) + metrics.PanicCounter.WithLabelValues(metrics.LabelAnalyze).Inc() + resultCh <- &samplingMergeResult{err: getAnalyzePanicErr(r)} + } + // Consume the remaining things. + for { + _, ok := <-taskCh + if !ok { + break + } + } + e.samplingMergeWg.Done() + if isClosedChanThread { + e.samplingMergeWg.Wait() + close(resultCh) + } + }() + failpoint.Inject("mockAnalyzeSamplingMergeWorkerPanic", func() { + panic("failpoint triggered") + }) + retCollector := statistics.NewRowSampleCollector(int(e.analyzePB.ColReq.SampleSize), e.analyzePB.ColReq.GetSampleRate(), l) + for i := 0; i < l; i++ { + retCollector.Base().FMSketches = append(retCollector.Base().FMSketches, statistics.NewFMSketch(maxSketchSize)) + } + for { + data, ok := <-taskCh + if !ok { + break + } + dataSize := int64(cap(data)) + colResp := &tipb.AnalyzeColumnsResp{} + err := colResp.Unmarshal(data) + if err != nil { + resultCh <- &samplingMergeResult{err: err} + return + } + colRespSize := int64(colResp.Size()) + e.memTracker.Consume(colRespSize) + subCollector := statistics.NewRowSampleCollector(int(e.analyzePB.ColReq.SampleSize), e.analyzePB.ColReq.GetSampleRate(), l) + subCollector.Base().FromProto(colResp.RowCollector, e.memTracker) + UpdateAnalyzeJob(e.ctx, e.job, subCollector.Base().Count) + oldRetCollectorSize := retCollector.Base().MemSize + retCollector.MergeCollector(subCollector) + newRetCollectorSize := retCollector.Base().MemSize + subCollectorSize := subCollector.Base().MemSize + e.memTracker.Consume(newRetCollectorSize - dataSize - colRespSize - oldRetCollectorSize - subCollectorSize) + } + resultCh <- &samplingMergeResult{collector: retCollector} +} + +func (e *AnalyzeColumnsExecV2) subBuildWorker(resultCh chan error, taskCh chan *samplingBuildTask, hists []*statistics.Histogram, topns []*statistics.TopN, collectors []*statistics.SampleCollector, exitCh chan struct{}) { + defer func() { + if r := recover(); r != nil { + logutil.BgLogger().Error("analyze worker panicked", zap.Any("recover", r), zap.Stack("stack")) + metrics.PanicCounter.WithLabelValues(metrics.LabelAnalyze).Inc() + resultCh <- getAnalyzePanicErr(r) + } + }() + failpoint.Inject("mockAnalyzeSamplingBuildWorkerPanic", func() { + panic("failpoint triggered") + }) + colLen := len(e.colsInfo) +workLoop: + for { + select { + case task, ok := <-taskCh: + if !ok { + break workLoop + } + var collector *statistics.SampleCollector + if task.isColumn { + if e.colsInfo[task.slicePos].IsGenerated() && !e.colsInfo[task.slicePos].GeneratedStored { + hists[task.slicePos] = nil + topns[task.slicePos] = nil + continue + } + sampleNum := task.rootRowCollector.Base().Samples.Len() + sampleItems := make([]*statistics.SampleItem, 0, sampleNum) + // consume mandatory memory at the beginning, including empty SampleItems of all sample rows, if exceeds, fast fail + collectorMemSize := int64(sampleNum) * (8 + statistics.EmptySampleItemSize) + e.memTracker.Consume(collectorMemSize) + bufferedMemSize := int64(0) + var collator collate.Collator + ft := e.colsInfo[task.slicePos].FieldType + // When it's new collation data, we need to use its collate key instead of original value because only + // the collate key can ensure the correct ordering. + // This is also corresponding to similar operation in (*statistics.Column).GetColumnRowCount(). + if ft.EvalType() == types.ETString && ft.GetType() != mysql.TypeEnum && ft.GetType() != mysql.TypeSet { + collator = collate.GetCollator(ft.GetCollate()) + } + for j, row := range task.rootRowCollector.Base().Samples { + if row.Columns[task.slicePos].IsNull() { + continue + } + val := row.Columns[task.slicePos] + // If this value is very big, we think that it is not a value that can occur many times. So we don't record it. + if len(val.GetBytes()) > statistics.MaxSampleValueLength { + continue + } + if collator != nil { + val.SetBytes(collator.Key(val.GetString())) + deltaSize := int64(cap(val.GetBytes())) + collectorMemSize += deltaSize + e.memTracker.BufferedConsume(&bufferedMemSize, deltaSize) + } + sampleItems = append(sampleItems, &statistics.SampleItem{ + Value: val, + Ordinal: j, + }) + } + e.memTracker.Consume(bufferedMemSize) + collector = &statistics.SampleCollector{ + Samples: sampleItems, + NullCount: task.rootRowCollector.Base().NullCount[task.slicePos], + Count: task.rootRowCollector.Base().Count - task.rootRowCollector.Base().NullCount[task.slicePos], + FMSketch: task.rootRowCollector.Base().FMSketches[task.slicePos], + TotalSize: task.rootRowCollector.Base().TotalSizes[task.slicePos], + MemSize: collectorMemSize, + } + } else { + var tmpDatum types.Datum + var err error + idx := e.indexes[task.slicePos-colLen] + sampleNum := task.rootRowCollector.Base().Samples.Len() + sampleItems := make([]*statistics.SampleItem, 0, sampleNum) + // consume mandatory memory at the beginning, including all SampleItems, if exceeds, fast fail + // 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) + indexSampleCollectLoop: + for _, row := range task.rootRowCollector.Base().Samples { + if len(idx.Columns) == 1 && row.Columns[idx.Columns[0].Offset].IsNull() { + continue + } + b := make([]byte, 0, 8) + for _, col := range idx.Columns { + // If the index value contains one value which is too long, we think that it's a value that doesn't occur many times. + if len(row.Columns[col.Offset].GetBytes()) > statistics.MaxSampleValueLength { + continue indexSampleCollectLoop + } + 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) + if err != nil { + resultCh <- err + continue workLoop + } + continue + } + b, err = codec.EncodeKey(e.ctx.GetSessionVars().StmtCtx, b, row.Columns[col.Offset]) + if err != nil { + resultCh <- err + continue workLoop + } + } + sampleItems = append(sampleItems, &statistics.SampleItem{ + Value: types.NewBytesDatum(b), + }) + } + collector = &statistics.SampleCollector{ + Samples: sampleItems, + NullCount: task.rootRowCollector.Base().NullCount[task.slicePos], + Count: task.rootRowCollector.Base().Count - task.rootRowCollector.Base().NullCount[task.slicePos], + FMSketch: task.rootRowCollector.Base().FMSketches[task.slicePos], + TotalSize: task.rootRowCollector.Base().TotalSizes[task.slicePos], + MemSize: collectorMemSize, + } + } + if task.isColumn { + collectors[task.slicePos] = collector + } + releaseCollectorMemory := func() { + if !task.isColumn { + e.memTracker.Consume(-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) + if err != nil { + resultCh <- err + releaseCollectorMemory() + continue + } + finalMemSize := hist.MemoryUsage() + topn.MemoryUsage() + e.memTracker.Consume(finalMemSize) + hists[task.slicePos] = hist + topns[task.slicePos] = topn + resultCh <- nil + releaseCollectorMemory() + case <-exitCh: + return + } + } +} + +type analyzeIndexNDVTotalResult struct { + results map[int64]*statistics.AnalyzeResults + err error +} + +type samplingMergeResult struct { + collector statistics.RowSampleCollector + err error +} + +type samplingBuildTask struct { + id int64 + rootRowCollector statistics.RowSampleCollector + tp *types.FieldType + isColumn bool + slicePos int +} + +func readDataAndSendTask(ctx sessionctx.Context, handler *tableResultHandler, mergeTaskCh chan []byte, memTracker *memory.Tracker) error { + defer close(mergeTaskCh) + for { + failpoint.Inject("mockKillRunningV2AnalyzeJob", func() { + dom := domain.GetDomain(ctx) + dom.SysProcTracker().KillSysProcess(util.GetAutoAnalyzeProcID(dom.ServerID)) + }) + if atomic.LoadUint32(&ctx.GetSessionVars().Killed) == 1 { + return errors.Trace(ErrQueryInterrupted) + } + failpoint.Inject("mockSlowAnalyzeV2", func() { + time.Sleep(1000 * time.Second) + }) + data, err := handler.nextRaw(context.TODO()) + if err != nil { + return errors.Trace(err) + } + if data == nil { + break + } + memTracker.Consume(int64(cap(data))) + mergeTaskCh <- data + } + return nil +} diff --git a/executor/analyze_fast.go b/executor/analyze_fast.go new file mode 100644 index 0000000000000..27e514150e314 --- /dev/null +++ b/executor/analyze_fast.go @@ -0,0 +1,642 @@ +// 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 executor + +import ( + "bytes" + "context" + "math" + "math/rand" + "sort" + "strings" + "sync" + "sync/atomic" + "time" + + "github.com/pingcap/errors" + "github.com/pingcap/tidb/domain" + "github.com/pingcap/tidb/kv" + "github.com/pingcap/tidb/metrics" + "github.com/pingcap/tidb/parser/ast" + "github.com/pingcap/tidb/parser/model" + "github.com/pingcap/tidb/parser/mysql" + "github.com/pingcap/tidb/parser/terror" + "github.com/pingcap/tidb/planner/core" + "github.com/pingcap/tidb/sessionctx" + "github.com/pingcap/tidb/statistics" + derr "github.com/pingcap/tidb/store/driver/error" + "github.com/pingcap/tidb/table" + "github.com/pingcap/tidb/tablecodec" + "github.com/pingcap/tidb/types" + "github.com/pingcap/tidb/util/codec" + "github.com/pingcap/tidb/util/mathutil" + "github.com/pingcap/tidb/util/sqlexec" + "github.com/tikv/client-go/v2/tikv" +) + +var ( + fastAnalyzeHistogramSample = metrics.FastAnalyzeHistogram.WithLabelValues(metrics.LblGeneral, "sample") + fastAnalyzeHistogramAccessRegions = metrics.FastAnalyzeHistogram.WithLabelValues(metrics.LblGeneral, "access_regions") + fastAnalyzeHistogramScanKeys = metrics.FastAnalyzeHistogram.WithLabelValues(metrics.LblGeneral, "scan_keys") +) + +func analyzeFastExec(exec *AnalyzeFastExec) *statistics.AnalyzeResults { + hists, cms, topNs, fms, err := exec.buildStats() + if err != nil { + return &statistics.AnalyzeResults{Err: err, Job: exec.job} + } + var results []*statistics.AnalyzeResult + pkColCount := pkColsCount(exec.handleCols) + if len(exec.idxsInfo) > 0 { + idxResult := &statistics.AnalyzeResult{ + Hist: hists[pkColCount+len(exec.colsInfo):], + Cms: cms[pkColCount+len(exec.colsInfo):], + TopNs: topNs[pkColCount+len(exec.colsInfo):], + Fms: fms[pkColCount+len(exec.colsInfo):], + IsIndex: 1, + } + results = append(results, idxResult) + } + colResult := &statistics.AnalyzeResult{ + Hist: hists[:pkColCount+len(exec.colsInfo)], + Cms: cms[:pkColCount+len(exec.colsInfo)], + TopNs: topNs[:pkColCount+len(exec.colsInfo)], + Fms: fms[:pkColCount+len(exec.colsInfo)], + } + results = append(results, colResult) + hist := hists[0] + cnt := hist.NullCount + if hist.Len() > 0 { + cnt += hist.Buckets[hist.Len()-1].Count + } + if exec.rowCount != 0 { + cnt = exec.rowCount + } + return &statistics.AnalyzeResults{ + TableID: exec.tableID, + Ars: results, + Job: exec.job, + StatsVer: statistics.Version1, + Count: cnt, + Snapshot: exec.snapshot, + } +} + +// AnalyzeFastExec represents Fast Analyze executor. +type AnalyzeFastExec struct { + baseAnalyzeExec + handleCols core.HandleCols + colsInfo []*model.ColumnInfo + idxsInfo []*model.IndexInfo + tblInfo *model.TableInfo + cache *tikv.RegionCache + wg *sync.WaitGroup + rowCount int64 + sampCursor int32 + sampTasks []*tikv.KeyLocation + scanTasks []*tikv.KeyLocation + collectors []*statistics.SampleCollector + randSeed int64 + estSampStep uint32 +} + +func (e *AnalyzeFastExec) calculateEstimateSampleStep() (err error) { + exec := e.ctx.(sqlexec.RestrictedSQLExecutor) + rows, _, err := exec.ExecRestrictedSQL(context.TODO(), nil, "select flag from mysql.stats_histograms where table_id = %?", e.tableID.GetStatisticsID()) + if err != nil { + return + } + var historyRowCount uint64 + hasBeenAnalyzed := len(rows) != 0 && rows[0].GetInt64(0) == statistics.AnalyzeFlag + if hasBeenAnalyzed { + historyRowCount = uint64(domain.GetDomain(e.ctx).StatsHandle().GetPartitionStats(e.tblInfo, e.tableID.GetStatisticsID()).Count) + } else { + dbInfo, ok := domain.GetDomain(e.ctx).InfoSchema().SchemaByTable(e.tblInfo) + if !ok { + err = errors.Errorf("database not found for table '%s'", e.tblInfo.Name) + return + } + var rollbackFn func() error + rollbackFn, err = e.activateTxnForRowCount() + if err != nil { + return + } + defer func() { + if rollbackFn != nil { + err = rollbackFn() + } + }() + sql := new(strings.Builder) + sqlexec.MustFormatSQL(sql, "select count(*) from %n.%n", dbInfo.Name.L, e.tblInfo.Name.L) + + if e.tblInfo.ID != e.tableID.GetStatisticsID() { + for _, definition := range e.tblInfo.Partition.Definitions { + if definition.ID == e.tableID.GetStatisticsID() { + sqlexec.MustFormatSQL(sql, " partition(%n)", definition.Name.L) + break + } + } + } + var rs sqlexec.RecordSet + rs, err = e.ctx.(sqlexec.SQLExecutor).ExecuteInternal(context.TODO(), sql.String()) + if err != nil { + return + } + if rs == nil { + err = errors.Trace(errors.Errorf("empty record set")) + return + } + defer terror.Call(rs.Close) + chk := rs.NewChunk(nil) + err = rs.Next(context.TODO(), chk) + if err != nil { + return + } + e.rowCount = chk.GetRow(0).GetInt64(0) + historyRowCount = uint64(e.rowCount) + } + totalSampSize := e.opts[ast.AnalyzeOptNumSamples] + e.estSampStep = uint32(historyRowCount / totalSampSize) + return +} + +func (e *AnalyzeFastExec) activateTxnForRowCount() (rollbackFn func() error, err error) { + txn, err := e.ctx.Txn(true) + if err != nil { + if kv.ErrInvalidTxn.Equal(err) { + _, err := e.ctx.(sqlexec.SQLExecutor).ExecuteInternal(context.TODO(), "begin") + if err != nil { + return nil, errors.Trace(err) + } + rollbackFn = func() error { + _, err := e.ctx.(sqlexec.SQLExecutor).ExecuteInternal(context.TODO(), "rollback") + return err + } + } else { + return nil, errors.Trace(err) + } + } + txn.SetOption(kv.Priority, kv.PriorityLow) + txn.SetOption(kv.IsolationLevel, kv.SI) + txn.SetOption(kv.NotFillCache, true) + return rollbackFn, nil +} + +// buildSampTask build sample tasks. +func (e *AnalyzeFastExec) buildSampTask() (err error) { + bo := tikv.NewBackofferWithVars(context.Background(), 500, nil) + store, _ := e.ctx.GetStore().(tikv.Storage) + e.cache = store.GetRegionCache() + accessRegionsCounter := 0 + pid := e.tableID.GetStatisticsID() + startKey, endKey := tablecodec.GetTableHandleKeyRange(pid) + targetKey := startKey + for { + // Search for the region which contains the targetKey. + loc, err := e.cache.LocateKey(bo, targetKey) + if err != nil { + return derr.ToTiDBErr(err) + } + if bytes.Compare(endKey, loc.StartKey) < 0 { + break + } + accessRegionsCounter++ + + // Set the next search key. + targetKey = loc.EndKey + + // If the KV pairs in the region all belonging to the table, add it to the sample task. + if bytes.Compare(startKey, loc.StartKey) <= 0 && len(loc.EndKey) != 0 && bytes.Compare(loc.EndKey, endKey) <= 0 { + e.sampTasks = append(e.sampTasks, loc) + continue + } + + e.scanTasks = append(e.scanTasks, loc) + if bytes.Compare(loc.StartKey, startKey) < 0 { + loc.StartKey = startKey + } + if bytes.Compare(endKey, loc.EndKey) < 0 || len(loc.EndKey) == 0 { + loc.EndKey = endKey + break + } + } + fastAnalyzeHistogramAccessRegions.Observe(float64(accessRegionsCounter)) + + return nil +} + +func (e *AnalyzeFastExec) decodeValues(handle kv.Handle, sValue []byte, wantCols map[int64]*types.FieldType) (values map[int64]types.Datum, err error) { + loc := e.ctx.GetSessionVars().Location() + values, err = tablecodec.DecodeRowToDatumMap(sValue, wantCols, loc) + if err != nil || e.handleCols == nil { + return values, err + } + wantCols = make(map[int64]*types.FieldType, e.handleCols.NumCols()) + handleColIDs := make([]int64, e.handleCols.NumCols()) + for i := 0; i < e.handleCols.NumCols(); i++ { + c := e.handleCols.GetCol(i) + handleColIDs[i] = c.ID + wantCols[c.ID] = c.RetType + } + return tablecodec.DecodeHandleToDatumMap(handle, handleColIDs, wantCols, loc, values) +} + +func (e *AnalyzeFastExec) getValueByInfo(colInfo *model.ColumnInfo, values map[int64]types.Datum) (types.Datum, error) { + val, ok := values[colInfo.ID] + if !ok { + return table.GetColOriginDefaultValue(e.ctx, colInfo) + } + return val, nil +} + +func (e *AnalyzeFastExec) updateCollectorSamples(sValue []byte, sKey kv.Key, samplePos int32) (err error) { + var handle kv.Handle + handle, err = tablecodec.DecodeRowKey(sKey) + if err != nil { + return err + } + + // Decode cols for analyze table + wantCols := make(map[int64]*types.FieldType, len(e.colsInfo)) + for _, col := range e.colsInfo { + wantCols[col.ID] = &col.FieldType + } + + // Pre-build index->cols relationship and refill wantCols if not exists(analyze index) + index2Cols := make([][]*model.ColumnInfo, len(e.idxsInfo)) + for i, idxInfo := range e.idxsInfo { + for _, idxCol := range idxInfo.Columns { + colInfo := e.tblInfo.Columns[idxCol.Offset] + index2Cols[i] = append(index2Cols[i], colInfo) + wantCols[colInfo.ID] = &colInfo.FieldType + } + } + + // Decode the cols value in order. + var values map[int64]types.Datum + values, err = e.decodeValues(handle, sValue, wantCols) + if err != nil { + return err + } + // Update the primary key collector. + pkColsCount := pkColsCount(e.handleCols) + for i := 0; i < pkColsCount; i++ { + col := e.handleCols.GetCol(i) + v, ok := values[col.ID] + if !ok { + return errors.Trace(errors.Errorf("Primary key column not found")) + } + if e.collectors[i].Samples[samplePos] == nil { + e.collectors[i].Samples[samplePos] = &statistics.SampleItem{} + } + e.collectors[i].Samples[samplePos].Handle = handle + e.collectors[i].Samples[samplePos].Value = v + } + + // Update the columns' collectors. + for j, colInfo := range e.colsInfo { + v, err := e.getValueByInfo(colInfo, values) + if err != nil { + return err + } + if e.collectors[pkColsCount+j].Samples[samplePos] == nil { + e.collectors[pkColsCount+j].Samples[samplePos] = &statistics.SampleItem{} + } + e.collectors[pkColsCount+j].Samples[samplePos].Handle = handle + e.collectors[pkColsCount+j].Samples[samplePos].Value = v + } + // Update the indexes' collectors. + for j, idxInfo := range e.idxsInfo { + idxVals := make([]types.Datum, 0, len(idxInfo.Columns)) + cols := index2Cols[j] + for _, colInfo := range cols { + v, err := e.getValueByInfo(colInfo, values) + if err != nil { + return err + } + idxVals = append(idxVals, v) + } + var keyBytes []byte + keyBytes, err = codec.EncodeKey(e.ctx.GetSessionVars().StmtCtx, keyBytes, idxVals...) + if err != nil { + return err + } + if e.collectors[len(e.colsInfo)+pkColsCount+j].Samples[samplePos] == nil { + e.collectors[len(e.colsInfo)+pkColsCount+j].Samples[samplePos] = &statistics.SampleItem{} + } + e.collectors[len(e.colsInfo)+pkColsCount+j].Samples[samplePos].Handle = handle + e.collectors[len(e.colsInfo)+pkColsCount+j].Samples[samplePos].Value = types.NewBytesDatum(keyBytes) + } + return nil +} + +func (e *AnalyzeFastExec) handleBatchSeekResponse(kvMap map[string][]byte) (err error) { + length := int32(len(kvMap)) + newCursor := atomic.AddInt32(&e.sampCursor, length) + samplePos := newCursor - length + for sKey, sValue := range kvMap { + exceedNeededSampleCounts := uint64(samplePos) >= e.opts[ast.AnalyzeOptNumSamples] + if exceedNeededSampleCounts { + atomic.StoreInt32(&e.sampCursor, int32(e.opts[ast.AnalyzeOptNumSamples])) + break + } + err = e.updateCollectorSamples(sValue, kv.Key(sKey), samplePos) + if err != nil { + return err + } + samplePos++ + } + return nil +} + +func (e *AnalyzeFastExec) handleScanIter(iter kv.Iterator) (scanKeysSize int, err error) { + rander := rand.New(rand.NewSource(e.randSeed)) // #nosec G404 + sampleSize := int64(e.opts[ast.AnalyzeOptNumSamples]) + for ; iter.Valid() && err == nil; err = iter.Next() { + // reservoir sampling + scanKeysSize++ + randNum := rander.Int63n(int64(e.sampCursor) + int64(scanKeysSize)) + if randNum > sampleSize && e.sampCursor == int32(sampleSize) { + continue + } + + p := rander.Int31n(int32(sampleSize)) + if e.sampCursor < int32(sampleSize) { + p = e.sampCursor + e.sampCursor++ + } + + err = e.updateCollectorSamples(iter.Value(), iter.Key(), p) + if err != nil { + return + } + } + return +} + +func (e *AnalyzeFastExec) handleScanTasks(bo *tikv.Backoffer) (keysSize int, err error) { + snapshot := e.ctx.GetStore().GetSnapshot(kv.NewVersion(e.snapshot)) + snapshot.SetOption(kv.IsolationLevel, kv.SI) + if e.ctx.GetSessionVars().GetReplicaRead().IsFollowerRead() { + snapshot.SetOption(kv.ReplicaRead, kv.ReplicaReadFollower) + } + setOptionForTopSQL(e.ctx.GetSessionVars().StmtCtx, snapshot) + for _, t := range e.scanTasks { + iter, err := snapshot.Iter(kv.Key(t.StartKey), kv.Key(t.EndKey)) + if err != nil { + return keysSize, err + } + size, err := e.handleScanIter(iter) + keysSize += size + if err != nil { + return keysSize, err + } + } + return keysSize, nil +} + +func (e *AnalyzeFastExec) handleSampTasks(workID int, step uint32, err *error) { + defer e.wg.Done() + snapshot := e.ctx.GetStore().GetSnapshot(kv.NewVersion(e.snapshot)) + snapshot.SetOption(kv.NotFillCache, true) + snapshot.SetOption(kv.IsolationLevel, kv.SI) + snapshot.SetOption(kv.Priority, kv.PriorityLow) + setOptionForTopSQL(e.ctx.GetSessionVars().StmtCtx, snapshot) + readReplicaType := e.ctx.GetSessionVars().GetReplicaRead() + if readReplicaType.IsFollowerRead() { + snapshot.SetOption(kv.ReplicaRead, readReplicaType) + } + + rander := rand.New(rand.NewSource(e.randSeed)) // #nosec G404 + for i := workID; i < len(e.sampTasks); i += e.concurrency { + task := e.sampTasks[i] + // randomize the estimate step in range [step - 2 * sqrt(step), step] + if step > 4 { // 2*sqrt(x) < x + lower, upper := step-uint32(2*math.Sqrt(float64(step))), step + step = uint32(rander.Intn(int(upper-lower))) + lower + } + snapshot.SetOption(kv.SampleStep, step) + kvMap := make(map[string][]byte) + var iter kv.Iterator + iter, *err = snapshot.Iter(kv.Key(task.StartKey), kv.Key(task.EndKey)) + if *err != nil { + return + } + for iter.Valid() { + kvMap[string(iter.Key())] = iter.Value() + *err = iter.Next() + if *err != nil { + return + } + } + fastAnalyzeHistogramSample.Observe(float64(len(kvMap))) + + *err = e.handleBatchSeekResponse(kvMap) + if *err != nil { + return + } + } +} + +func (e *AnalyzeFastExec) buildColumnStats(ID int64, collector *statistics.SampleCollector, tp *types.FieldType, rowCount int64) (*statistics.Histogram, *statistics.CMSketch, *statistics.TopN, *statistics.FMSketch, error) { + sc := e.ctx.GetSessionVars().StmtCtx + data := make([][]byte, 0, len(collector.Samples)) + fmSketch := statistics.NewFMSketch(maxSketchSize) + notNullSamples := make([]*statistics.SampleItem, 0, len(collector.Samples)) + for i, sample := range collector.Samples { + sample.Ordinal = i + if sample.Value.IsNull() { + collector.NullCount++ + continue + } + notNullSamples = append(notNullSamples, sample) + err := fmSketch.InsertValue(sc, sample.Value) + if err != nil { + return nil, nil, nil, nil, err + } + valBytes, err := tablecodec.EncodeValue(sc, nil, sample.Value) + if err != nil { + return nil, nil, nil, nil, err + } + data = append(data, valBytes) + } + // Build CMSketch. + cmSketch, topN, ndv, scaleRatio := statistics.NewCMSketchAndTopN(int32(e.opts[ast.AnalyzeOptCMSketchDepth]), int32(e.opts[ast.AnalyzeOptCMSketchWidth]), data, uint32(e.opts[ast.AnalyzeOptNumTopN]), uint64(rowCount)) + // Build Histogram. + collector.Samples = notNullSamples + hist, err := statistics.BuildColumnHist(e.ctx, int64(e.opts[ast.AnalyzeOptNumBuckets]), ID, collector, tp, rowCount, int64(ndv), collector.NullCount*int64(scaleRatio)) + return hist, cmSketch, topN, fmSketch, err +} + +func (e *AnalyzeFastExec) buildIndexStats(idxInfo *model.IndexInfo, collector *statistics.SampleCollector, rowCount int64) (*statistics.Histogram, *statistics.CMSketch, *statistics.TopN, error) { + data := make([][][]byte, len(idxInfo.Columns)) + for _, sample := range collector.Samples { + var preLen int + remained := sample.Value.GetBytes() + // We need to insert each prefix values into CM Sketch. + for i := 0; i < len(idxInfo.Columns); i++ { + var err error + var value []byte + value, remained, err = codec.CutOne(remained) + if err != nil { + return nil, nil, nil, err + } + preLen += len(value) + data[i] = append(data[i], sample.Value.GetBytes()[:preLen]) + } + } + numTop := uint32(e.opts[ast.AnalyzeOptNumTopN]) + cmSketch, topN, ndv, scaleRatio := statistics.NewCMSketchAndTopN(int32(e.opts[ast.AnalyzeOptCMSketchDepth]), int32(e.opts[ast.AnalyzeOptCMSketchWidth]), data[0], numTop, uint64(rowCount)) + // Build CM Sketch for each prefix and merge them into one. + for i := 1; i < len(idxInfo.Columns); i++ { + var curCMSketch *statistics.CMSketch + var curTopN *statistics.TopN + // `ndv` should be the ndv of full index, so just rewrite it here. + curCMSketch, curTopN, ndv, scaleRatio = statistics.NewCMSketchAndTopN(int32(e.opts[ast.AnalyzeOptCMSketchDepth]), int32(e.opts[ast.AnalyzeOptCMSketchWidth]), data[i], numTop, uint64(rowCount)) + err := cmSketch.MergeCMSketch(curCMSketch) + if err != nil { + return nil, nil, nil, err + } + statistics.MergeTopNAndUpdateCMSketch(topN, curTopN, cmSketch, numTop) + } + // Build Histogram. + hist, err := statistics.BuildColumnHist(e.ctx, int64(e.opts[ast.AnalyzeOptNumBuckets]), idxInfo.ID, collector, types.NewFieldType(mysql.TypeBlob), rowCount, int64(ndv), collector.NullCount*int64(scaleRatio)) + return hist, cmSketch, topN, err +} + +func (e *AnalyzeFastExec) runTasks() ([]*statistics.Histogram, []*statistics.CMSketch, []*statistics.TopN, []*statistics.FMSketch, error) { + errs := make([]error, e.concurrency) + pkColCount := pkColsCount(e.handleCols) + // collect column samples and primary key samples and index samples. + length := len(e.colsInfo) + pkColCount + len(e.idxsInfo) + e.collectors = make([]*statistics.SampleCollector, length) + for i := range e.collectors { + e.collectors[i] = &statistics.SampleCollector{ + MaxSampleSize: int64(e.opts[ast.AnalyzeOptNumSamples]), + Samples: make([]*statistics.SampleItem, e.opts[ast.AnalyzeOptNumSamples]), + } + } + + e.wg.Add(e.concurrency) + bo := tikv.NewBackofferWithVars(context.Background(), 500, nil) + for i := 0; i < e.concurrency; i++ { + go e.handleSampTasks(i, e.estSampStep, &errs[i]) + } + e.wg.Wait() + for _, err := range errs { + if err != nil { + return nil, nil, nil, nil, err + } + } + + scanKeysSize, err := e.handleScanTasks(bo) + fastAnalyzeHistogramScanKeys.Observe(float64(scanKeysSize)) + if err != nil { + return nil, nil, nil, nil, err + } + + stats := domain.GetDomain(e.ctx).StatsHandle() + var rowCount int64 = 0 + if stats.Lease() > 0 { + if t := stats.GetPartitionStats(e.tblInfo, e.tableID.GetStatisticsID()); !t.Pseudo { + rowCount = t.Count + } + } + hists, cms, topNs, fms := make([]*statistics.Histogram, length), make([]*statistics.CMSketch, length), make([]*statistics.TopN, length), make([]*statistics.FMSketch, length) + for i := 0; i < length; i++ { + // Build collector properties. + collector := e.collectors[i] + collector.Samples = collector.Samples[:e.sampCursor] + sort.Slice(collector.Samples, func(i, j int) bool { + return collector.Samples[i].Handle.Compare(collector.Samples[j].Handle) < 0 + }) + collector.CalcTotalSize() + // Adjust the row count in case the count of `tblStats` is not accurate and too small. + rowCount = mathutil.Max(rowCount, int64(len(collector.Samples))) + // Scale the total column size. + if len(collector.Samples) > 0 { + collector.TotalSize *= rowCount / int64(len(collector.Samples)) + } + if i < pkColCount { + pkCol := e.handleCols.GetCol(i) + hists[i], cms[i], topNs[i], fms[i], err = e.buildColumnStats(pkCol.ID, e.collectors[i], pkCol.RetType, rowCount) + } else if i < pkColCount+len(e.colsInfo) { + hists[i], cms[i], topNs[i], fms[i], err = e.buildColumnStats(e.colsInfo[i-pkColCount].ID, e.collectors[i], &e.colsInfo[i-pkColCount].FieldType, rowCount) + } else { + hists[i], cms[i], topNs[i], err = e.buildIndexStats(e.idxsInfo[i-pkColCount-len(e.colsInfo)], e.collectors[i], rowCount) + } + if err != nil { + return nil, nil, nil, nil, err + } + } + return hists, cms, topNs, fms, nil +} + +func (e *AnalyzeFastExec) buildStats() (hists []*statistics.Histogram, cms []*statistics.CMSketch, topNs []*statistics.TopN, fms []*statistics.FMSketch, err error) { + // To set rand seed, it's for unit test. + // To ensure that random sequences are different in non-test environments, RandSeed must be set time.Now(). + if atomic.LoadInt64(&RandSeed) == 1 { + atomic.StoreInt64(&e.randSeed, time.Now().UnixNano()) + } else { + atomic.StoreInt64(&e.randSeed, RandSeed) + } + + err = e.buildSampTask() + if err != nil { + return nil, nil, nil, nil, err + } + + return e.runTasks() +} + +// AnalyzeTestFastExec is for fast sample in unit test. +type AnalyzeTestFastExec struct { + AnalyzeFastExec + Ctx sessionctx.Context + TableID statistics.AnalyzeTableID + HandleCols core.HandleCols + ColsInfo []*model.ColumnInfo + IdxsInfo []*model.IndexInfo + Concurrency int + Collectors []*statistics.SampleCollector + TblInfo *model.TableInfo + Opts map[ast.AnalyzeOptionType]uint64 + Snapshot uint64 +} + +// TestFastSample only test the fast sample in unit test. +func (e *AnalyzeTestFastExec) TestFastSample() error { + e.ctx = e.Ctx + e.handleCols = e.HandleCols + e.colsInfo = e.ColsInfo + e.idxsInfo = e.IdxsInfo + e.concurrency = e.Concurrency + e.tableID = e.TableID + e.wg = &sync.WaitGroup{} + e.job = &statistics.AnalyzeJob{} + e.tblInfo = e.TblInfo + e.opts = e.Opts + e.snapshot = e.Snapshot + _, _, _, _, err := e.buildStats() + e.Collectors = e.collectors + return err +} + +func pkColsCount(handleCols core.HandleCols) int { + if handleCols == nil { + return 0 + } + return handleCols.NumCols() +} diff --git a/executor/analyze_global_stats.go b/executor/analyze_global_stats.go new file mode 100644 index 0000000000000..85ff647255212 --- /dev/null +++ b/executor/analyze_global_stats.go @@ -0,0 +1,80 @@ +// 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 executor + +import ( + "context" + + "github.com/pingcap/tidb/domain" + "github.com/pingcap/tidb/infoschema" + "github.com/pingcap/tidb/types" + "github.com/pingcap/tidb/util/logutil" + "go.uber.org/zap" +) + +type globalStatsKey struct { + tableID int64 + indexID int64 +} + +type globalStatsInfo struct { + isIndex int + // When the `isIndex == 0`, histIDs will be the column IDs. + // Otherwise, histIDs will only contain the index ID. + histIDs []int64 + statsVersion int +} + +// globalStatsMap is a map used to store which partition tables and the corresponding indexes need global-level stats. +// The meaning of key in map is the structure that used to store the tableID and indexID. +// The meaning of value in map is some additional information needed to build global-level stats. +type globalStatsMap map[globalStatsKey]globalStatsInfo + +func (e *AnalyzeExec) handleGlobalStats(ctx context.Context, needGlobalStats bool, globalStatsMap globalStatsMap) error { + if !needGlobalStats { + return nil + } + statsHandle := domain.GetDomain(e.ctx).StatsHandle() + for globalStatsID, info := range globalStatsMap { + globalOpts := e.opts + if e.OptionsMap != nil { + if v2Options, ok := e.OptionsMap[globalStatsID.tableID]; ok { + globalOpts = v2Options.FilledOpts + } + } + globalStats, err := statsHandle.MergePartitionStats2GlobalStatsByTableID(e.ctx, globalOpts, e.ctx.GetInfoSchema().(infoschema.InfoSchema), globalStatsID.tableID, info.isIndex, info.histIDs) + if err != nil { + if types.ErrPartitionStatsMissing.Equal(err) || types.ErrPartitionColumnStatsMissing.Equal(err) { + // When we find some partition-level stats are missing, we need to report warning. + e.ctx.GetSessionVars().StmtCtx.AppendWarning(err) + continue + } + return err + } + for i := 0; i < globalStats.Num; i++ { + hg, cms, topN := globalStats.Hg[i], globalStats.Cms[i], globalStats.TopN[i] + // fms for global stats doesn't need to dump to kv. + err = statsHandle.SaveStatsToStorage(globalStatsID.tableID, globalStats.Count, info.isIndex, hg, cms, topN, info.statsVersion, 1, true) + if err != nil { + logutil.Logger(ctx).Error("save global-level stats to storage failed", zap.Error(err)) + } + // Dump stats to historical storage. + if err := e.recordHistoricalStats(globalStatsID.tableID); err != nil { + logutil.BgLogger().Error("record historical stats failed", zap.Error(err)) + } + } + } + return nil +} diff --git a/executor/analyze_idx.go b/executor/analyze_idx.go new file mode 100644 index 0000000000000..12a47da479481 --- /dev/null +++ b/executor/analyze_idx.go @@ -0,0 +1,323 @@ +// 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 executor + +import ( + "context" + "sync/atomic" + "time" + + "github.com/pingcap/errors" + "github.com/pingcap/failpoint" + "github.com/pingcap/tidb/distsql" + "github.com/pingcap/tidb/domain" + "github.com/pingcap/tidb/parser/ast" + "github.com/pingcap/tidb/parser/model" + "github.com/pingcap/tidb/parser/mysql" + "github.com/pingcap/tidb/sessionctx" + "github.com/pingcap/tidb/statistics" + "github.com/pingcap/tidb/types" + "github.com/pingcap/tidb/util" + "github.com/pingcap/tidb/util/logutil" + "github.com/pingcap/tidb/util/ranger" + "github.com/pingcap/tipb/go-tipb" + "go.uber.org/zap" +) + +// AnalyzeIndexExec represents analyze index push down executor. +type AnalyzeIndexExec struct { + baseAnalyzeExec + + idxInfo *model.IndexInfo + isCommonHandle bool + result distsql.SelectResult + countNullRes distsql.SelectResult +} + +func analyzeIndexPushdown(idxExec *AnalyzeIndexExec) *statistics.AnalyzeResults { + ranges := ranger.FullRange() + // For single-column index, we do not load null rows from TiKV, so the built histogram would not include + // null values, and its `NullCount` would be set by result of another distsql call to get null rows. + // For multi-column index, we cannot define null for the rows, so we still use full range, and the rows + // containing null fields would exist in built histograms. Note that, the `NullCount` of histograms for + // multi-column index is always 0 then. + if len(idxExec.idxInfo.Columns) == 1 { + ranges = ranger.FullNotNullRange() + } + hist, cms, fms, topN, err := idxExec.buildStats(ranges, true) + if err != nil { + return &statistics.AnalyzeResults{Err: err, Job: idxExec.job} + } + var statsVer = statistics.Version1 + if idxExec.analyzePB.IdxReq.Version != nil { + statsVer = int(*idxExec.analyzePB.IdxReq.Version) + } + result := &statistics.AnalyzeResult{ + Hist: []*statistics.Histogram{hist}, + Cms: []*statistics.CMSketch{cms}, + TopNs: []*statistics.TopN{topN}, + Fms: []*statistics.FMSketch{fms}, + IsIndex: 1, + } + cnt := hist.NullCount + if hist.Len() > 0 { + cnt += hist.Buckets[hist.Len()-1].Count + } + if topN.TotalCount() > 0 { + cnt += int64(topN.TotalCount()) + } + return &statistics.AnalyzeResults{ + TableID: idxExec.tableID, + Ars: []*statistics.AnalyzeResult{result}, + Job: idxExec.job, + StatsVer: statsVer, + Count: cnt, + Snapshot: idxExec.snapshot, + } +} + +func (e *AnalyzeIndexExec) buildStats(ranges []*ranger.Range, considerNull bool) (hist *statistics.Histogram, cms *statistics.CMSketch, fms *statistics.FMSketch, topN *statistics.TopN, err error) { + if err = e.open(ranges, considerNull); err != nil { + return nil, nil, nil, nil, err + } + defer func() { + err1 := closeAll(e.result, e.countNullRes) + if err == nil { + err = err1 + } + }() + hist, cms, fms, topN, err = e.buildStatsFromResult(e.result, true) + if err != nil { + return nil, nil, nil, nil, err + } + if e.countNullRes != nil { + nullHist, _, _, _, err := e.buildStatsFromResult(e.countNullRes, false) + if err != nil { + return nil, nil, nil, nil, err + } + if l := nullHist.Len(); l > 0 { + hist.NullCount = nullHist.Buckets[l-1].Count + } + } + hist.ID = e.idxInfo.ID + return hist, cms, fms, topN, nil +} + +func (e *AnalyzeIndexExec) open(ranges []*ranger.Range, considerNull bool) error { + err := e.fetchAnalyzeResult(ranges, false) + if err != nil { + return err + } + if considerNull && len(e.idxInfo.Columns) == 1 { + ranges = ranger.NullRange() + err = e.fetchAnalyzeResult(ranges, true) + if err != nil { + return err + } + } + return nil +} + +// fetchAnalyzeResult builds and dispatches the `kv.Request` from given ranges, and stores the `SelectResult` +// in corresponding fields based on the input `isNullRange` argument, which indicates if the range is the +// special null range for single-column index to get the null count. +func (e *AnalyzeIndexExec) fetchAnalyzeResult(ranges []*ranger.Range, isNullRange bool) error { + var builder distsql.RequestBuilder + var kvReqBuilder *distsql.RequestBuilder + if e.isCommonHandle && e.idxInfo.Primary { + kvReqBuilder = builder.SetHandleRangesForTables(e.ctx.GetSessionVars().StmtCtx, []int64{e.tableID.GetStatisticsID()}, true, ranges, nil) + } else { + kvReqBuilder = builder.SetIndexRangesForTables(e.ctx.GetSessionVars().StmtCtx, []int64{e.tableID.GetStatisticsID()}, e.idxInfo.ID, ranges) + } + kvReqBuilder.SetResourceGroupTagger(e.ctx.GetSessionVars().StmtCtx.GetResourceGroupTagger()) + kvReq, err := kvReqBuilder. + SetAnalyzeRequest(e.analyzePB). + SetStartTS(e.snapshot). + SetKeepOrder(true). + SetConcurrency(e.concurrency). + Build() + if err != nil { + return err + } + ctx := context.TODO() + result, err := distsql.Analyze(ctx, e.ctx.GetClient(), kvReq, e.ctx.GetSessionVars().KVVars, e.ctx.GetSessionVars().InRestrictedSQL, e.ctx.GetSessionVars().StmtCtx) + if err != nil { + return err + } + if isNullRange { + e.countNullRes = result + } else { + e.result = result + } + return nil +} + +func (e *AnalyzeIndexExec) buildStatsFromResult(result distsql.SelectResult, needCMS bool) (*statistics.Histogram, *statistics.CMSketch, *statistics.FMSketch, *statistics.TopN, error) { + failpoint.Inject("buildStatsFromResult", func(val failpoint.Value) { + if val.(bool) { + failpoint.Return(nil, nil, nil, nil, errors.New("mock buildStatsFromResult error")) + } + }) + hist := &statistics.Histogram{} + var cms *statistics.CMSketch + var topn *statistics.TopN + if needCMS { + cms = statistics.NewCMSketch(int32(e.opts[ast.AnalyzeOptCMSketchDepth]), int32(e.opts[ast.AnalyzeOptCMSketchWidth])) + topn = statistics.NewTopN(int(e.opts[ast.AnalyzeOptNumTopN])) + } + fms := statistics.NewFMSketch(maxSketchSize) + statsVer := statistics.Version1 + if e.analyzePB.IdxReq.Version != nil { + statsVer = int(*e.analyzePB.IdxReq.Version) + } + for { + failpoint.Inject("mockKillRunningAnalyzeIndexJob", func() { + dom := domain.GetDomain(e.ctx) + dom.SysProcTracker().KillSysProcess(util.GetAutoAnalyzeProcID(dom.ServerID)) + }) + if atomic.LoadUint32(&e.ctx.GetSessionVars().Killed) == 1 { + return nil, nil, nil, nil, errors.Trace(ErrQueryInterrupted) + } + failpoint.Inject("mockSlowAnalyzeIndex", func() { + time.Sleep(1000 * time.Second) + }) + data, err := result.NextRaw(context.TODO()) + if err != nil { + return nil, nil, nil, nil, err + } + if data == nil { + break + } + resp := &tipb.AnalyzeIndexResp{} + err = resp.Unmarshal(data) + if err != nil { + return nil, nil, nil, nil, err + } + hist, cms, fms, topn, err = updateIndexResult(e.ctx, resp, e.job, hist, cms, fms, topn, + e.idxInfo, int(e.opts[ast.AnalyzeOptNumBuckets]), int(e.opts[ast.AnalyzeOptNumTopN]), statsVer) + if err != nil { + return nil, nil, nil, nil, err + } + } + if needCMS && topn.TotalCount() > 0 { + hist.RemoveVals(topn.TopN) + } + if needCMS && cms != nil { + cms.CalcDefaultValForAnalyze(uint64(hist.NDV)) + } + return hist, cms, fms, topn, nil +} + +func (e *AnalyzeIndexExec) buildSimpleStats(ranges []*ranger.Range, considerNull bool) (fms *statistics.FMSketch, nullHist *statistics.Histogram, err error) { + if err = e.open(ranges, considerNull); err != nil { + return nil, nil, err + } + defer func() { + err1 := closeAll(e.result, e.countNullRes) + if err == nil { + err = err1 + } + }() + _, _, fms, _, err = e.buildStatsFromResult(e.result, false) + if e.countNullRes != nil { + nullHist, _, _, _, err := e.buildStatsFromResult(e.countNullRes, false) + if err != nil { + return nil, nil, err + } + if l := nullHist.Len(); l > 0 { + return fms, nullHist, nil + } + } + return fms, nil, nil +} + +func analyzeIndexNDVPushDown(idxExec *AnalyzeIndexExec) *statistics.AnalyzeResults { + ranges := ranger.FullRange() + // For single-column index, we do not load null rows from TiKV, so the built histogram would not include + // null values, and its `NullCount` would be set by result of another distsql call to get null rows. + // For multi-column index, we cannot define null for the rows, so we still use full range, and the rows + // containing null fields would exist in built histograms. Note that, the `NullCount` of histograms for + // multi-column index is always 0 then. + if len(idxExec.idxInfo.Columns) == 1 { + ranges = ranger.FullNotNullRange() + } + fms, nullHist, err := idxExec.buildSimpleStats(ranges, len(idxExec.idxInfo.Columns) == 1) + if err != nil { + return &statistics.AnalyzeResults{Err: err, Job: idxExec.job} + } + result := &statistics.AnalyzeResult{ + Fms: []*statistics.FMSketch{fms}, + // We use histogram to get the Index's ID. + Hist: []*statistics.Histogram{statistics.NewHistogram(idxExec.idxInfo.ID, 0, 0, statistics.Version1, types.NewFieldType(mysql.TypeBlob), 0, 0)}, + IsIndex: 1, + } + r := &statistics.AnalyzeResults{ + TableID: idxExec.tableID, + Ars: []*statistics.AnalyzeResult{result}, + Job: idxExec.job, + // TODO: avoid reusing Version1. + StatsVer: statistics.Version1, + } + if nullHist != nil && nullHist.Len() > 0 { + r.Count = nullHist.Buckets[nullHist.Len()-1].Count + } + return r +} + +func updateIndexResult( + ctx sessionctx.Context, + resp *tipb.AnalyzeIndexResp, + job *statistics.AnalyzeJob, + hist *statistics.Histogram, + cms *statistics.CMSketch, + fms *statistics.FMSketch, + topn *statistics.TopN, + idxInfo *model.IndexInfo, + numBuckets int, + numTopN int, + statsVer int, +) ( + *statistics.Histogram, + *statistics.CMSketch, + *statistics.FMSketch, + *statistics.TopN, + error, +) { + var err error + needCMS := cms != nil + respHist := statistics.HistogramFromProto(resp.Hist) + if job != nil { + UpdateAnalyzeJob(ctx, job, int64(respHist.TotalRowCount())) + } + hist, err = statistics.MergeHistograms(ctx.GetSessionVars().StmtCtx, hist, respHist, numBuckets, statsVer) + if err != nil { + return nil, nil, nil, nil, err + } + if needCMS { + if resp.Cms == nil { + logutil.Logger(context.TODO()).Warn("nil CMS in response", zap.String("table", idxInfo.Table.O), zap.String("index", idxInfo.Name.O)) + } else { + cm, tmpTopN := statistics.CMSketchAndTopNFromProto(resp.Cms) + if err := cms.MergeCMSketch(cm); err != nil { + return nil, nil, nil, nil, err + } + statistics.MergeTopNAndUpdateCMSketch(topn, tmpTopN, cms, uint32(numTopN)) + } + } + if fms != nil && resp.Collector != nil && resp.Collector.FmSketch != nil { + fms.MergeFMSketch(statistics.FMSketchFromProto(resp.Collector.FmSketch)) + } + return hist, cms, fms, topn, nil +} diff --git a/executor/analyze_incremental.go b/executor/analyze_incremental.go new file mode 100644 index 0000000000000..c97805d68c72b --- /dev/null +++ b/executor/analyze_incremental.go @@ -0,0 +1,136 @@ +// 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 executor + +import ( + "math" + + "github.com/pingcap/errors" + "github.com/pingcap/tidb/parser/ast" + "github.com/pingcap/tidb/parser/mysql" + "github.com/pingcap/tidb/sessionctx/variable" + "github.com/pingcap/tidb/statistics" + "github.com/pingcap/tidb/types" + "github.com/pingcap/tidb/util/codec" + "github.com/pingcap/tidb/util/collate" + "github.com/pingcap/tidb/util/ranger" +) + +type analyzeIndexIncrementalExec struct { + AnalyzeIndexExec + oldHist *statistics.Histogram + oldCMS *statistics.CMSketch + oldTopN *statistics.TopN +} + +func analyzeIndexIncremental(idxExec *analyzeIndexIncrementalExec) *statistics.AnalyzeResults { + var statsVer = statistics.Version1 + if idxExec.analyzePB.IdxReq.Version != nil { + statsVer = int(*idxExec.analyzePB.IdxReq.Version) + } + pruneMode := variable.PartitionPruneMode(idxExec.ctx.GetSessionVars().PartitionPruneMode.Load()) + if idxExec.tableID.IsPartitionTable() && pruneMode == variable.Dynamic { + err := errors.Errorf("[stats]: global statistics for partitioned tables unavailable in ANALYZE INCREMENTAL") + return &statistics.AnalyzeResults{Err: err, Job: idxExec.job} + } + startPos := idxExec.oldHist.GetUpper(idxExec.oldHist.Len() - 1) + values, _, err := codec.DecodeRange(startPos.GetBytes(), len(idxExec.idxInfo.Columns), nil, nil) + if err != nil { + return &statistics.AnalyzeResults{Err: err, Job: idxExec.job} + } + ran := ranger.Range{LowVal: values, HighVal: []types.Datum{types.MaxValueDatum()}, Collators: collate.GetBinaryCollatorSlice(1)} + hist, cms, fms, topN, err := idxExec.buildStats([]*ranger.Range{&ran}, false) + if err != nil { + return &statistics.AnalyzeResults{Err: err, Job: idxExec.job} + } + hist, err = statistics.MergeHistograms(idxExec.ctx.GetSessionVars().StmtCtx, idxExec.oldHist, hist, int(idxExec.opts[ast.AnalyzeOptNumBuckets]), statsVer) + if err != nil { + return &statistics.AnalyzeResults{Err: err, Job: idxExec.job} + } + if idxExec.oldCMS != nil && cms != nil { + err = cms.MergeCMSketch4IncrementalAnalyze(idxExec.oldCMS, uint32(idxExec.opts[ast.AnalyzeOptNumTopN])) + if err != nil { + return &statistics.AnalyzeResults{Err: err, Job: idxExec.job} + } + cms.CalcDefaultValForAnalyze(uint64(hist.NDV)) + } + if statsVer >= statistics.Version2 { + poped := statistics.MergeTopNAndUpdateCMSketch(topN, idxExec.oldTopN, cms, uint32(idxExec.opts[ast.AnalyzeOptNumTopN])) + hist.AddIdxVals(poped) + } + result := &statistics.AnalyzeResult{ + Hist: []*statistics.Histogram{hist}, + Cms: []*statistics.CMSketch{cms}, + TopNs: []*statistics.TopN{topN}, + Fms: []*statistics.FMSketch{fms}, + IsIndex: 1, + } + cnt := hist.NullCount + if hist.Len() > 0 { + cnt += hist.Buckets[hist.Len()-1].Count + } + return &statistics.AnalyzeResults{ + TableID: idxExec.tableID, + Ars: []*statistics.AnalyzeResult{result}, + Job: idxExec.job, + StatsVer: statsVer, + Count: cnt, + Snapshot: idxExec.snapshot, + } +} + +type analyzePKIncrementalExec struct { + AnalyzeColumnsExec + oldHist *statistics.Histogram +} + +func analyzePKIncremental(colExec *analyzePKIncrementalExec) *statistics.AnalyzeResults { + var maxVal types.Datum + pkInfo := colExec.handleCols.GetCol(0) + if mysql.HasUnsignedFlag(pkInfo.RetType.GetFlag()) { + maxVal = types.NewUintDatum(math.MaxUint64) + } else { + maxVal = types.NewIntDatum(math.MaxInt64) + } + startPos := *colExec.oldHist.GetUpper(colExec.oldHist.Len() - 1) + ran := ranger.Range{LowVal: []types.Datum{startPos}, LowExclude: true, HighVal: []types.Datum{maxVal}, Collators: collate.GetBinaryCollatorSlice(1)} + hists, _, _, _, _, err := colExec.buildStats([]*ranger.Range{&ran}, false) + if err != nil { + return &statistics.AnalyzeResults{Err: err, Job: colExec.job} + } + hist := hists[0] + hist, err = statistics.MergeHistograms(colExec.ctx.GetSessionVars().StmtCtx, colExec.oldHist, hist, int(colExec.opts[ast.AnalyzeOptNumBuckets]), statistics.Version1) + if err != nil { + return &statistics.AnalyzeResults{Err: err, Job: colExec.job} + } + result := &statistics.AnalyzeResult{ + Hist: []*statistics.Histogram{hist}, + Cms: []*statistics.CMSketch{nil}, + TopNs: []*statistics.TopN{nil}, + Fms: []*statistics.FMSketch{nil}, + } + var cnt int64 + if hist.Len() > 0 { + cnt = hist.Buckets[hist.Len()-1].Count + } + return &statistics.AnalyzeResults{ + TableID: colExec.tableID, + Ars: []*statistics.AnalyzeResult{result}, + Job: colExec.job, + StatsVer: statistics.Version1, + Count: cnt, + Snapshot: colExec.snapshot, + } +} diff --git a/executor/analyze_test.go b/executor/analyze_test.go index 2aff291c5a818..055591b8a9a7c 100644 --- a/executor/analyze_test.go +++ b/executor/analyze_test.go @@ -15,303 +15,32 @@ package executor_test import ( - "context" - "encoding/json" "fmt" - "strconv" - "strings" - "sync" "sync/atomic" "testing" - "time" - "github.com/pingcap/errors" - "github.com/pingcap/failpoint" "github.com/pingcap/tidb/domain" - "github.com/pingcap/tidb/domain/infosync" - "github.com/pingcap/tidb/errno" "github.com/pingcap/tidb/executor" "github.com/pingcap/tidb/infoschema" - "github.com/pingcap/tidb/kv" "github.com/pingcap/tidb/parser/ast" "github.com/pingcap/tidb/parser/model" "github.com/pingcap/tidb/parser/mysql" - "github.com/pingcap/tidb/parser/terror" "github.com/pingcap/tidb/planner/core" "github.com/pingcap/tidb/session" "github.com/pingcap/tidb/sessionctx" "github.com/pingcap/tidb/sessionctx/stmtctx" "github.com/pingcap/tidb/sessionctx/variable" "github.com/pingcap/tidb/statistics" - "github.com/pingcap/tidb/statistics/handle" "github.com/pingcap/tidb/store/mockstore" "github.com/pingcap/tidb/table" - "github.com/pingcap/tidb/tablecodec" "github.com/pingcap/tidb/testkit" "github.com/pingcap/tidb/types" "github.com/pingcap/tidb/util/codec" "github.com/pingcap/tidb/util/collate" "github.com/stretchr/testify/require" "github.com/tikv/client-go/v2/testutils" - "github.com/tikv/client-go/v2/tikv" - "github.com/tikv/client-go/v2/tikvrpc" ) -func TestAnalyzePartition(t *testing.T) { - store, clean := testkit.CreateMockStore(t) - defer clean() - tk := testkit.NewTestKit(t, store) - testkit.WithPruneMode(tk, variable.Static, func() { - tk.MustExec("use test") - tk.MustExec("drop table if exists t") - tk.MustExec("set @@tidb_analyze_version=2") - createTable := `CREATE TABLE t (a int, b int, c varchar(10), primary key(a), index idx(b)) -PARTITION BY RANGE ( a ) ( - 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(createTable) - for i := 1; i < 21; i++ { - tk.MustExec(fmt.Sprintf(`insert into t values (%d, %d, "hello")`, i, i)) - } - tk.MustExec("analyze table t") - - is := tk.Session().(sessionctx.Context).GetInfoSchema().(infoschema.InfoSchema) - table, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) - require.NoError(t, err) - pi := table.Meta().GetPartitionInfo() - require.NotNil(t, pi) - do, err := session.GetDomain(store) - require.NoError(t, err) - handle := do.StatsHandle() - for _, def := range pi.Definitions { - statsTbl := handle.GetPartitionStats(table.Meta(), def.ID) - require.False(t, statsTbl.Pseudo) - require.Len(t, statsTbl.Columns, 3) - require.Len(t, statsTbl.Indices, 1) - for _, col := range statsTbl.Columns { - require.Greater(t, col.Len()+col.Num(), 0) - } - for _, idx := range statsTbl.Indices { - require.Greater(t, idx.Len()+idx.Num(), 0) - } - } - - tk.MustExec("drop table t") - tk.MustExec(createTable) - for i := 1; i < 21; i++ { - tk.MustExec(fmt.Sprintf(`insert into t values (%d, %d, "hello")`, i, i)) - } - tk.MustExec("alter table t analyze partition p0") - is = tk.Session().(sessionctx.Context).GetInfoSchema().(infoschema.InfoSchema) - table, err = is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) - require.NoError(t, err) - pi = table.Meta().GetPartitionInfo() - require.NotNil(t, pi) - - for i, def := range pi.Definitions { - statsTbl := handle.GetPartitionStats(table.Meta(), def.ID) - if i == 0 { - require.False(t, statsTbl.Pseudo) - require.Len(t, statsTbl.Columns, 3) - require.Len(t, statsTbl.Indices, 1) - } else { - require.True(t, statsTbl.Pseudo) - } - } - }) -} - -func TestAnalyzeReplicaReadFollower(t *testing.T) { - store, clean := testkit.CreateMockStore(t) - defer clean() - tk := testkit.NewTestKit(t, store) - - tk.MustExec("use test") - tk.MustExec("drop table if exists t") - tk.MustExec("create table t(a int)") - ctx := tk.Session().(sessionctx.Context) - ctx.GetSessionVars().SetReplicaRead(kv.ReplicaReadFollower) - tk.MustExec("analyze table t") -} - -func TestClusterIndexAnalyze(t *testing.T) { - store, clean := testkit.CreateMockStore(t) - defer clean() - tk := testkit.NewTestKit(t, store) - - tk.MustExec("drop database if exists test_cluster_index_analyze;") - tk.MustExec("create database test_cluster_index_analyze;") - tk.MustExec("use test_cluster_index_analyze;") - tk.Session().GetSessionVars().EnableClusteredIndex = variable.ClusteredIndexDefModeOn - - tk.MustExec("create table t (a int, b int, c int, primary key(a, b));") - for i := 0; i < 100; i++ { - tk.MustExec("insert into t values (?, ?, ?)", i, i, i) - } - tk.MustExec("analyze table t;") - tk.MustExec("drop table t;") - - tk.MustExec("create table t (a varchar(255), b int, c float, primary key(c, a));") - for i := 0; i < 100; i++ { - tk.MustExec("insert into t values (?, ?, ?)", strconv.Itoa(i), i, i) - } - tk.MustExec("analyze table t;") - tk.MustExec("drop table t;") - - tk.MustExec("create table t (a char(10), b decimal(5, 3), c int, primary key(a, c, b));") - for i := 0; i < 100; i++ { - tk.MustExec("insert into t values (?, ?, ?)", strconv.Itoa(i), i, i) - } - tk.MustExec("analyze table t;") - tk.MustExec("drop table t;") -} - -func TestAnalyzeRestrict(t *testing.T) { - store, clean := testkit.CreateMockStore(t) - defer clean() - tk := testkit.NewTestKit(t, store) - - tk.MustExec("use test") - tk.MustExec("drop table if exists t") - tk.MustExec("create table t(a int)") - ctx := tk.Session().(sessionctx.Context) - ctx.GetSessionVars().InRestrictedSQL = true - tk.MustExec("analyze table t") -} - -func TestAnalyzeParameters(t *testing.T) { - store, dom, clean := testkit.CreateMockStoreAndDomain(t) - defer clean() - - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("drop table if exists t") - tk.MustExec("create table t(a int)") - for i := 0; i < 20; i++ { - tk.MustExec(fmt.Sprintf("insert into t values (%d)", i)) - } - tk.MustExec("insert into t values (19), (19), (19)") - - tk.MustExec("set @@tidb_enable_fast_analyze = 1") - tk.MustExec("set @@tidb_analyze_version = 1") - tk.MustExec("analyze table t with 30 samples") - is := tk.Session().(sessionctx.Context).GetInfoSchema().(infoschema.InfoSchema) - table, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) - require.NoError(t, err) - tableInfo := table.Meta() - tbl := dom.StatsHandle().GetTableStats(tableInfo) - col := tbl.Columns[1] - require.Equal(t, 20, col.Len()) - require.Len(t, col.TopN.TopN, 1) - width, depth := col.CMSketch.GetWidthAndDepth() - require.Equal(t, int32(5), depth) - require.Equal(t, int32(2048), width) - - tk.MustExec("analyze table t with 4 buckets, 0 topn, 4 cmsketch width, 4 cmsketch depth") - tbl = dom.StatsHandle().GetTableStats(tableInfo) - col = tbl.Columns[1] - require.Equal(t, 4, col.Len()) - require.Nil(t, col.TopN) - width, depth = col.CMSketch.GetWidthAndDepth() - require.Equal(t, int32(4), depth) - require.Equal(t, int32(4), width) - - // Test very large cmsketch - tk.MustExec(fmt.Sprintf("analyze table t with %d cmsketch width, %d cmsketch depth", core.CMSketchSizeLimit, 1)) - tbl = dom.StatsHandle().GetTableStats(tableInfo) - col = tbl.Columns[1] - require.Equal(t, 20, col.Len()) - - require.Len(t, col.TopN.TopN, 1) - width, depth = col.CMSketch.GetWidthAndDepth() - require.Equal(t, int32(1), depth) - require.Equal(t, int32(core.CMSketchSizeLimit), width) - - // Test very large cmsketch - tk.MustExec("analyze table t with 20480 cmsketch width, 50 cmsketch depth") - tbl = dom.StatsHandle().GetTableStats(tableInfo) - col = tbl.Columns[1] - require.Equal(t, 20, col.Len()) - require.Len(t, col.TopN.TopN, 1) - width, depth = col.CMSketch.GetWidthAndDepth() - require.Equal(t, int32(50), depth) - require.Equal(t, int32(20480), width) -} - -func TestAnalyzeTooLongColumns(t *testing.T) { - store, dom, clean := testkit.CreateMockStoreAndDomain(t) - defer clean() - - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("drop table if exists t") - tk.MustExec("create table t(a json)") - value := fmt.Sprintf(`{"x":"%s"}`, strings.Repeat("x", mysql.MaxFieldVarCharLength)) - tk.MustExec(fmt.Sprintf("insert into t values ('%s')", value)) - - tk.MustExec("analyze table t") - is := tk.Session().(sessionctx.Context).GetInfoSchema().(infoschema.InfoSchema) - table, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) - require.NoError(t, err) - tableInfo := table.Meta() - tbl := dom.StatsHandle().GetTableStats(tableInfo) - require.Equal(t, 0, tbl.Columns[1].Len()) - require.Equal(t, 0, tbl.Columns[1].TopN.Num()) - require.Equal(t, int64(65559), tbl.Columns[1].TotColSize) -} - -func TestAnalyzeIndexExtractTopN(t *testing.T) { - _ = checkHistogram - t.Skip("unstable, skip it and fix it before 20210618") - store, err := mockstore.NewMockStore() - require.NoError(t, err) - defer func() { - err := store.Close() - require.NoError(t, err) - }() - var dom *domain.Domain - session.DisableStats4Test() - session.SetSchemaLease(0) - dom, err = session.BootstrapSession(store) - require.NoError(t, err) - defer dom.Close() - tk := testkit.NewTestKit(t, store) - - tk.MustExec("create database test_index_extract_topn") - tk.MustExec("use test_index_extract_topn") - tk.MustExec("drop table if exists t") - tk.MustExec("create table t(a int, b int, index idx(a, b))") - tk.MustExec("insert into t values(1, 1), (1, 1), (1, 2), (1, 2)") - tk.MustExec("set @@session.tidb_analyze_version=2") - tk.MustExec("analyze table t") - - is := tk.Session().(sessionctx.Context).GetInfoSchema().(infoschema.InfoSchema) - table, err := is.TableByName(model.NewCIStr("test_index_extract_topn"), model.NewCIStr("t")) - require.NoError(t, err) - tableInfo := table.Meta() - tbl := dom.StatsHandle().GetTableStats(tableInfo) - - // 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)) - require.NoError(t, err) - topn.AppendTopN(key1, 2) - key2, err := codec.EncodeKey(tk.Session().GetSessionVars().StmtCtx, nil, types.NewIntDatum(1), types.NewIntDatum(2)) - require.NoError(t, err) - topn.AppendTopN(key2, 2) - } - for _, idx := range tbl.Indices { - ok, err := checkHistogram(tk.Session().GetSessionVars().StmtCtx, &idx.Histogram) - require.NoError(t, err) - require.True(t, ok) - require.True(t, idx.TopN.Equal(topn)) - } -} - func TestAnalyzeFastSample(t *testing.T) { var cls testutils.Cluster store, err := mockstore.NewMockStore( @@ -351,7 +80,7 @@ func TestAnalyzeFastSample(t *testing.T) { } handleCols := core.BuildHandleColsForAnalyze(tk.Session(), tblInfo, true, nil) - var colsInfo []*model.ColumnInfo // nolint: prealloc + var colsInfo []*model.ColumnInfo //nolint: prealloc var indicesInfo []*model.IndexInfo for _, col := range tblInfo.Columns { if mysql.HasPriKeyFlag(col.GetFlag()) { @@ -400,25 +129,6 @@ func TestAnalyzeFastSample(t *testing.T) { } } -func checkHistogram(sc *stmtctx.StatementContext, hg *statistics.Histogram) (bool, error) { - for i := 0; i < len(hg.Buckets); i++ { - lower, upper := hg.GetLower(i), hg.GetUpper(i) - cmp, err := upper.Compare(sc, lower, collate.GetBinaryCollator()) - if cmp < 0 || err != nil { - return false, err - } - if i == 0 { - continue - } - previousUpper := hg.GetUpper(i - 1) - cmp, err = lower.Compare(sc, previousUpper, collate.GetBinaryCollator()) - if cmp <= 0 || err != nil { - return false, err - } - } - return true, nil -} - func TestFastAnalyze(t *testing.T) { t.Skip("Skip this unstable test(#25782) and bring it back before 2021-07-29.") var cls testutils.Cluster @@ -539,2853 +249,70 @@ func TestFastAnalyze(t *testing.T) { */ } -func TestIssue15993(t *testing.T) { - store, clean := testkit.CreateMockStore(t) - defer clean() - tk := testkit.NewTestKit(t, store) - - tk.MustExec("use test") - tk.MustExec("drop table if exists t0") - tk.MustExec("CREATE TABLE t0(c0 INT PRIMARY KEY);") - tk.MustExec("set @@tidb_enable_fast_analyze=1;") - tk.MustExec("set @@tidb_analyze_version = 1") - tk.MustExec("ANALYZE TABLE t0 INDEX PRIMARY;") -} - -func TestIssue15751(t *testing.T) { - store, clean := testkit.CreateMockStore(t) - defer clean() - tk := testkit.NewTestKit(t, store) - - tk.MustExec("use test") - tk.MustExec("drop table if exists t0") - tk.MustExec("CREATE TABLE t0(c0 INT, c1 INT, PRIMARY KEY(c0, c1))") - tk.MustExec("INSERT INTO t0 VALUES (0, 0)") - tk.MustExec("set @@tidb_enable_fast_analyze=1") - tk.MustExec("set @@tidb_analyze_version = 1") - tk.MustExec("ANALYZE TABLE t0") -} - -func TestIssue15752(t *testing.T) { - store, clean := testkit.CreateMockStore(t) - defer clean() - tk := testkit.NewTestKit(t, store) - - tk.MustExec("use test") - tk.MustExec("drop table if exists t0") - tk.MustExec("CREATE TABLE t0(c0 INT)") - tk.MustExec("INSERT INTO t0 VALUES (0)") - tk.MustExec("CREATE INDEX i0 ON t0(c0)") - tk.MustExec("set @@tidb_enable_fast_analyze=1") - tk.MustExec("set @@tidb_analyze_version = 1") - tk.MustExec("ANALYZE TABLE t0 INDEX i0") -} - -type regionProperityClient struct { - tikv.Client - mu struct { - sync.Mutex - failedOnce bool - count int64 - } -} - -func (c *regionProperityClient) SendRequest(ctx context.Context, addr string, req *tikvrpc.Request, timeout time.Duration) (*tikvrpc.Response, error) { - if req.Type == tikvrpc.CmdDebugGetRegionProperties { - c.mu.Lock() - defer c.mu.Unlock() - c.mu.count++ - // Mock failure once. - if !c.mu.failedOnce { - c.mu.failedOnce = true - return &tikvrpc.Response{}, nil +func checkHistogram(sc *stmtctx.StatementContext, hg *statistics.Histogram) (bool, error) { + for i := 0; i < len(hg.Buckets); i++ { + lower, upper := hg.GetLower(i), hg.GetUpper(i) + cmp, err := upper.Compare(sc, lower, collate.GetBinaryCollator()) + if cmp < 0 || err != nil { + return false, err + } + if i == 0 { + continue + } + previousUpper := hg.GetUpper(i - 1) + cmp, err = lower.Compare(sc, previousUpper, collate.GetBinaryCollator()) + if cmp <= 0 || err != nil { + return false, err } } - return c.Client.SendRequest(ctx, addr, req, timeout) + return true, nil } -func TestFastAnalyzeRetryRowCount(t *testing.T) { - cli := ®ionProperityClient{} - hijackClient := func(c tikv.Client) tikv.Client { - cli.Client = c - return cli - } - - var cls testutils.Cluster - store, err := mockstore.NewMockStore( - mockstore.WithClusterInspector(func(c testutils.Cluster) { - mockstore.BootstrapWithSingleStore(c) - cls = c - }), - mockstore.WithClientHijacker(hijackClient), - ) +func TestAnalyzeIndexExtractTopN(t *testing.T) { + _ = checkHistogram + t.Skip("unstable, skip it and fix it before 20210618") + store, err := mockstore.NewMockStore() require.NoError(t, err) defer func() { err := store.Close() require.NoError(t, err) }() - dom, err := session.BootstrapSession(store) + var dom *domain.Domain + session.DisableStats4Test() + session.SetSchemaLease(0) + dom, err = session.BootstrapSession(store) require.NoError(t, err) defer dom.Close() tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("drop table if exists retry_row_count") - tk.MustExec("create table retry_row_count(a int primary key)") - tblInfo, err := dom.InfoSchema().TableByName(model.NewCIStr("test"), model.NewCIStr("retry_row_count")) - require.NoError(t, err) - tid := tblInfo.Meta().ID - require.NoError(t, dom.StatsHandle().Update(dom.InfoSchema())) - tk.MustExec("set @@session.tidb_enable_fast_analyze=1") - tk.MustExec("set @@session.tidb_build_stats_concurrency=1") - tk.MustExec("set @@tidb_analyze_version = 1") - for i := 0; i < 30; i++ { - tk.MustExec(fmt.Sprintf("insert into retry_row_count values (%d)", i)) - } - tableStart := tablecodec.GenTableRecordPrefix(tid) - cls.SplitKeys(tableStart, tableStart.PrefixNext(), 6) - // Flush the region cache first. - tk.MustQuery("select * from retry_row_count") - tk.MustExec("analyze table retry_row_count") - row := tk.MustQuery(`show stats_meta where db_name = "test" and table_name = "retry_row_count"`).Rows()[0] - require.Equal(t, "30", row[5]) -} - -func TestFailedAnalyzeRequest(t *testing.T) { - store, clean := testkit.CreateMockStore(t) - defer clean() - tk := testkit.NewTestKit(t, store) - - tk.MustExec("use test") + tk.MustExec("create database test_index_extract_topn") + tk.MustExec("use test_index_extract_topn") tk.MustExec("drop table if exists t") - tk.MustExec("create table t(a int primary key, b int, index index_b(b))") - tk.MustExec("set @@tidb_analyze_version = 1") - require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/executor/buildStatsFromResult", `return(true)`)) - _, err := tk.Exec("analyze table t") - require.NotNil(t, err) - require.Equal(t, "mock buildStatsFromResult error", err.Error()) - require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/executor/buildStatsFromResult")) -} - -func TestExtractTopN(t *testing.T) { - store, dom, clean := testkit.CreateMockStoreAndDomain(t) - defer clean() - - tk := testkit.NewTestKit(t, store) - tk.MustExec("create database if not exists test_extract_topn") - tk.MustExec("use test_extract_topn") - tk.MustExec("drop table if exists test_extract_topn") - tk.MustExec("create table test_extract_topn(a int primary key, b int, index index_b(b))") + tk.MustExec("create table t(a int, b int, index idx(a, b))") + tk.MustExec("insert into t values(1, 1), (1, 1), (1, 2), (1, 2)") tk.MustExec("set @@session.tidb_analyze_version=2") - for i := 0; i < 10; i++ { - tk.MustExec(fmt.Sprintf("insert into test_extract_topn values (%d, %d)", i, i)) - } - for i := 0; i < 10; i++ { - tk.MustExec(fmt.Sprintf("insert into test_extract_topn values (%d, 0)", i+10)) - } - tk.MustExec("analyze table test_extract_topn") - is := dom.InfoSchema() - table, err := is.TableByName(model.NewCIStr("test_extract_topn"), model.NewCIStr("test_extract_topn")) - require.NoError(t, err) - tblInfo := table.Meta() - tblStats := dom.StatsHandle().GetTableStats(tblInfo) - colStats := tblStats.Columns[tblInfo.Columns[1].ID] - require.Len(t, colStats.TopN.TopN, 10) - item := colStats.TopN.TopN[0] - require.Equal(t, uint64(11), item.Count) - idxStats := tblStats.Indices[tblInfo.Indices[0].ID] - require.Len(t, idxStats.TopN.TopN, 10) - idxItem := idxStats.TopN.TopN[0] - require.Equal(t, uint64(11), idxItem.Count) - // The columns are: DBName, table name, column name, is index, value, count. - tk.MustQuery("show stats_topn where column_name in ('b', 'index_b')").Sort().Check(testkit.Rows("test_extract_topn test_extract_topn b 0 0 11", - "test_extract_topn test_extract_topn b 0 1 1", - "test_extract_topn test_extract_topn b 0 2 1", - "test_extract_topn test_extract_topn b 0 3 1", - "test_extract_topn test_extract_topn b 0 4 1", - "test_extract_topn test_extract_topn b 0 5 1", - "test_extract_topn test_extract_topn b 0 6 1", - "test_extract_topn test_extract_topn b 0 7 1", - "test_extract_topn test_extract_topn b 0 8 1", - "test_extract_topn test_extract_topn b 0 9 1", - "test_extract_topn test_extract_topn index_b 1 0 11", - "test_extract_topn test_extract_topn index_b 1 1 1", - "test_extract_topn test_extract_topn index_b 1 2 1", - "test_extract_topn test_extract_topn index_b 1 3 1", - "test_extract_topn test_extract_topn index_b 1 4 1", - "test_extract_topn test_extract_topn index_b 1 5 1", - "test_extract_topn test_extract_topn index_b 1 6 1", - "test_extract_topn test_extract_topn index_b 1 7 1", - "test_extract_topn test_extract_topn index_b 1 8 1", - "test_extract_topn test_extract_topn index_b 1 9 1", - )) -} - -func TestHashInTopN(t *testing.T) { - store, dom, clean := testkit.CreateMockStoreAndDomain(t) - defer clean() - - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("drop table if exists t") - tk.MustExec("create table t(a int, b float, c decimal(30, 10), d varchar(20))") - tk.MustExec(`insert into t values - (1, 1.1, 11.1, "0110"), - (2, 2.2, 22.2, "0110"), - (3, 3.3, 33.3, "0110"), - (4, 4.4, 44.4, "0440")`) - for i := 0; i < 3; i++ { - tk.MustExec("insert into t select * from t") - } - tk.MustExec("set @@tidb_analyze_version = 1") - // get stats of normal analyze tk.MustExec("analyze table t") - is := dom.InfoSchema() - tbl, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) - require.NoError(t, err) - tblInfo := tbl.Meta() - tblStats1 := dom.StatsHandle().GetTableStats(tblInfo).Copy() - // get stats of fast analyze - tk.MustExec("set @@tidb_enable_fast_analyze = 1") - tk.MustExec("analyze table t") - tblStats2 := dom.StatsHandle().GetTableStats(tblInfo).Copy() - // check the hash for topn - for _, col := range tblInfo.Columns { - topn1 := tblStats1.Columns[col.ID].TopN.TopN - cm2 := tblStats2.Columns[col.ID].TopN - for _, topnMeta := range topn1 { - count2, exists := cm2.QueryTopN(topnMeta.Encoded) - require.True(t, exists) - require.Equal(t, topnMeta.Count, count2) - } - } -} - -func TestNormalAnalyzeOnCommonHandle(t *testing.T) { - store, clean := testkit.CreateMockStore(t) - defer clean() - tk := testkit.NewTestKit(t, store) - - tk.MustExec("use test") - tk.MustExec("drop table if exists t1, t2, t3, t4") - tk.Session().GetSessionVars().EnableClusteredIndex = variable.ClusteredIndexDefModeOn - tk.MustExec("CREATE TABLE t1 (a int primary key, b int)") - tk.MustExec("insert into t1 values(1,1), (2,2), (3,3)") - tk.MustExec("CREATE TABLE t2 (a varchar(255) primary key, b int)") - tk.MustExec("insert into t2 values(\"111\",1), (\"222\",2), (\"333\",3)") - tk.MustExec("CREATE TABLE t3 (a int, b int, c int, primary key (a, b), key(c))") - tk.MustExec("insert into t3 values(1,1,1), (2,2,2), (3,3,3)") - - // Version2 is tested in TestStatsVer2. - tk.MustExec("set@@tidb_analyze_version=1") - tk.MustExec("analyze table t1, t2, t3") - - tk.MustQuery(`show stats_buckets where table_name in ("t1", "t2", "t3")`).Sort().Check(testkit.Rows( - "test t1 a 0 0 1 1 1 1 0", - "test t1 a 0 1 2 1 2 2 0", - "test t1 a 0 2 3 1 3 3 0", - "test t1 b 0 0 1 1 1 1 0", - "test t1 b 0 1 2 1 2 2 0", - "test t1 b 0 2 3 1 3 3 0", - "test t2 PRIMARY 1 0 1 1 111 111 0", - "test t2 PRIMARY 1 1 2 1 222 222 0", - "test t2 PRIMARY 1 2 3 1 333 333 0", - "test t2 a 0 0 1 1 111 111 0", - "test t2 a 0 1 2 1 222 222 0", - "test t2 a 0 2 3 1 333 333 0", - "test t2 b 0 0 1 1 1 1 0", - "test t2 b 0 1 2 1 2 2 0", - "test t2 b 0 2 3 1 3 3 0", - "test t3 PRIMARY 1 0 1 1 (1, 1) (1, 1) 0", - "test t3 PRIMARY 1 1 2 1 (2, 2) (2, 2) 0", - "test t3 PRIMARY 1 2 3 1 (3, 3) (3, 3) 0", - "test t3 a 0 0 1 1 1 1 0", - "test t3 a 0 1 2 1 2 2 0", - "test t3 a 0 2 3 1 3 3 0", - "test t3 b 0 0 1 1 1 1 0", - "test t3 b 0 1 2 1 2 2 0", - "test t3 b 0 2 3 1 3 3 0", - "test t3 c 0 0 1 1 1 1 0", - "test t3 c 0 1 2 1 2 2 0", - "test t3 c 0 2 3 1 3 3 0", - "test t3 c 1 0 1 1 1 1 0", - "test t3 c 1 1 2 1 2 2 0", - "test t3 c 1 2 3 1 3 3 0")) -} - -func TestDefaultValForAnalyze(t *testing.T) { - store, clean := testkit.CreateMockStore(t) - defer clean() - tk := testkit.NewTestKit(t, store) - tk.MustExec("set @@tidb_analyze_version=1") - defer tk.MustExec("set @@tidb_analyze_version=2") - tk.MustExec("drop database if exists test_default_val_for_analyze;") - tk.MustExec("create database test_default_val_for_analyze;") - tk.MustExec("use test_default_val_for_analyze") - tk.MustExec("create table t (a int, key(a));") - for i := 0; i < 2048; i++ { - tk.MustExec("insert into t values (0)") - } - for i := 1; i < 4; i++ { - tk.MustExec("insert into t values (?)", i) - } - tk.MustQuery("select @@tidb_enable_fast_analyze").Check(testkit.Rows("0")) - tk.MustQuery("select @@session.tidb_enable_fast_analyze").Check(testkit.Rows("0")) - tk.MustExec("analyze table t with 0 topn;") - tk.MustQuery("explain format = 'brief' select * from t where a = 1").Check(testkit.Rows("IndexReader 512.00 root index:IndexRangeScan", - "└─IndexRangeScan 512.00 cop[tikv] table:t, index:a(a) range:[1,1], keep order:false")) - tk.MustQuery("explain format = 'brief' select * from t where a = 999").Check(testkit.Rows("IndexReader 0.00 root index:IndexRangeScan", - "└─IndexRangeScan 0.00 cop[tikv] table:t, index:a(a) range:[999,999], keep order:false")) + is := tk.Session().(sessionctx.Context).GetInfoSchema().(infoschema.InfoSchema) + table, err := is.TableByName(model.NewCIStr("test_index_extract_topn"), model.NewCIStr("t")) + require.NoError(t, err) + tableInfo := table.Meta() + tbl := dom.StatsHandle().GetTableStats(tableInfo) - tk.MustExec("drop table t;") - tk.MustExec("create table t (a int, key(a));") - for i := 0; i < 2048; i++ { - tk.MustExec("insert into t values (0)") + // 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)) + require.NoError(t, err) + topn.AppendTopN(key1, 2) + key2, err := codec.EncodeKey(tk.Session().GetSessionVars().StmtCtx, nil, types.NewIntDatum(1), types.NewIntDatum(2)) + require.NoError(t, err) + topn.AppendTopN(key2, 2) } - for i := 1; i < 2049; i++ { - tk.MustExec("insert into t values (?)", i) - } - tk.MustExec("analyze table t with 0 topn;") - tk.MustQuery("explain format = 'brief' select * from t where a = 1").Check(testkit.Rows("IndexReader 1.00 root index:IndexRangeScan", - "└─IndexRangeScan 1.00 cop[tikv] table:t, index:a(a) range:[1,1], keep order:false")) -} - -func TestAnalyzeFullSamplingOnIndexWithVirtualColumnOrPrefixColumn(t *testing.T) { - t.Skip("unstable, skip it and fix it before 20210624") - store, clean := testkit.CreateMockStore(t) - defer clean() - tk := testkit.NewTestKit(t, store) - - tk.MustExec("use test") - tk.MustExec("drop table if exists sampling_index_virtual_col") - tk.MustExec("create table sampling_index_virtual_col(a int, b int as (a+1), index idx(b))") - tk.MustExec("insert into sampling_index_virtual_col (a) values (1), (2), (null), (3), (4), (null), (5), (5), (5), (5)") - tk.MustExec("set @@session.tidb_analyze_version = 2") - tk.MustExec("analyze table sampling_index_virtual_col with 1 topn") - tk.MustQuery("show stats_buckets where table_name = 'sampling_index_virtual_col' and column_name = 'idx'").Check(testkit.Rows( - "test sampling_index_virtual_col idx 1 0 1 1 2 2 0", - "test sampling_index_virtual_col idx 1 1 2 1 3 3 0", - "test sampling_index_virtual_col idx 1 2 3 1 4 4 0", - "test sampling_index_virtual_col idx 1 3 4 1 5 5 0")) - tk.MustQuery("show stats_topn where table_name = 'sampling_index_virtual_col' and column_name = 'idx'").Check(testkit.Rows("test sampling_index_virtual_col idx 1 6 4")) - row := tk.MustQuery(`show stats_histograms where db_name = "test" and table_name = "sampling_index_virtual_col"`).Rows()[0] - // The NDV. - require.Equal(t, "5", row[6]) - // The NULLs. - require.Equal(t, "2", row[7]) - tk.MustExec("drop table if exists sampling_index_prefix_col") - tk.MustExec("create table sampling_index_prefix_col(a varchar(3), index idx(a(1)))") - tk.MustExec("insert into sampling_index_prefix_col (a) values ('aa'), ('ab'), ('ac'), ('bb')") - tk.MustExec("analyze table sampling_index_prefix_col with 1 topn") - tk.MustQuery("show stats_buckets where table_name = 'sampling_index_prefix_col' and column_name = 'idx'").Check(testkit.Rows( - "test sampling_index_prefix_col idx 1 0 1 1 b b 0", - )) - tk.MustQuery("show stats_topn where table_name = 'sampling_index_prefix_col' and column_name = 'idx'").Check(testkit.Rows("test sampling_index_prefix_col idx 1 a 3")) -} - -func TestSnapshotAnalyze(t *testing.T) { - store, clean := testkit.CreateMockStore(t) - defer clean() - tk := testkit.NewTestKit(t, store) - - tk.MustExec("use test") - tk.MustExec("drop table if exists t") - tk.MustExec("create table t(a int, index index_a(a))") - is := tk.Session().(sessionctx.Context).GetInfoSchema().(infoschema.InfoSchema) - tbl, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) - require.NoError(t, err) - tblInfo := tbl.Meta() - tid := tblInfo.ID - tk.MustExec("insert into t values(1),(1),(1)") - tk.MustExec("begin") - txn, err := tk.Session().Txn(false) - require.NoError(t, err) - startTS1 := txn.StartTS() - tk.MustExec("commit") - tk.MustExec("insert into t values(2),(2),(2)") - tk.MustExec("begin") - txn, err = tk.Session().Txn(false) - require.NoError(t, err) - startTS2 := txn.StartTS() - tk.MustExec("commit") - require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/executor/injectAnalyzeSnapshot", fmt.Sprintf("return(%d)", startTS1))) - tk.MustExec("analyze table t") - rows := tk.MustQuery(fmt.Sprintf("select count, snapshot from mysql.stats_meta where table_id = %d", tid)).Rows() - require.Len(t, rows, 1) - require.Equal(t, "3", rows[0][0]) - s1Str := rows[0][1].(string) - require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/executor/injectAnalyzeSnapshot", fmt.Sprintf("return(%d)", startTS2))) - tk.MustExec("analyze table t") - rows = tk.MustQuery(fmt.Sprintf("select count, snapshot from mysql.stats_meta where table_id = %d", tid)).Rows() - require.Len(t, rows, 1) - require.Equal(t, "6", rows[0][0]) - s2Str := rows[0][1].(string) - require.True(t, s1Str != s2Str) - tk.MustExec("set @@session.tidb_analyze_version = 2") - require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/executor/injectAnalyzeSnapshot", fmt.Sprintf("return(%d)", startTS1))) - tk.MustExec("analyze table t") - rows = tk.MustQuery(fmt.Sprintf("select count, snapshot from mysql.stats_meta where table_id = %d", tid)).Rows() - require.Len(t, rows, 1) - require.Equal(t, "6", rows[0][0]) - s3Str := rows[0][1].(string) - require.Equal(t, s2Str, s3Str) - require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/executor/injectAnalyzeSnapshot")) -} - -func TestAdjustSampleRateNote(t *testing.T) { - store, clean := testkit.CreateMockStore(t) - defer clean() - tk := testkit.NewTestKit(t, store) - - tk.MustExec("use test") - statsHandle := domain.GetDomain(tk.Session().(sessionctx.Context)).StatsHandle() - tk.MustExec("drop table if exists t") - tk.MustExec("create table t(a int, index index_a(a))") - require.NoError(t, statsHandle.HandleDDLEvent(<-statsHandle.DDLEventCh())) - is := tk.Session().(sessionctx.Context).GetInfoSchema().(infoschema.InfoSchema) - tbl, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) - require.NoError(t, err) - tblInfo := tbl.Meta() - tid := tblInfo.ID - tk.MustExec(fmt.Sprintf("update mysql.stats_meta set count = 220000 where table_id=%d", tid)) - require.NoError(t, statsHandle.Update(is)) - result := tk.MustQuery("show stats_meta where table_name = 't'") - require.Equal(t, "220000", result.Rows()[0][5]) - tk.MustExec("analyze table t") - tk.MustQuery("show warnings").Check(testkit.Rows("Note 1105 Analyze use auto adjusted sample rate 0.500000 for table test.t")) - tk.MustExec("insert into t values(1),(1),(1)") - require.NoError(t, statsHandle.DumpStatsDeltaToKV(handle.DumpAll)) - require.NoError(t, statsHandle.Update(is)) - result = tk.MustQuery("show stats_meta where table_name = 't'") - require.Equal(t, "3", result.Rows()[0][5]) - tk.MustExec("analyze table t") - tk.MustQuery("show warnings").Check(testkit.Rows("Note 1105 Analyze use auto adjusted sample rate 1.000000 for table test.t")) -} - -func TestFastAnalyze4GlobalStats(t *testing.T) { - store, clean := testkit.CreateMockStore(t) - defer clean() - - tk := testkit.NewTestKit(t, store) - tk.MustExec(`create database if not exists test_fast_gstats`) - tk.MustExec("use test_fast_gstats") - tk.MustExec("set @@session.tidb_enable_fast_analyze=1") - tk.MustExec("set @@session.tidb_build_stats_concurrency=1") - // test fast analyze in dynamic mode - tk.MustExec("set @@session.tidb_analyze_version = 2;") - tk.MustExec("set @@session.tidb_partition_prune_mode = 'dynamic';") - tk.MustExec("drop table if exists test_fast_gstats;") - tk.MustExec("create table test_fast_gstats(a int, b int) PARTITION BY HASH(a) PARTITIONS 2;") - tk.MustExec("insert into test_fast_gstats values(1,1),(3,3),(4,4),(2,2),(5,5);") - err := tk.ExecToErr("analyze table test_fast_gstats;") - require.EqualError(t, err, "Fast analyze hasn't reached General Availability and only support analyze version 1 currently") -} - -func TestAnalyzeIndex(t *testing.T) { - store, clean := testkit.CreateMockStore(t) - defer clean() - - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("drop table if exists t1") - tk.MustExec("create table t1 (id int, v int, primary key(id), index k(v))") - tk.MustExec("insert into t1(id, v) values(1, 2), (2, 2), (3, 2), (4, 2), (5, 1), (6, 3), (7, 4)") - tk.MustExec("set @@tidb_analyze_version=1") - tk.MustExec("analyze table t1 index k") - require.Greater(t, len(tk.MustQuery("show stats_buckets where table_name = 't1' and column_name = 'k' and is_index = 1").Rows()), 0) - tk.MustExec("set @@tidb_analyze_version=default") - tk.MustExec("analyze table t1") - require.Greater(t, len(tk.MustQuery("show stats_topn where table_name = 't1' and column_name = 'k' and is_index = 1").Rows()), 0) - - func() { - defer tk.MustExec("set @@session.tidb_enable_fast_analyze=0") - tk.MustExec("drop stats t1") - tk.MustExec("set @@session.tidb_enable_fast_analyze=1") - tk.MustExec("set @@tidb_analyze_version=1") - tk.MustExec("analyze table t1 index k") - require.Greater(t, len(tk.MustQuery("show stats_buckets where table_name = 't1' and column_name = 'k' and is_index = 1").Rows()), 1) - }() -} - -func TestAnalyzeIncremental(t *testing.T) { - store, dom, clean := testkit.CreateMockStoreAndDomain(t) - defer clean() - - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("set @@tidb_analyze_version = 1") - testAnalyzeIncremental(tk, t, dom) -} - -func testAnalyzeIncremental(tk *testkit.TestKit, t *testing.T, dom *domain.Domain) { - tk.MustExec("use test") - tk.MustExec("drop table if exists t") - tk.MustExec("create table t(a int, b int, primary key(a), index idx(b))") - tk.MustExec("analyze incremental table t index") - tk.MustQuery("show stats_buckets").Check(testkit.Rows()) - tk.MustExec("insert into t values (1,1)") - tk.MustExec("analyze incremental table t index") - tk.MustQuery("show stats_buckets").Check(testkit.Rows("test t a 0 0 1 1 1 1 0", "test t idx 1 0 1 1 1 1 0")) - tk.MustExec("insert into t values (2,2)") - tk.MustExec("analyze incremental table t index") - tk.MustQuery("show stats_buckets").Check(testkit.Rows("test t a 0 0 1 1 1 1 0", "test t a 0 1 2 1 2 2 0", "test t idx 1 0 1 1 1 1 0", "test t idx 1 1 2 1 2 2 0")) - tk.MustExec("analyze incremental table t index") - // Result should not change. - tk.MustQuery("show stats_buckets").Check(testkit.Rows("test t a 0 0 1 1 1 1 0", "test t a 0 1 2 1 2 2 0", "test t idx 1 0 1 1 1 1 0", "test t idx 1 1 2 1 2 2 0")) - - // Test analyze incremental with feedback. - tk.MustExec("insert into t values (3,3)") - oriProbability := statistics.FeedbackProbability.Load() - oriMinLogCount := handle.MinLogScanCount.Load() - defer func() { - statistics.FeedbackProbability.Store(oriProbability) - handle.MinLogScanCount.Store(oriMinLogCount) - }() - statistics.FeedbackProbability.Store(1) - handle.MinLogScanCount.Store(0) - is := dom.InfoSchema() - table, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) - require.NoError(t, err) - tblInfo := table.Meta() - tk.MustQuery("select * from t use index(idx) where b = 3") - tk.MustQuery("select * from t where a > 1") - h := dom.StatsHandle() - require.NoError(t, h.DumpStatsDeltaToKV(handle.DumpAll)) - require.NoError(t, h.DumpStatsFeedbackToKV()) - require.NoError(t, h.HandleUpdateStats(is)) - require.NoError(t, h.Update(is)) - require.NoError(t, h.LoadNeededHistograms()) - tk.MustQuery("show stats_buckets").Check(testkit.Rows("test t a 0 0 1 1 1 1 0", "test t a 0 1 3 0 2 2147483647 0", "test t idx 1 0 1 1 1 1 0", "test t idx 1 1 2 1 2 2 0")) - tblStats := h.GetTableStats(tblInfo) - val, err := codec.EncodeKey(tk.Session().GetSessionVars().StmtCtx, nil, types.NewIntDatum(3)) - require.NoError(t, err) - require.Equal(t, uint64(1), tblStats.Indices[tblInfo.Indices[0].ID].QueryBytes(val)) - require.False(t, statistics.IsAnalyzed(tblStats.Indices[tblInfo.Indices[0].ID].Flag)) - require.False(t, statistics.IsAnalyzed(tblStats.Columns[tblInfo.Columns[0].ID].Flag)) - - tk.MustExec("analyze incremental table t index") - require.NoError(t, h.LoadNeededHistograms()) - tk.MustQuery("show stats_buckets").Check(testkit.Rows("test t a 0 0 1 1 1 1 0", "test t a 0 1 2 1 2 2 0", "test t a 0 2 3 1 3 3 0", - "test t idx 1 0 1 1 1 1 0", "test t idx 1 1 2 1 2 2 0", "test t idx 1 2 3 1 3 3 0")) - tblStats = h.GetTableStats(tblInfo) - require.Equal(t, uint64(1), tblStats.Indices[tblInfo.Indices[0].ID].QueryBytes(val)) - - // test analyzeIndexIncremental for global-level stats; - tk.MustExec("set @@session.tidb_analyze_version = 1;") - tk.MustQuery("select @@tidb_analyze_version").Check(testkit.Rows("1")) - tk.MustExec("set @@tidb_partition_prune_mode = 'static';") - tk.MustExec("drop table if exists t;") - tk.MustExec(`create table t (a int, b int, primary key(a), index idx(b)) partition by range (a) ( - partition p0 values less than (10), - partition p1 values less than (20), - partition p2 values less than (30) - );`) - tk.MustExec("analyze incremental table t index") - require.NoError(t, h.LoadNeededHistograms()) - tk.MustQuery("show stats_buckets").Check(testkit.Rows()) - tk.MustExec("insert into t values (1,1)") - tk.MustExec("analyze incremental table t index") - tk.MustQuery("show warnings").Check(testkit.Rows()) // no warning - require.NoError(t, h.LoadNeededHistograms()) - tk.MustQuery("show stats_buckets").Check(testkit.Rows("test t p0 a 0 0 1 1 1 1 0", "test t p0 idx 1 0 1 1 1 1 0")) - tk.MustExec("insert into t values (2,2)") - tk.MustExec("analyze incremental table t index") - require.NoError(t, h.LoadNeededHistograms()) - tk.MustQuery("show stats_buckets").Check(testkit.Rows("test t p0 a 0 0 1 1 1 1 0", "test t p0 a 0 1 2 1 2 2 0", "test t p0 idx 1 0 1 1 1 1 0", "test t p0 idx 1 1 2 1 2 2 0")) - tk.MustExec("set @@tidb_partition_prune_mode = 'dynamic';") - tk.MustExec("insert into t values (11,11)") - err = tk.ExecToErr("analyze incremental table t index") - require.Equal(t, "[stats]: global statistics for partitioned tables unavailable in ANALYZE INCREMENTAL", err.Error()) -} - -func TestIssue20874(t *testing.T) { - store, clean := testkit.CreateMockStore(t) - defer clean() - - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("drop table if exists t") - tk.MustExec("delete from mysql.stats_histograms") - tk.MustExec("create table t (a char(10) collate utf8mb4_unicode_ci not null, b char(20) collate utf8mb4_general_ci not null, key idxa(a), key idxb(b))") - tk.MustExec("insert into t values ('#', 'C'), ('$', 'c'), ('a', 'a')") - tk.MustExec("set @@tidb_analyze_version=1") - tk.MustExec("analyze table t") - tk.MustQuery("show stats_buckets where db_name = 'test' and table_name = 't'").Sort().Check(testkit.Rows( - "test t a 0 0 1 1 \x02\xd2 \x02\xd2 0", - "test t a 0 1 2 1 \x0e\x0f \x0e\x0f 0", - "test t a 0 2 3 1 \x0e3 \x0e3 0", - "test t b 0 0 1 1 \x00A \x00A 0", - "test t b 0 1 3 2 \x00C \x00C 0", - "test t idxa 1 0 1 1 \x02\xd2 \x02\xd2 0", - "test t idxa 1 1 2 1 \x0e\x0f \x0e\x0f 0", - "test t idxa 1 2 3 1 \x0e3 \x0e3 0", - "test t idxb 1 0 1 1 \x00A \x00A 0", - "test t idxb 1 1 3 2 \x00C \x00C 0", - )) - tk.MustQuery("select is_index, hist_id, distinct_count, null_count, tot_col_size, stats_ver, correlation from mysql.stats_histograms").Sort().Check(testkit.Rows( - "0 1 3 0 9 1 1", - "0 2 2 0 9 1 -0.5", - "1 1 3 0 0 1 0", - "1 2 2 0 0 1 0", - )) - tk.MustExec("set @@tidb_analyze_version=2") - tk.MustExec("analyze table t") - tk.MustQuery("show stats_topn where db_name = 'test' and table_name = 't'").Sort().Check(testkit.Rows( - "test t a 0 \x02\xd2 1", - "test t a 0 \x0e\x0f 1", - "test t a 0 \x0e3 1", - "test t b 0 \x00A 1", - "test t b 0 \x00C 2", - "test t idxa 1 \x02\xd2 1", - "test t idxa 1 \x0e\x0f 1", - "test t idxa 1 \x0e3 1", - "test t idxb 1 \x00A 1", - "test t idxb 1 \x00C 2", - )) - tk.MustQuery("select is_index, hist_id, distinct_count, null_count, tot_col_size, stats_ver, correlation from mysql.stats_histograms").Sort().Check(testkit.Rows( - "0 1 3 0 6 2 1", - "0 2 2 0 6 2 -0.5", - "1 1 3 0 6 2 0", - "1 2 2 0 6 2 0", - )) -} - -func TestAnalyzeClusteredIndexPrimary(t *testing.T) { - store, clean := testkit.CreateMockStore(t) - defer clean() - - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("drop table if exists t0") - tk.MustExec("drop table if exists t1") - tk.MustExec("create table t0(a varchar(20), primary key(a) clustered)") - tk.MustExec("create table t1(a varchar(20), primary key(a))") - tk.MustExec("insert into t0 values('1111')") - tk.MustExec("insert into t1 values('1111')") - tk.MustExec("set @@session.tidb_analyze_version = 1") - tk.MustExec("analyze table t0 index primary") - tk.MustExec("analyze table t1 index primary") - tk.MustQuery("show stats_buckets").Check(testkit.Rows( - "test t0 PRIMARY 1 0 1 1 1111 1111 0", - "test t1 PRIMARY 1 0 1 1 1111 1111 0")) - tk.MustExec("set @@session.tidb_analyze_version = 2") - tk.MustExec("analyze table t0") - tk.MustExec("analyze table t1") - tk.MustQuery("show stats_topn").Sort().Check(testkit.Rows(""+ - "test t0 PRIMARY 1 1111 1", - "test t0 a 0 1111 1", - "test t1 PRIMARY 1 1111 1", - "test t1 a 0 1111 1")) -} - -func TestAnalyzeSamplingWorkPanic(t *testing.T) { - store, clean := testkit.CreateMockStore(t) - defer clean() - - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("set @@session.tidb_analyze_version = 2") - tk.MustExec("create table t(a int)") - tk.MustExec("insert into t values(1), (2), (3), (4), (5), (6), (7), (8), (9), (10), (11), (12)") - tk.MustExec("split table t between (-9223372036854775808) and (9223372036854775807) regions 12") - - require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/executor/mockAnalyzeSamplingBuildWorkerPanic", "return(1)")) - err := tk.ExecToErr("analyze table t") - require.NotNil(t, err) - require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/executor/mockAnalyzeSamplingBuildWorkerPanic")) - require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/executor/mockAnalyzeSamplingMergeWorkerPanic", "return(1)")) - err = tk.ExecToErr("analyze table t") - require.NotNil(t, err) - require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/executor/mockAnalyzeSamplingMergeWorkerPanic")) -} - -func TestSmallTableAnalyzeV2(t *testing.T) { - store, clean := testkit.CreateMockStore(t) - defer clean() - - tk := testkit.NewTestKit(t, store) - require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/executor/calcSampleRateByStorageCount", "return(1)")) - tk.MustExec("use test") - tk.MustExec("set @@session.tidb_analyze_version = 2") - tk.MustExec("create table small_table_inject_pd(a int)") - tk.MustExec("insert into small_table_inject_pd values(1), (2), (3), (4), (5)") - tk.MustExec("analyze table small_table_inject_pd") - tk.MustQuery("show warnings").Check(testkit.Rows("Note 1105 Analyze use auto adjusted sample rate 1.000000 for table test.small_table_inject_pd")) - tk.MustExec(` -create table small_table_inject_pd_with_partition( - a int -) partition by range(a) ( - partition p0 values less than (5), - partition p1 values less than (10), - partition p2 values less than (15) -)`) - tk.MustExec("insert into small_table_inject_pd_with_partition values(1), (6), (11)") - tk.MustExec("analyze table small_table_inject_pd_with_partition") - tk.MustQuery("show warnings").Check(testkit.Rows( - "Note 1105 Analyze use auto adjusted sample rate 1.000000 for table test.small_table_inject_pd_with_partition's partition p0", - "Note 1105 Analyze use auto adjusted sample rate 1.000000 for table test.small_table_inject_pd_with_partition's partition p1", - "Note 1105 Analyze use auto adjusted sample rate 1.000000 for table test.small_table_inject_pd_with_partition's partition p2", - )) - require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/executor/calcSampleRateByStorageCount")) -} - -func TestSavedAnalyzeOptions(t *testing.T) { - store, dom, clean := testkit.CreateMockStoreAndDomain(t) - defer clean() - tk := testkit.NewTestKit(t, store) - originalVal1 := tk.MustQuery("select @@tidb_persist_analyze_options").Rows()[0][0].(string) - defer func() { - tk.MustExec(fmt.Sprintf("set global tidb_persist_analyze_options = %v", originalVal1)) - }() - tk.MustExec("set global tidb_persist_analyze_options = true") - originalVal2 := tk.MustQuery("select @@tidb_auto_analyze_ratio").Rows()[0][0].(string) - defer func() { - tk.MustExec(fmt.Sprintf("set global tidb_auto_analyze_ratio = %v", originalVal2)) - }() - tk.MustExec("set global tidb_auto_analyze_ratio = 0.01") - originalVal3 := handle.AutoAnalyzeMinCnt - defer func() { - handle.AutoAnalyzeMinCnt = originalVal3 - }() - handle.AutoAnalyzeMinCnt = 0 - - tk.MustExec("use test") - tk.MustExec("set @@session.tidb_analyze_version = 2") - tk.MustExec("create table t(a int, b int, c int, primary key(a), key idx(b))") - tk.MustExec("insert into t values (1,1,1),(2,1,2),(3,1,3),(4,1,4),(5,1,5),(6,1,6),(7,7,7),(8,8,8),(9,9,9)") - - h := dom.StatsHandle() - oriLease := h.Lease() - h.SetLease(1) - defer func() { - h.SetLease(oriLease) - }() - tk.MustExec("analyze table t with 1 topn, 2 buckets") - is := dom.InfoSchema() - tk.MustQuery("select * from t where b > 1 and c > 1") - require.NoError(t, h.LoadNeededHistograms()) - table, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) - require.NoError(t, err) - tableInfo := table.Meta() - tbl := h.GetTableStats(tableInfo) - lastVersion := tbl.Version - col0 := tbl.Columns[tableInfo.Columns[0].ID] - require.Equal(t, 2, len(col0.Buckets)) - col1 := tbl.Columns[tableInfo.Columns[1].ID] - require.Equal(t, 1, len(col1.TopN.TopN)) - require.Equal(t, 2, len(col1.Buckets)) - col2 := tbl.Columns[tableInfo.Columns[2].ID] - require.Equal(t, 2, len(col2.Buckets)) - rs := tk.MustQuery("select buckets,topn from mysql.analyze_options where table_id=" + strconv.FormatInt(tbl.PhysicalID, 10)) - require.Equal(t, 1, len(rs.Rows())) - require.Equal(t, "2", rs.Rows()[0][0]) - require.Equal(t, "1", rs.Rows()[0][1]) - - // auto-analyze uses the table-level options - tk.MustExec("insert into t values (10,10,10)") - require.Nil(t, h.DumpStatsDeltaToKV(handle.DumpAll)) - require.Nil(t, h.Update(is)) - h.HandleAutoAnalyze(is) - tbl = h.GetTableStats(tableInfo) - require.Greater(t, tbl.Version, lastVersion) - lastVersion = tbl.Version - col0 = tbl.Columns[tableInfo.Columns[0].ID] - require.Equal(t, 2, len(col0.Buckets)) - - // manual analyze uses the table-level persisted options by merging the new options - tk.MustExec("analyze table t columns a,b with 1 samplerate, 3 buckets") - tbl = h.GetTableStats(tableInfo) - require.Greater(t, tbl.Version, lastVersion) - lastVersion = tbl.Version - col0 = tbl.Columns[tableInfo.Columns[0].ID] - require.Equal(t, 3, len(col0.Buckets)) - tk.MustQuery("select * from t where b > 1 and c > 1") - require.NoError(t, h.LoadNeededHistograms()) - col1 = tbl.Columns[tableInfo.Columns[1].ID] - require.Equal(t, 1, len(col1.TopN.TopN)) - col2 = tbl.Columns[tableInfo.Columns[2].ID] - require.Less(t, col2.LastUpdateVersion, col0.LastUpdateVersion) // not updated since removed from list - rs = tk.MustQuery("select sample_rate,buckets,topn,column_choice,column_ids from mysql.analyze_options where table_id=" + strconv.FormatInt(tbl.PhysicalID, 10)) - require.Equal(t, 1, len(rs.Rows())) - require.Equal(t, "1", rs.Rows()[0][0]) - require.Equal(t, "3", rs.Rows()[0][1]) - require.Equal(t, "1", rs.Rows()[0][2]) - require.Equal(t, "LIST", rs.Rows()[0][3]) - colIDStrs := strings.Join([]string{strconv.FormatInt(tableInfo.Columns[0].ID, 10), strconv.FormatInt(tableInfo.Columns[1].ID, 10)}, ",") - require.Equal(t, colIDStrs, rs.Rows()[0][4]) - - // disable option persistence - tk.MustExec("set global tidb_persist_analyze_options = false") - // manual analyze will neither use the pre-persisted options nor persist new options - tk.MustExec("analyze table t with 2 topn") - tbl = h.GetTableStats(tableInfo) - require.Greater(t, tbl.Version, lastVersion) - col0 = tbl.Columns[tableInfo.Columns[0].ID] - require.NotEqual(t, 3, len(col0.Buckets)) - rs = tk.MustQuery("select topn from mysql.analyze_options where table_id=" + strconv.FormatInt(tbl.PhysicalID, 10)) - require.Equal(t, 1, len(rs.Rows())) - require.NotEqual(t, "2", rs.Rows()[0][0]) -} - -func TestSavedPartitionAnalyzeOptions(t *testing.T) { - store, dom, clean := testkit.CreateMockStoreAndDomain(t) - defer clean() - tk := testkit.NewTestKit(t, store) - originalVal := tk.MustQuery("select @@tidb_persist_analyze_options").Rows()[0][0].(string) - defer func() { - tk.MustExec(fmt.Sprintf("set global tidb_persist_analyze_options = %v", originalVal)) - }() - tk.MustExec("set global tidb_persist_analyze_options = true") - - tk.MustExec("use test") - tk.MustExec("set @@session.tidb_analyze_version = 2") - tk.MustExec("set @@session.tidb_partition_prune_mode = 'static'") - createTable := `CREATE TABLE t (a int, b int, c varchar(10), primary key(a), index idx(b)) -PARTITION BY RANGE ( a ) ( - PARTITION p0 VALUES LESS THAN (10), - PARTITION p1 VALUES LESS THAN (20) -)` - tk.MustExec(createTable) - tk.MustExec("insert into t values (1,1,1),(2,1,2),(3,1,3),(4,1,4),(5,1,5),(6,1,6),(7,7,7),(8,8,8),(9,9,9),(10,10,10),(11,11,11),(12,12,12),(13,13,13),(14,14,14)") - - h := dom.StatsHandle() - oriLease := h.Lease() - h.SetLease(1) - defer func() { - h.SetLease(oriLease) - }() - // analyze partition only sets options of partition - tk.MustExec("analyze table t partition p0 with 1 topn, 3 buckets") - is := dom.InfoSchema() - tk.MustQuery("select * from t where b > 1 and c > 1") - require.NoError(t, h.LoadNeededHistograms()) - table, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) - require.NoError(t, err) - tableInfo := table.Meta() - pi := tableInfo.GetPartitionInfo() - require.NotNil(t, pi) - p0 := h.GetPartitionStats(tableInfo, pi.Definitions[0].ID) - lastVersion := p0.Version - require.Equal(t, 3, len(p0.Columns[tableInfo.Columns[0].ID].Buckets)) - rs := tk.MustQuery("select buckets,topn from mysql.analyze_options where table_id=" + strconv.FormatInt(p0.PhysicalID, 10)) - require.Equal(t, 1, len(rs.Rows())) - require.Equal(t, "3", rs.Rows()[0][0]) - require.Equal(t, "1", rs.Rows()[0][1]) - rs = tk.MustQuery("select buckets,topn from mysql.analyze_options where table_id=" + strconv.FormatInt(tableInfo.ID, 10)) - require.Equal(t, 1, len(rs.Rows())) - require.Equal(t, "0", rs.Rows()[0][0]) - require.Equal(t, "-1", rs.Rows()[0][1]) - - // merge partition & table level options - tk.MustExec("analyze table t columns a,b with 0 topn, 2 buckets") - tk.MustQuery("select * from t where b > 1 and c > 1") - require.NoError(t, h.LoadNeededHistograms()) - p0 = h.GetPartitionStats(tableInfo, pi.Definitions[0].ID) - p1 := h.GetPartitionStats(tableInfo, pi.Definitions[1].ID) - require.Greater(t, p0.Version, lastVersion) - lastVersion = p0.Version - require.Equal(t, 2, len(p0.Columns[tableInfo.Columns[0].ID].Buckets)) - require.Equal(t, 2, len(p1.Columns[tableInfo.Columns[0].ID].Buckets)) - // check column c is not analyzed - require.Less(t, p0.Columns[tableInfo.Columns[2].ID].LastUpdateVersion, p0.Columns[tableInfo.Columns[0].ID].LastUpdateVersion) - require.Less(t, p1.Columns[tableInfo.Columns[2].ID].LastUpdateVersion, p1.Columns[tableInfo.Columns[0].ID].LastUpdateVersion) - rs = tk.MustQuery("select sample_rate,buckets,topn,column_choice,column_ids from mysql.analyze_options where table_id=" + strconv.FormatInt(tableInfo.ID, 10)) - require.Equal(t, 1, len(rs.Rows())) - require.Equal(t, "0", rs.Rows()[0][0]) - require.Equal(t, "2", rs.Rows()[0][1]) - require.Equal(t, "0", rs.Rows()[0][2]) - require.Equal(t, "LIST", rs.Rows()[0][3]) - colIDStrsAB := strings.Join([]string{strconv.FormatInt(tableInfo.Columns[0].ID, 10), strconv.FormatInt(tableInfo.Columns[1].ID, 10)}, ",") - require.Equal(t, colIDStrsAB, rs.Rows()[0][4]) - rs = tk.MustQuery("select sample_rate,buckets,topn,column_choice,column_ids from mysql.analyze_options where table_id=" + strconv.FormatInt(p0.PhysicalID, 10)) - require.Equal(t, 1, len(rs.Rows())) - require.Equal(t, "0", rs.Rows()[0][0]) - require.Equal(t, "2", rs.Rows()[0][1]) - require.Equal(t, "0", rs.Rows()[0][2]) - require.Equal(t, "LIST", rs.Rows()[0][3]) - require.Equal(t, colIDStrsAB, rs.Rows()[0][4]) - rs = tk.MustQuery("select sample_rate,buckets,topn,column_choice,column_ids from mysql.analyze_options where table_id=" + strconv.FormatInt(p1.PhysicalID, 10)) - require.Equal(t, 1, len(rs.Rows())) - require.Equal(t, "0", rs.Rows()[0][0]) - require.Equal(t, "2", rs.Rows()[0][1]) - require.Equal(t, "0", rs.Rows()[0][2]) - require.Equal(t, "LIST", rs.Rows()[0][3]) - require.Equal(t, colIDStrsAB, rs.Rows()[0][4]) - - // analyze partition only updates this partition, and set different collist - tk.MustExec("analyze table t partition p1 columns a,c with 1 buckets") - tk.MustQuery("select * from t where b > 1 and c > 1") - require.NoError(t, h.LoadNeededHistograms()) - p0 = h.GetPartitionStats(tableInfo, pi.Definitions[0].ID) - p1 = h.GetPartitionStats(tableInfo, pi.Definitions[1].ID) - require.Equal(t, p0.Version, lastVersion) - require.Greater(t, p1.Version, lastVersion) - lastVersion = p1.Version - require.Equal(t, 1, len(p1.Columns[tableInfo.Columns[0].ID].Buckets)) - require.Equal(t, 2, len(p0.Columns[tableInfo.Columns[0].ID].Buckets)) - // only column c of p1 is re-analyzed - require.Equal(t, 1, len(p1.Columns[tableInfo.Columns[2].ID].Buckets)) - require.NotEqual(t, 1, len(p0.Columns[tableInfo.Columns[2].ID].Buckets)) - colIDStrsABC := strings.Join([]string{strconv.FormatInt(tableInfo.Columns[0].ID, 10), strconv.FormatInt(tableInfo.Columns[1].ID, 10), strconv.FormatInt(tableInfo.Columns[2].ID, 10)}, ",") - rs = tk.MustQuery("select buckets,column_ids from mysql.analyze_options where table_id=" + strconv.FormatInt(tableInfo.ID, 10)) - require.Equal(t, 1, len(rs.Rows())) - require.Equal(t, "2", rs.Rows()[0][0]) - require.Equal(t, colIDStrsAB, rs.Rows()[0][1]) - rs = tk.MustQuery("select buckets,column_ids from mysql.analyze_options where table_id=" + strconv.FormatInt(p1.PhysicalID, 10)) - require.Equal(t, 1, len(rs.Rows())) - require.Equal(t, "1", rs.Rows()[0][0]) - require.Equal(t, colIDStrsABC, rs.Rows()[0][1]) - rs = tk.MustQuery("select buckets,column_ids from mysql.analyze_options where table_id=" + strconv.FormatInt(p0.PhysicalID, 10)) - require.Equal(t, 1, len(rs.Rows())) - require.Equal(t, "2", rs.Rows()[0][0]) - require.Equal(t, colIDStrsAB, rs.Rows()[0][1]) - - // analyze partition without options uses saved partition options - tk.MustExec("analyze table t partition p0") - p0 = h.GetPartitionStats(tableInfo, pi.Definitions[0].ID) - require.Greater(t, p0.Version, lastVersion) - lastVersion = p0.Version - require.Equal(t, 2, len(p0.Columns[tableInfo.Columns[0].ID].Buckets)) - rs = tk.MustQuery("select buckets from mysql.analyze_options where table_id=" + strconv.FormatInt(tableInfo.ID, 10)) - require.Equal(t, 1, len(rs.Rows())) - require.Equal(t, "2", rs.Rows()[0][0]) - rs = tk.MustQuery("select buckets from mysql.analyze_options where table_id=" + strconv.FormatInt(p0.PhysicalID, 10)) - require.Equal(t, 1, len(rs.Rows())) - require.Equal(t, "2", rs.Rows()[0][0]) - - // merge options of statement's, partition's and table's - tk.MustExec("analyze table t partition p0 with 3 buckets") - p0 = h.GetPartitionStats(tableInfo, pi.Definitions[0].ID) - require.Greater(t, p0.Version, lastVersion) - require.Equal(t, 3, len(p0.Columns[tableInfo.Columns[0].ID].Buckets)) - rs = tk.MustQuery("select sample_rate,buckets,topn,column_choice,column_ids from mysql.analyze_options where table_id=" + strconv.FormatInt(p0.PhysicalID, 10)) - require.Equal(t, 1, len(rs.Rows())) - require.Equal(t, "0", rs.Rows()[0][0]) - require.Equal(t, "3", rs.Rows()[0][1]) - require.Equal(t, "0", rs.Rows()[0][2]) - require.Equal(t, "LIST", rs.Rows()[0][3]) - require.Equal(t, colIDStrsAB, rs.Rows()[0][4]) - - // add new partitions, use table options as default - tk.MustExec("ALTER TABLE t ADD PARTITION (PARTITION p2 VALUES LESS THAN (30))") - tk.MustExec("insert into t values (21,21,21),(22,22,22),(23,23,23),(24,24,24)") - tk.MustExec("analyze table t partition p2") - is = dom.InfoSchema() - table, err = is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) - require.NoError(t, err) - tableInfo = table.Meta() - pi = tableInfo.GetPartitionInfo() - p2 := h.GetPartitionStats(tableInfo, pi.Definitions[2].ID) - require.Equal(t, 2, len(p2.Columns[tableInfo.Columns[0].ID].Buckets)) - rs = tk.MustQuery("select sample_rate,buckets,topn,column_choice,column_ids from mysql.analyze_options where table_id=" + strconv.FormatInt(p2.PhysicalID, 10)) - require.Equal(t, 1, len(rs.Rows())) - require.Equal(t, "0", rs.Rows()[0][0]) - require.Equal(t, "2", rs.Rows()[0][1]) - require.Equal(t, "0", rs.Rows()[0][2]) - require.Equal(t, "LIST", rs.Rows()[0][3]) - require.Equal(t, colIDStrsAB, rs.Rows()[0][4]) - rs = tk.MustQuery("select sample_rate,buckets,topn,column_choice,column_ids from mysql.analyze_options where table_id=" + strconv.FormatInt(tableInfo.ID, 10)) - require.Equal(t, 1, len(rs.Rows())) - require.Equal(t, "0", rs.Rows()[0][0]) - require.Equal(t, "2", rs.Rows()[0][1]) - require.Equal(t, "0", rs.Rows()[0][2]) - require.Equal(t, "LIST", rs.Rows()[0][3]) - require.Equal(t, colIDStrsAB, rs.Rows()[0][4]) - - // set analyze version back to 1, will not use persisted - tk.MustExec("set @@session.tidb_analyze_version = 1") - tk.MustExec("analyze table t partition p2") - pi = tableInfo.GetPartitionInfo() - p2 = h.GetPartitionStats(tableInfo, pi.Definitions[2].ID) - require.NotEqual(t, 2, len(p2.Columns[tableInfo.Columns[0].ID].Buckets)) - - // drop column - tk.MustExec("set @@session.tidb_analyze_version = 2") - tk.MustExec("alter table t drop column b") - tk.MustExec("analyze table t") - colIDStrsA := strings.Join([]string{strconv.FormatInt(tableInfo.Columns[0].ID, 10)}, ",") - colIDStrsAC := strings.Join([]string{strconv.FormatInt(tableInfo.Columns[0].ID, 10), strconv.FormatInt(tableInfo.Columns[2].ID, 10)}, ",") - rs = tk.MustQuery("select column_ids from mysql.analyze_options where table_id=" + strconv.FormatInt(tableInfo.ID, 10)) - require.Equal(t, 1, len(rs.Rows())) - require.Equal(t, colIDStrsA, rs.Rows()[0][0]) - rs = tk.MustQuery("select column_ids from mysql.analyze_options where table_id=" + strconv.FormatInt(p0.PhysicalID, 10)) - require.Equal(t, 1, len(rs.Rows())) - require.Equal(t, colIDStrsA, rs.Rows()[0][0]) - rs = tk.MustQuery("select column_ids from mysql.analyze_options where table_id=" + strconv.FormatInt(p1.PhysicalID, 10)) - require.Equal(t, 1, len(rs.Rows())) - require.Equal(t, colIDStrsAC, rs.Rows()[0][0]) - - // drop partition - tk.MustExec("alter table t drop partition p1") - is = dom.InfoSchema() // refresh infoschema - require.Nil(t, h.GCStats(is, time.Duration(0))) - rs = tk.MustQuery("select * from mysql.analyze_options where table_id=" + strconv.FormatInt(tableInfo.ID, 10)) - require.Equal(t, 1, len(rs.Rows())) - rs = tk.MustQuery("select * from mysql.analyze_options where table_id=" + strconv.FormatInt(p0.PhysicalID, 10)) - require.Equal(t, 1, len(rs.Rows())) - rs = tk.MustQuery("select * from mysql.analyze_options where table_id=" + strconv.FormatInt(p1.PhysicalID, 10)) - require.Equal(t, 0, len(rs.Rows())) - - // drop table - tk.MustExec("drop table t") - is = dom.InfoSchema() // refresh infoschema - require.Nil(t, h.GCStats(is, time.Duration(0))) - rs = tk.MustQuery("select * from mysql.analyze_options where table_id=" + strconv.FormatInt(tableInfo.ID, 10)) - //require.Equal(t, len(rs.Rows()), 0) TODO - rs = tk.MustQuery("select * from mysql.analyze_options where table_id=" + strconv.FormatInt(p0.PhysicalID, 10)) - require.Equal(t, 0, len(rs.Rows())) -} - -func TestSavedAnalyzeOptionsForMultipleTables(t *testing.T) { - store, dom, clean := testkit.CreateMockStoreAndDomain(t) - defer clean() - tk := testkit.NewTestKit(t, store) - originalVal := tk.MustQuery("select @@tidb_persist_analyze_options").Rows()[0][0].(string) - defer func() { - tk.MustExec(fmt.Sprintf("set global tidb_persist_analyze_options = %v", originalVal)) - }() - tk.MustExec("set global tidb_persist_analyze_options = true") - - tk.MustExec("use test") - tk.MustExec("set @@session.tidb_analyze_version = 2") - tk.MustExec("set @@session.tidb_partition_prune_mode = 'static'") - tk.MustExec("create table t1(a int, b int, c int, primary key(a), key idx(b))") - tk.MustExec("insert into t1 values (1,1,1),(2,1,2),(3,1,3),(4,1,4),(5,1,5),(6,1,6),(7,7,7),(8,8,8),(9,9,9)") - tk.MustExec("create table t2(a int, b int, c int, primary key(a), key idx(b))") - tk.MustExec("insert into t2 values (1,1,1),(2,1,2),(3,1,3),(4,1,4),(5,1,5),(6,1,6),(7,7,7),(8,8,8),(9,9,9)") - - h := dom.StatsHandle() - oriLease := h.Lease() - h.SetLease(1) - defer func() { - h.SetLease(oriLease) - }() - - tk.MustExec("analyze table t1 with 1 topn, 3 buckets") - tk.MustExec("analyze table t2 with 0 topn, 2 buckets") - tk.MustExec("analyze table t1,t2 with 2 topn") - is := dom.InfoSchema() - table1, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t1")) - require.NoError(t, err) - table2, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t2")) - require.NoError(t, err) - tableInfo1 := table1.Meta() - tableInfo2 := table2.Meta() - tblStats1 := h.GetTableStats(tableInfo1) - tblStats2 := h.GetTableStats(tableInfo2) - tbl1Col0 := tblStats1.Columns[tableInfo1.Columns[0].ID] - tbl2Col0 := tblStats2.Columns[tableInfo2.Columns[0].ID] - require.Equal(t, 3, len(tbl1Col0.Buckets)) - require.Equal(t, 2, len(tbl2Col0.Buckets)) - rs := tk.MustQuery("select buckets,topn from mysql.analyze_options where table_id=" + strconv.FormatInt(tableInfo1.ID, 10)) - require.Equal(t, 1, len(rs.Rows())) - require.Equal(t, "3", rs.Rows()[0][0]) - require.Equal(t, "2", rs.Rows()[0][1]) - rs = tk.MustQuery("select buckets,topn from mysql.analyze_options where table_id=" + strconv.FormatInt(tableInfo2.ID, 10)) - require.Equal(t, 1, len(rs.Rows())) - require.Equal(t, "2", rs.Rows()[0][0]) - require.Equal(t, "2", rs.Rows()[0][1]) -} - -func TestSavedAnalyzeColumnOptions(t *testing.T) { - store, dom, clean := testkit.CreateMockStoreAndDomain(t) - defer clean() - tk := testkit.NewTestKit(t, store) - originalVal1 := tk.MustQuery("select @@tidb_persist_analyze_options").Rows()[0][0].(string) - defer func() { - tk.MustExec(fmt.Sprintf("set global tidb_persist_analyze_options = %v", originalVal1)) - }() - tk.MustExec("set global tidb_persist_analyze_options = true") - originalVal2 := tk.MustQuery("select @@tidb_auto_analyze_ratio").Rows()[0][0].(string) - defer func() { - tk.MustExec(fmt.Sprintf("set global tidb_auto_analyze_ratio = %v", originalVal2)) - }() - tk.MustExec("set global tidb_auto_analyze_ratio = 0.01") - originalVal3 := handle.AutoAnalyzeMinCnt - defer func() { - handle.AutoAnalyzeMinCnt = originalVal3 - }() - handle.AutoAnalyzeMinCnt = 0 - originalVal4 := tk.MustQuery("select @@tidb_enable_column_tracking").Rows()[0][0].(string) - defer func() { - tk.MustExec(fmt.Sprintf("set global tidb_enable_column_tracking = %v", originalVal4)) - }() - tk.MustExec("set global tidb_enable_column_tracking = 1") - - tk.MustExec("use test") - tk.MustExec("set @@session.tidb_analyze_version = 2") - tk.MustExec("create table t(a int, b int, c int)") - tk.MustExec("insert into t values (1,1,1),(2,2,2),(3,3,3),(4,4,4)") - - h := dom.StatsHandle() - oriLease := h.Lease() - h.SetLease(1) - defer func() { - h.SetLease(oriLease) - }() - is := dom.InfoSchema() - tbl, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) - require.NoError(t, err) - tblInfo := tbl.Meta() - tk.MustExec("select * from t where b > 1") - require.NoError(t, h.DumpColStatsUsageToKV()) - tk.MustExec("analyze table t predicate columns") - require.NoError(t, h.LoadNeededHistograms()) - tblStats := h.GetTableStats(tblInfo) - lastVersion := tblStats.Version - // column b is analyzed - require.Greater(t, lastVersion, tblStats.Columns[tblInfo.Columns[0].ID].LastUpdateVersion) - require.Equal(t, lastVersion, tblStats.Columns[tblInfo.Columns[1].ID].LastUpdateVersion) - require.Greater(t, lastVersion, tblStats.Columns[tblInfo.Columns[2].ID].LastUpdateVersion) - tk.MustQuery(fmt.Sprintf("select column_choice, column_ids from mysql.analyze_options where table_id = %v", tblInfo.ID)).Check(testkit.Rows("PREDICATE ")) - - tk.MustExec("select * from t where c > 1") - require.NoError(t, h.DumpColStatsUsageToKV()) - // manually analyze uses the saved option(predicate columns). - tk.MustExec("analyze table t") - require.NoError(t, h.LoadNeededHistograms()) - tblStats = h.GetTableStats(tblInfo) - require.Less(t, lastVersion, tblStats.Version) - lastVersion = tblStats.Version - // column b, c are analyzed - require.Greater(t, lastVersion, tblStats.Columns[tblInfo.Columns[0].ID].LastUpdateVersion) - require.Equal(t, lastVersion, tblStats.Columns[tblInfo.Columns[1].ID].LastUpdateVersion) - require.Equal(t, lastVersion, tblStats.Columns[tblInfo.Columns[2].ID].LastUpdateVersion) - - tk.MustExec("insert into t values (5,5,5),(6,6,6)") - require.Nil(t, h.DumpStatsDeltaToKV(handle.DumpAll)) - require.Nil(t, h.Update(is)) - // auto analyze uses the saved option(predicate columns). - h.HandleAutoAnalyze(is) - tblStats = h.GetTableStats(tblInfo) - require.Less(t, lastVersion, tblStats.Version) - lastVersion = tblStats.Version - // column b, c are analyzed - require.Greater(t, lastVersion, tblStats.Columns[tblInfo.Columns[0].ID].LastUpdateVersion) - require.Equal(t, lastVersion, tblStats.Columns[tblInfo.Columns[1].ID].LastUpdateVersion) - require.Equal(t, lastVersion, tblStats.Columns[tblInfo.Columns[2].ID].LastUpdateVersion) - - tk.MustExec("analyze table t columns a") - tblStats = h.GetTableStats(tblInfo) - require.Less(t, lastVersion, tblStats.Version) - lastVersion = tblStats.Version - // column a is analyzed - require.Equal(t, lastVersion, tblStats.Columns[tblInfo.Columns[0].ID].LastUpdateVersion) - require.Greater(t, lastVersion, tblStats.Columns[tblInfo.Columns[1].ID].LastUpdateVersion) - require.Greater(t, lastVersion, tblStats.Columns[tblInfo.Columns[2].ID].LastUpdateVersion) - tk.MustQuery(fmt.Sprintf("select column_choice, column_ids from mysql.analyze_options where table_id = %v", tblInfo.ID)).Check(testkit.Rows(fmt.Sprintf("LIST %v", tblInfo.Columns[0].ID))) - - tk.MustExec("analyze table t all columns") - tblStats = h.GetTableStats(tblInfo) - require.Less(t, lastVersion, tblStats.Version) - lastVersion = tblStats.Version - // column a, b, c are analyzed - require.Equal(t, lastVersion, tblStats.Columns[tblInfo.Columns[0].ID].LastUpdateVersion) - require.Equal(t, lastVersion, tblStats.Columns[tblInfo.Columns[1].ID].LastUpdateVersion) - require.Equal(t, lastVersion, tblStats.Columns[tblInfo.Columns[2].ID].LastUpdateVersion) - tk.MustQuery(fmt.Sprintf("select column_choice, column_ids from mysql.analyze_options where table_id = %v", tblInfo.ID)).Check(testkit.Rows("ALL ")) -} - -func TestAnalyzeColumnsWithPrimaryKey(t *testing.T) { - for _, val := range []model.ColumnChoice{model.ColumnList, model.PredicateColumns} { - func(choice model.ColumnChoice) { - store, dom, clean := testkit.CreateMockStoreAndDomain(t) - defer clean() - - tk := testkit.NewTestKit(t, store) - h := dom.StatsHandle() - tk.MustExec("use test") - tk.MustExec("drop table if exists t") - tk.MustExec("set @@tidb_analyze_version = 2") - tk.MustExec("create table t (a int, b int, c int primary key)") - tk.MustExec("insert into t values (1,1,1), (1,1,2), (2,2,3), (2,2,4), (3,3,5), (4,3,6), (5,4,7), (6,4,8), (null,null,9)") - require.NoError(t, h.DumpStatsDeltaToKV(handle.DumpAll)) - - is := dom.InfoSchema() - tbl, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) - require.NoError(t, err) - tblID := tbl.Meta().ID - - switch choice { - case model.ColumnList: - tk.MustExec("analyze table t columns a with 2 topn, 2 buckets") - tk.MustQuery("show warnings").Sort().Check(testkit.Rows( - "Note 1105 Analyze use auto adjusted sample rate 1.000000 for table test.t", - "Warning 1105 Columns c are missing in ANALYZE but their stats are needed for calculating stats for indexes/primary key/extended stats", - )) - case model.PredicateColumns: - originalVal := tk.MustQuery("select @@tidb_enable_column_tracking").Rows()[0][0].(string) - defer func() { - tk.MustExec(fmt.Sprintf("set global tidb_enable_column_tracking = %v", originalVal)) - }() - tk.MustExec("set global tidb_enable_column_tracking = 1") - tk.MustExec("select * from t where a > 1") - require.NoError(t, h.DumpColStatsUsageToKV()) - rows := tk.MustQuery("show column_stats_usage where db_name = 'test' and table_name = 't' and last_used_at is not null").Rows() - require.Equal(t, 1, len(rows)) - require.Equal(t, "a", rows[0][3]) - tk.MustExec("analyze table t predicate columns with 2 topn, 2 buckets") - } - - rows := tk.MustQuery("show column_stats_usage where db_name = 'test' and table_name = 't' and last_analyzed_at is not null").Sort().Rows() - require.Equal(t, 2, len(rows)) - require.Equal(t, "a", rows[0][3]) - require.Equal(t, "c", rows[1][3]) - - tk.MustQuery(fmt.Sprintf("select modify_count, count from mysql.stats_meta where table_id = %d", tblID)).Sort().Check( - testkit.Rows("0 9")) - tk.MustQuery("show stats_topn where db_name = 'test' and table_name = 't'").Sort().Check( - // db, tbl, part, col, is_idx, value, count - testkit.Rows("test t a 0 1 2", - "test t a 0 2 2", - "test t c 0 1 1", - "test t c 0 2 1")) - tk.MustQuery(fmt.Sprintf("select is_index, hist_id, distinct_count, null_count, tot_col_size, stats_ver, truncate(correlation,2) from mysql.stats_histograms where table_id = %d", tblID)).Sort().Check( - testkit.Rows("0 1 6 1 8 2 1", - "0 2 0 0 8 0 0", // column b is not analyzed - "0 3 9 0 9 2 1", - )) - tk.MustQuery("show stats_buckets where db_name = 'test' and table_name = 't'").Sort().Check( - // db, tbl, part, col, is_index, bucket_id, count, repeats, lower, upper, ndv - testkit.Rows("test t a 0 0 3 1 3 5 0", - "test t a 0 1 4 1 6 6 0", - "test t c 0 0 4 1 3 6 0", - "test t c 0 1 7 1 7 9 0")) - }(val) - } -} - -func TestAnalyzeColumnsWithIndex(t *testing.T) { - for _, val := range []model.ColumnChoice{model.ColumnList, model.PredicateColumns} { - func(choice model.ColumnChoice) { - store, dom, clean := testkit.CreateMockStoreAndDomain(t) - defer clean() - - tk := testkit.NewTestKit(t, store) - h := dom.StatsHandle() - tk.MustExec("use test") - tk.MustExec("drop table if exists t") - tk.MustExec("set @@tidb_analyze_version = 2") - tk.MustExec("create table t (a int, b int, c int, d int, index idx_b_d(b, d))") - tk.MustExec("insert into t values (1,1,null,1), (2,1,9,1), (1,1,8,1), (2,2,7,2), (1,3,7,3), (2,4,6,4), (1,4,6,5), (2,4,6,5), (1,5,6,5)") - require.NoError(t, h.DumpStatsDeltaToKV(handle.DumpAll)) - - is := dom.InfoSchema() - tbl, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) - require.NoError(t, err) - tblID := tbl.Meta().ID - - switch choice { - case model.ColumnList: - tk.MustExec("analyze table t columns c with 2 topn, 2 buckets") - tk.MustQuery("show warnings").Sort().Check(testkit.Rows( - "Note 1105 Analyze use auto adjusted sample rate 1.000000 for table test.t", - "Warning 1105 Columns b,d are missing in ANALYZE but their stats are needed for calculating stats for indexes/primary key/extended stats", - )) - case model.PredicateColumns: - originalVal := tk.MustQuery("select @@tidb_enable_column_tracking").Rows()[0][0].(string) - defer func() { - tk.MustExec(fmt.Sprintf("set global tidb_enable_column_tracking = %v", originalVal)) - }() - tk.MustExec("set global tidb_enable_column_tracking = 1") - tk.MustExec("select * from t where c > 1") - require.NoError(t, h.DumpColStatsUsageToKV()) - rows := tk.MustQuery("show column_stats_usage where db_name = 'test' and table_name = 't' and last_used_at is not null").Rows() - require.Equal(t, 1, len(rows)) - require.Equal(t, "c", rows[0][3]) - tk.MustExec("analyze table t predicate columns with 2 topn, 2 buckets") - } - - rows := tk.MustQuery("show column_stats_usage where db_name = 'test' and table_name = 't' and last_analyzed_at is not null").Sort().Rows() - require.Equal(t, 3, len(rows)) - require.Equal(t, "b", rows[0][3]) - require.Equal(t, "c", rows[1][3]) - require.Equal(t, "d", rows[2][3]) - - tk.MustQuery(fmt.Sprintf("select modify_count, count from mysql.stats_meta where table_id = %d", tblID)).Sort().Check( - testkit.Rows("0 9")) - tk.MustQuery("show stats_topn where db_name = 'test' and table_name = 't'").Sort().Check( - // db, tbl, part, col, is_idx, value, count - testkit.Rows("test t b 0 1 3", - "test t b 0 4 3", - "test t c 0 6 4", - "test t c 0 7 2", - "test t d 0 1 3", - "test t d 0 5 3", - "test t idx_b_d 1 (1, 1) 3", - "test t idx_b_d 1 (4, 5) 2")) - tk.MustQuery(fmt.Sprintf("select is_index, hist_id, distinct_count, null_count, tot_col_size, stats_ver, truncate(correlation,2) from mysql.stats_histograms where table_id = %d", tblID)).Sort().Check( - testkit.Rows("0 1 0 0 9 0 0", // column a is not analyzed - "0 2 5 0 9 2 1", - "0 3 4 1 8 2 -0.07", - "0 4 5 0 9 2 1", - "1 1 6 0 18 2 0")) - tk.MustQuery("show stats_buckets where db_name = 'test' and table_name = 't'").Sort().Check( - // db, tbl, part, col, is_index, bucket_id, count, repeats, lower, upper, ndv - testkit.Rows("test t b 0 0 2 1 2 3 0", - "test t b 0 1 3 1 5 5 0", - "test t c 0 0 2 1 8 9 0", - "test t d 0 0 2 1 2 3 0", - "test t d 0 1 3 1 4 4 0", - "test t idx_b_d 1 0 3 1 (2, 2) (4, 4) 0", - "test t idx_b_d 1 1 4 1 (5, 5) (5, 5) 0")) - }(val) - } -} - -func TestAnalyzeColumnsWithClusteredIndex(t *testing.T) { - for _, val := range []model.ColumnChoice{model.ColumnList, model.PredicateColumns} { - func(choice model.ColumnChoice) { - store, dom, clean := testkit.CreateMockStoreAndDomain(t) - defer clean() - - tk := testkit.NewTestKit(t, store) - h := dom.StatsHandle() - tk.MustExec("use test") - tk.MustExec("drop table if exists t") - tk.MustExec("set @@tidb_analyze_version = 2") - tk.MustExec("create table t (a int, b int, c int, d int, primary key(b, d) clustered)") - tk.MustExec("insert into t values (1,1,null,1), (2,2,9,2), (1,3,8,3), (2,4,7,4), (1,5,7,5), (2,6,6,6), (1,7,6,7), (2,8,6,8), (1,9,6,9)") - require.NoError(t, h.DumpStatsDeltaToKV(handle.DumpAll)) - - is := dom.InfoSchema() - tbl, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) - require.NoError(t, err) - tblID := tbl.Meta().ID - - switch choice { - case model.ColumnList: - tk.MustExec("analyze table t columns c with 2 topn, 2 buckets") - tk.MustQuery("show warnings").Sort().Check(testkit.Rows( - "Note 1105 Analyze use auto adjusted sample rate 1.000000 for table test.t", - "Warning 1105 Columns b,d are missing in ANALYZE but their stats are needed for calculating stats for indexes/primary key/extended stats", - )) - case model.PredicateColumns: - originalVal := tk.MustQuery("select @@tidb_enable_column_tracking").Rows()[0][0].(string) - defer func() { - tk.MustExec(fmt.Sprintf("set global tidb_enable_column_tracking = %v", originalVal)) - }() - tk.MustExec("set global tidb_enable_column_tracking = 1") - tk.MustExec("select * from t where c > 1") - require.NoError(t, h.DumpColStatsUsageToKV()) - rows := tk.MustQuery("show column_stats_usage where db_name = 'test' and table_name = 't' and last_used_at is not null").Rows() - require.Equal(t, 1, len(rows)) - require.Equal(t, "c", rows[0][3]) - tk.MustExec("analyze table t predicate columns with 2 topn, 2 buckets") - } - - rows := tk.MustQuery("show column_stats_usage where db_name = 'test' and table_name = 't' and last_analyzed_at is not null").Sort().Rows() - require.Equal(t, 3, len(rows)) - require.Equal(t, "b", rows[0][3]) - require.Equal(t, "c", rows[1][3]) - require.Equal(t, "d", rows[2][3]) - - tk.MustQuery(fmt.Sprintf("select modify_count, count from mysql.stats_meta where table_id = %d", tblID)).Sort().Check( - testkit.Rows("0 9")) - tk.MustQuery("show stats_topn where db_name = 'test' and table_name = 't'").Sort().Check( - // db, tbl, part, col, is_idx, value, count - testkit.Rows("test t PRIMARY 1 (1, 1) 1", - "test t PRIMARY 1 (2, 2) 1", - "test t b 0 1 1", - "test t b 0 2 1", - "test t c 0 6 4", - "test t c 0 7 2", - "test t d 0 1 1", - "test t d 0 2 1")) - tk.MustQuery(fmt.Sprintf("select is_index, hist_id, distinct_count, null_count, tot_col_size, stats_ver, truncate(correlation,2) from mysql.stats_histograms where table_id = %d", tblID)).Sort().Check( - testkit.Rows("0 1 0 0 9 0 0", // column a is not analyzed - "0 2 9 0 9 2 1", - "0 3 4 1 8 2 -0.07", - "0 4 9 0 9 2 1", - "1 1 9 0 18 2 0")) - tk.MustQuery("show stats_buckets where db_name = 'test' and table_name = 't'").Sort().Check( - // db, tbl, part, col, is_index, bucket_id, count, repeats, lower, upper, ndv - testkit.Rows("test t PRIMARY 1 0 4 1 (3, 3) (6, 6) 0", - "test t PRIMARY 1 1 7 1 (7, 7) (9, 9) 0", - "test t b 0 0 4 1 3 6 0", - "test t b 0 1 7 1 7 9 0", - "test t c 0 0 2 1 8 9 0", - "test t d 0 0 4 1 3 6 0", - "test t d 0 1 7 1 7 9 0")) - }(val) - } -} - -func TestAnalyzeColumnsWithDynamicPartitionTable(t *testing.T) { - for _, val := range []model.ColumnChoice{model.ColumnList, model.PredicateColumns} { - func(choice model.ColumnChoice) { - store, dom, clean := testkit.CreateMockStoreAndDomain(t) - defer clean() - - tk := testkit.NewTestKit(t, store) - h := dom.StatsHandle() - tk.MustExec("use test") - tk.MustExec("drop table if exists t") - tk.MustExec("set @@tidb_analyze_version = 2") - tk.MustExec("set @@tidb_partition_prune_mode = 'dynamic'") - tk.MustExec("create table t (a int, b int, c int, index idx(c)) partition by range (a) (partition p0 values less than (10), partition p1 values less than maxvalue)") - tk.MustExec("insert into t values (1,2,1), (2,4,1), (3,6,1), (4,8,2), (4,8,2), (5,10,3), (5,10,4), (5,10,5), (null,null,6), (11,22,7), (12,24,8), (13,26,9), (14,28,10), (15,30,11), (16,32,12), (16,32,13), (16,32,13), (16,32,14), (17,34,14), (17,34,14)") - require.NoError(t, h.DumpStatsDeltaToKV(handle.DumpAll)) - - is := dom.InfoSchema() - tbl, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) - require.NoError(t, err) - tblID := tbl.Meta().ID - defs := tbl.Meta().Partition.Definitions - p0ID := defs[0].ID - p1ID := defs[1].ID - - switch choice { - case model.ColumnList: - tk.MustExec("analyze table t columns a with 2 topn, 2 buckets") - tk.MustQuery("show warnings").Sort().Check(testkit.Rows( - "Note 1105 Analyze use auto adjusted sample rate 1.000000 for table test.t's partition p0", - "Note 1105 Analyze use auto adjusted sample rate 1.000000 for table test.t's partition p1", - "Warning 1105 Columns c are missing in ANALYZE but their stats are needed for calculating stats for indexes/primary key/extended stats", - )) - case model.PredicateColumns: - originalVal := tk.MustQuery("select @@tidb_enable_column_tracking").Rows()[0][0].(string) - defer func() { - tk.MustExec(fmt.Sprintf("set global tidb_enable_column_tracking = %v", originalVal)) - }() - tk.MustExec("set global tidb_enable_column_tracking = 1") - tk.MustExec("select * from t where a < 1") - require.NoError(t, h.DumpColStatsUsageToKV()) - rows := tk.MustQuery("show column_stats_usage where db_name = 'test' and table_name = 't' and last_used_at is not null").Rows() - require.Equal(t, 1, len(rows)) - require.Equal(t, []interface{}{"test", "t", "global", "a"}, rows[0][:4]) - tk.MustExec("analyze table t predicate columns with 2 topn, 2 buckets") - } - - rows := tk.MustQuery("show column_stats_usage where db_name = 'test' and table_name = 't' and last_analyzed_at is not null").Sort().Rows() - require.Equal(t, 6, len(rows)) - require.Equal(t, []interface{}{"test", "t", "global", "a"}, rows[0][:4]) - require.Equal(t, []interface{}{"test", "t", "global", "c"}, rows[1][:4]) - require.Equal(t, []interface{}{"test", "t", "p0", "a"}, rows[2][:4]) - require.Equal(t, []interface{}{"test", "t", "p0", "c"}, rows[3][:4]) - require.Equal(t, []interface{}{"test", "t", "p1", "a"}, rows[4][:4]) - require.Equal(t, []interface{}{"test", "t", "p1", "c"}, rows[5][:4]) - - rows = tk.MustQuery("show stats_meta where db_name = 'test' and table_name = 't'").Sort().Rows() - require.Equal(t, 3, len(rows)) - require.Equal(t, []interface{}{"test", "t", "global", "0", "20"}, append(rows[0][:3], rows[0][4:]...)) - require.Equal(t, []interface{}{"test", "t", "p0", "0", "9"}, append(rows[1][:3], rows[1][4:]...)) - require.Equal(t, []interface{}{"test", "t", "p1", "0", "11"}, append(rows[2][:3], rows[2][4:]...)) - - tk.MustQuery("show stats_topn where db_name = 'test' and table_name = 't' and is_index = 0").Sort().Check( - // db, tbl, part, col, is_idx, value, count - testkit.Rows("test t global a 0 16 4", - "test t global a 0 5 3", - "test t global c 0 1 3", - "test t global c 0 14 3", - "test t p0 a 0 4 2", - "test t p0 a 0 5 3", - "test t p0 c 0 1 3", - "test t p0 c 0 2 2", - "test t p1 a 0 16 4", - "test t p1 a 0 17 2", - "test t p1 c 0 13 2", - "test t p1 c 0 14 3")) - - tk.MustQuery("show stats_topn where db_name = 'test' and table_name = 't' and is_index = 1").Sort().Check( - // db, tbl, part, col, is_idx, value, count - testkit.Rows("test t global idx 1 1 3", - "test t global idx 1 14 3", - "test t p0 idx 1 1 3", - "test t p0 idx 1 2 2", - "test t p1 idx 1 13 2", - "test t p1 idx 1 14 3")) - - tk.MustQuery("show stats_buckets where db_name = 'test' and table_name = 't' and is_index = 0").Sort().Check( - // db, tbl, part, col, is_index, bucket_id, count, repeats, lower, upper, ndv - testkit.Rows("test t global a 0 0 5 2 1 4 0", - "test t global a 0 1 12 2 17 17 0", - "test t global c 0 0 6 1 2 6 0", - "test t global c 0 1 14 2 13 13 0", - "test t p0 a 0 0 2 1 1 2 0", - "test t p0 a 0 1 3 1 3 3 0", - "test t p0 c 0 0 3 1 3 5 0", - "test t p0 c 0 1 4 1 6 6 0", - "test t p1 a 0 0 3 1 11 13 0", - "test t p1 a 0 1 5 1 14 15 0", - "test t p1 c 0 0 4 1 7 10 0", - "test t p1 c 0 1 6 1 11 12 0")) - - tk.MustQuery("show stats_buckets where db_name = 'test' and table_name = 't' and is_index = 1").Sort().Check( - // db, tbl, part, col, is_index, bucket_id, count, repeats, lower, upper, ndv - testkit.Rows("test t global idx 1 0 6 1 2 6 0", - "test t global idx 1 1 14 2 13 13 0", - "test t p0 idx 1 0 3 1 3 5 0", - "test t p0 idx 1 1 4 1 6 6 0", - "test t p1 idx 1 0 4 1 7 10 0", - "test t p1 idx 1 1 6 1 11 12 0")) - - tk.MustQuery("select table_id, is_index, hist_id, distinct_count, null_count, tot_col_size, stats_ver, truncate(correlation,2) from mysql.stats_histograms order by table_id, is_index, hist_id asc").Check( - testkit.Rows(fmt.Sprintf("%d 0 1 12 1 19 2 0", tblID), // global, a - fmt.Sprintf("%d 0 3 14 0 20 2 0", tblID), // global, c - fmt.Sprintf("%d 1 1 14 0 0 2 0", tblID), // global, idx - fmt.Sprintf("%d 0 1 5 1 8 2 1", p0ID), // p0, a - fmt.Sprintf("%d 0 2 0 0 8 0 0", p0ID), // p0, b, not analyzed - fmt.Sprintf("%d 0 3 6 0 9 2 1", p0ID), // p0, c - fmt.Sprintf("%d 1 1 6 0 9 2 0", p0ID), // p0, idx - fmt.Sprintf("%d 0 1 7 0 11 2 1", p1ID), // p1, a - fmt.Sprintf("%d 0 2 0 0 11 0 0", p1ID), // p1, b, not analyzed - fmt.Sprintf("%d 0 3 8 0 11 2 1", p1ID), // p1, c - fmt.Sprintf("%d 1 1 8 0 11 2 0", p1ID), // p1, idx - )) - }(val) - } -} - -func TestIssue34228(t *testing.T) { - store, clean := testkit.CreateMockStore(t) - defer clean() - - tk := testkit.NewTestKit(t, store) - tk.MustExec(`USE test`) - tk.MustExec(`DROP TABLE IF EXISTS Issue34228`) - tk.MustExec(`CREATE TABLE Issue34228 (id bigint NOT NULL, dt datetime NOT NULL) PARTITION BY RANGE COLUMNS(dt) (PARTITION p202201 VALUES LESS THAN ("2022-02-01"), PARTITION p202202 VALUES LESS THAN ("2022-03-01"))`) - tk.MustExec(`INSERT INTO Issue34228 VALUES (1, '2022-02-01 00:00:02'), (2, '2022-02-01 00:00:02')`) - tk.MustExec(`SET @@global.tidb_analyze_version = 1`) - tk.MustExec(`SET @@session.tidb_partition_prune_mode = 'static'`) - tk.MustExec(`ANALYZE TABLE Issue34228`) - tk.MustExec(`SET @@session.tidb_partition_prune_mode = 'dynamic'`) - tk.MustExec(`ANALYZE TABLE Issue34228`) - tk.MustQuery(`SELECT * FROM Issue34228`).Sort().Check(testkit.Rows("1 2022-02-01 00:00:02", "2 2022-02-01 00:00:02")) - // Needs a second run to hit the issue - tk2 := testkit.NewTestKit(t, store) - tk2.MustExec(`USE test`) - tk2.MustExec(`DROP TABLE IF EXISTS Issue34228`) - tk2.MustExec(`CREATE TABLE Issue34228 (id bigint NOT NULL, dt datetime NOT NULL) PARTITION BY RANGE COLUMNS(dt) (PARTITION p202201 VALUES LESS THAN ("2022-02-01"), PARTITION p202202 VALUES LESS THAN ("2022-03-01"))`) - tk2.MustExec(`INSERT INTO Issue34228 VALUES (1, '2022-02-01 00:00:02'), (2, '2022-02-01 00:00:02')`) - tk2.MustExec(`SET @@global.tidb_analyze_version = 1`) - tk2.MustExec(`SET @@session.tidb_partition_prune_mode = 'static'`) - tk2.MustExec(`ANALYZE TABLE Issue34228`) - tk2.MustExec(`SET @@session.tidb_partition_prune_mode = 'dynamic'`) - tk2.MustExec(`ANALYZE TABLE Issue34228`) - tk2.MustQuery(`SELECT * FROM Issue34228`).Sort().Check(testkit.Rows("1 2022-02-01 00:00:02", "2 2022-02-01 00:00:02")) -} - -func TestAnalyzeColumnsWithStaticPartitionTable(t *testing.T) { - for _, val := range []model.ColumnChoice{model.ColumnList, model.PredicateColumns} { - func(choice model.ColumnChoice) { - store, dom, clean := testkit.CreateMockStoreAndDomain(t) - defer clean() - - tk := testkit.NewTestKit(t, store) - h := dom.StatsHandle() - tk.MustExec("use test") - tk.MustExec("drop table if exists t") - tk.MustExec("set @@tidb_analyze_version = 2") - tk.MustExec("set @@tidb_partition_prune_mode = 'static'") - tk.MustExec("create table t (a int, b int, c int, index idx(c)) partition by range (a) (partition p0 values less than (10), partition p1 values less than maxvalue)") - tk.MustExec("insert into t values (1,2,1), (2,4,1), (3,6,1), (4,8,2), (4,8,2), (5,10,3), (5,10,4), (5,10,5), (null,null,6), (11,22,7), (12,24,8), (13,26,9), (14,28,10), (15,30,11), (16,32,12), (16,32,13), (16,32,13), (16,32,14), (17,34,14), (17,34,14)") - require.NoError(t, h.DumpStatsDeltaToKV(handle.DumpAll)) - - is := dom.InfoSchema() - tbl, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) - require.NoError(t, err) - defs := tbl.Meta().Partition.Definitions - p0ID := defs[0].ID - p1ID := defs[1].ID - - switch choice { - case model.ColumnList: - tk.MustExec("analyze table t columns a with 2 topn, 2 buckets") - tk.MustQuery("show warnings").Sort().Check(testkit.Rows( - "Note 1105 Analyze use auto adjusted sample rate 1.000000 for table test.t's partition p0", - "Note 1105 Analyze use auto adjusted sample rate 1.000000 for table test.t's partition p1", - "Warning 1105 Columns c are missing in ANALYZE but their stats are needed for calculating stats for indexes/primary key/extended stats", - )) - case model.PredicateColumns: - originalVal := tk.MustQuery("select @@tidb_enable_column_tracking").Rows()[0][0].(string) - defer func() { - tk.MustExec(fmt.Sprintf("set global tidb_enable_column_tracking = %v", originalVal)) - }() - tk.MustExec("set global tidb_enable_column_tracking = 1") - tk.MustExec("select * from t where a < 1") - require.NoError(t, h.DumpColStatsUsageToKV()) - rows := tk.MustQuery("show column_stats_usage where db_name = 'test' and table_name = 't' and last_used_at is not null").Rows() - require.Equal(t, 1, len(rows)) - require.Equal(t, []interface{}{"test", "t", "global", "a"}, rows[0][:4]) - tk.MustExec("analyze table t predicate columns with 2 topn, 2 buckets") - } - - rows := tk.MustQuery("show column_stats_usage where db_name = 'test' and table_name = 't' and last_analyzed_at is not null").Sort().Rows() - require.Equal(t, 4, len(rows)) - require.Equal(t, []interface{}{"test", "t", "p0", "a"}, rows[0][:4]) - require.Equal(t, []interface{}{"test", "t", "p0", "c"}, rows[1][:4]) - require.Equal(t, []interface{}{"test", "t", "p1", "a"}, rows[2][:4]) - require.Equal(t, []interface{}{"test", "t", "p1", "c"}, rows[3][:4]) - - rows = tk.MustQuery("show stats_meta where db_name = 'test' and table_name = 't'").Sort().Rows() - require.Equal(t, 2, len(rows)) - require.Equal(t, []interface{}{"test", "t", "p0", "0", "9"}, append(rows[0][:3], rows[0][4:]...)) - require.Equal(t, []interface{}{"test", "t", "p1", "0", "11"}, append(rows[1][:3], rows[1][4:]...)) - - tk.MustQuery("show stats_topn where db_name = 'test' and table_name = 't' and is_index = 0").Sort().Check( - // db, tbl, part, col, is_idx, value, count - testkit.Rows("test t p0 a 0 4 2", - "test t p0 a 0 5 3", - "test t p0 c 0 1 3", - "test t p0 c 0 2 2", - "test t p1 a 0 16 4", - "test t p1 a 0 17 2", - "test t p1 c 0 13 2", - "test t p1 c 0 14 3")) - - tk.MustQuery("show stats_topn where db_name = 'test' and table_name = 't' and is_index = 1").Sort().Check( - // db, tbl, part, col, is_idx, value, count - testkit.Rows("test t p0 idx 1 1 3", - "test t p0 idx 1 2 2", - "test t p1 idx 1 13 2", - "test t p1 idx 1 14 3")) - - tk.MustQuery("show stats_buckets where db_name = 'test' and table_name = 't' and is_index = 0").Sort().Check( - // db, tbl, part, col, is_index, bucket_id, count, repeats, lower, upper, ndv - testkit.Rows("test t p0 a 0 0 2 1 1 2 0", - "test t p0 a 0 1 3 1 3 3 0", - "test t p0 c 0 0 3 1 3 5 0", - "test t p0 c 0 1 4 1 6 6 0", - "test t p1 a 0 0 3 1 11 13 0", - "test t p1 a 0 1 5 1 14 15 0", - "test t p1 c 0 0 4 1 7 10 0", - "test t p1 c 0 1 6 1 11 12 0")) - - tk.MustQuery("show stats_buckets where db_name = 'test' and table_name = 't' and is_index = 1").Sort().Check( - // db, tbl, part, col, is_index, bucket_id, count, repeats, lower, upper, ndv - testkit.Rows("test t p0 idx 1 0 3 1 3 5 0", - "test t p0 idx 1 1 4 1 6 6 0", - "test t p1 idx 1 0 4 1 7 10 0", - "test t p1 idx 1 1 6 1 11 12 0")) - - tk.MustQuery("select table_id, is_index, hist_id, distinct_count, null_count, tot_col_size, stats_ver, truncate(correlation,2) from mysql.stats_histograms order by table_id, is_index, hist_id asc").Check( - testkit.Rows(fmt.Sprintf("%d 0 1 5 1 8 2 1", p0ID), // p0, a - fmt.Sprintf("%d 0 2 0 0 8 0 0", p0ID), // p0, b, not analyzed - fmt.Sprintf("%d 0 3 6 0 9 2 1", p0ID), // p0, c - fmt.Sprintf("%d 1 1 6 0 9 2 0", p0ID), // p0, idx - fmt.Sprintf("%d 0 1 7 0 11 2 1", p1ID), // p1, a - fmt.Sprintf("%d 0 2 0 0 11 0 0", p1ID), // p1, b, not analyzed - fmt.Sprintf("%d 0 3 8 0 11 2 1", p1ID), // p1, c - fmt.Sprintf("%d 1 1 8 0 11 2 0", p1ID), // p1, idx - )) - }(val) - } -} - -func TestAnalyzeColumnsWithExtendedStats(t *testing.T) { - for _, val := range []model.ColumnChoice{model.ColumnList, model.PredicateColumns} { - func(choice model.ColumnChoice) { - store, dom, clean := testkit.CreateMockStoreAndDomain(t) - defer clean() - - tk := testkit.NewTestKit(t, store) - h := dom.StatsHandle() - tk.MustExec("use test") - tk.MustExec("drop table if exists t") - tk.MustExec("set @@tidb_analyze_version = 2") - tk.MustExec("set @@tidb_enable_extended_stats = on") - tk.MustExec("create table t (a int, b int, c int)") - tk.MustExec("alter table t add stats_extended s1 correlation(b,c)") - tk.MustExec("insert into t values (5,1,1), (4,2,2), (3,3,3), (2,4,4), (1,5,5)") - require.NoError(t, h.DumpStatsDeltaToKV(handle.DumpAll)) - - is := dom.InfoSchema() - tbl, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) - require.NoError(t, err) - tblID := tbl.Meta().ID - - switch choice { - case model.ColumnList: - tk.MustExec("analyze table t columns b with 2 topn, 2 buckets") - tk.MustQuery("show warnings").Sort().Check(testkit.Rows( - "Note 1105 Analyze use auto adjusted sample rate 1.000000 for table test.t", - "Warning 1105 Columns c are missing in ANALYZE but their stats are needed for calculating stats for indexes/primary key/extended stats", - )) - case model.PredicateColumns: - originalVal := tk.MustQuery("select @@tidb_enable_column_tracking").Rows()[0][0].(string) - defer func() { - tk.MustExec(fmt.Sprintf("set global tidb_enable_column_tracking = %v", originalVal)) - }() - tk.MustExec("set global tidb_enable_column_tracking = 1") - tk.MustExec("select * from t where b > 1") - require.NoError(t, h.DumpColStatsUsageToKV()) - rows := tk.MustQuery("show column_stats_usage where db_name = 'test' and table_name = 't' and last_used_at is not null").Rows() - require.Equal(t, 1, len(rows)) - require.Equal(t, "b", rows[0][3]) - tk.MustExec("analyze table t predicate columns with 2 topn, 2 buckets") - } - rows := tk.MustQuery("show column_stats_usage where db_name = 'test' and table_name = 't' and last_analyzed_at is not null").Sort().Rows() - require.Equal(t, 2, len(rows)) - require.Equal(t, "b", rows[0][3]) - require.Equal(t, "c", rows[1][3]) - - tk.MustQuery(fmt.Sprintf("select modify_count, count from mysql.stats_meta where table_id = %d", tblID)).Sort().Check( - testkit.Rows("0 5")) - tk.MustQuery("show stats_topn where db_name = 'test' and table_name = 't'").Sort().Check( - // db, tbl, part, col, is_idx, value, count - testkit.Rows("test t b 0 1 1", - "test t b 0 2 1", - "test t c 0 1 1", - "test t c 0 2 1")) - tk.MustQuery(fmt.Sprintf("select is_index, hist_id, distinct_count, null_count, tot_col_size, stats_ver, truncate(correlation,2) from mysql.stats_histograms where table_id = %d", tblID)).Sort().Check( - testkit.Rows("0 1 0 0 5 0 0", // column a is not analyzed - "0 2 5 0 5 2 1", - "0 3 5 0 5 2 1", - )) - tk.MustQuery("show stats_buckets where db_name = 'test' and table_name = 't'").Sort().Check( - // db, tbl, part, col, is_index, bucket_id, count, repeats, lower, upper, ndv - testkit.Rows("test t b 0 0 2 1 3 4 0", - "test t b 0 1 3 1 5 5 0", - "test t c 0 0 2 1 3 4 0", - "test t c 0 1 3 1 5 5 0")) - rows = tk.MustQuery("show stats_extended where db_name = 'test' and table_name = 't'").Rows() - require.Equal(t, 1, len(rows)) - require.Equal(t, []interface{}{"test", "t", "s1", "[b,c]", "correlation", "1.000000"}, rows[0][:len(rows[0])-1]) - }(val) - } -} - -func TestAnalyzeColumnsWithVirtualColumnIndex(t *testing.T) { - for _, val := range []model.ColumnChoice{model.ColumnList, model.PredicateColumns} { - func(choice model.ColumnChoice) { - store, dom, clean := testkit.CreateMockStoreAndDomain(t) - defer clean() - - tk := testkit.NewTestKit(t, store) - h := dom.StatsHandle() - tk.MustExec("use test") - tk.MustExec("drop table if exists t") - tk.MustExec("set @@tidb_analyze_version = 2") - tk.MustExec("create table t (a int, b int, c int as (b+1), index idx(c))") - tk.MustExec("insert into t (a,b) values (1,1), (2,2), (3,3), (4,4), (5,4), (6,5), (7,5), (8,5), (null,null)") - require.NoError(t, h.DumpStatsDeltaToKV(handle.DumpAll)) - - is := dom.InfoSchema() - tbl, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) - require.NoError(t, err) - tblID := tbl.Meta().ID - - switch choice { - case model.ColumnList: - tk.MustExec("analyze table t columns b with 2 topn, 2 buckets") - tk.MustQuery("show warnings").Sort().Check(testkit.Rows( - "Note 1105 Analyze use auto adjusted sample rate 1.000000 for table test.t", - "Warning 1105 Columns c are missing in ANALYZE but their stats are needed for calculating stats for indexes/primary key/extended stats", - )) - case model.PredicateColumns: - originalVal := tk.MustQuery("select @@tidb_enable_column_tracking").Rows()[0][0].(string) - defer func() { - tk.MustExec(fmt.Sprintf("set global tidb_enable_column_tracking = %v", originalVal)) - }() - tk.MustExec("set global tidb_enable_column_tracking = 1") - tk.MustExec("select * from t where b > 1") - require.NoError(t, h.DumpColStatsUsageToKV()) - rows := tk.MustQuery("show column_stats_usage where db_name = 'test' and table_name = 't' and last_used_at is not null").Rows() - require.Equal(t, 1, len(rows)) - require.Equal(t, "b", rows[0][3]) - tk.MustExec("analyze table t predicate columns with 2 topn, 2 buckets") - } - // virtual column c is skipped when dumping stats into disk, so only the stats of column b are updated - rows := tk.MustQuery("show column_stats_usage where db_name = 'test' and table_name = 't' and last_analyzed_at is not null").Rows() - require.Equal(t, 1, len(rows)) - require.Equal(t, "b", rows[0][3]) - - tk.MustQuery(fmt.Sprintf("select modify_count, count from mysql.stats_meta where table_id = %d", tblID)).Sort().Check( - testkit.Rows("0 9")) - tk.MustQuery("show stats_topn where db_name = 'test' and table_name = 't'").Sort().Check( - // db, tbl, part, col, is_idx, value, count - testkit.Rows("test t b 0 4 2", - "test t b 0 5 3", - "test t idx 1 5 2", - "test t idx 1 6 3")) - tk.MustQuery(fmt.Sprintf("select is_index, hist_id, distinct_count, null_count, stats_ver, truncate(correlation,2) from mysql.stats_histograms where table_id = %d", tblID)).Sort().Check( - testkit.Rows("0 1 0 0 0 0", // column a is not analyzed - "0 2 5 1 2 1", - "0 3 0 0 0 0", // column c is not analyzed - "1 1 5 1 2 0")) - tk.MustQuery("show stats_buckets where db_name = 'test' and table_name = 't'").Sort().Check( - // db, tbl, part, col, is_index, bucket_id, count, repeats, lower, upper, ndv - testkit.Rows("test t b 0 0 2 1 1 2 0", - "test t b 0 1 3 1 3 3 0", - "test t idx 1 0 2 1 2 3 0", - "test t idx 1 1 3 1 4 4 0")) - }(val) - } -} - -func TestAnalyzeColumnsAfterAnalyzeAll(t *testing.T) { - for _, val := range []model.ColumnChoice{model.ColumnList, model.PredicateColumns} { - func(choice model.ColumnChoice) { - store, dom, clean := testkit.CreateMockStoreAndDomain(t) - defer clean() - - tk := testkit.NewTestKit(t, store) - h := dom.StatsHandle() - tk.MustExec("use test") - tk.MustExec("drop table if exists t") - tk.MustExec("set @@tidb_analyze_version = 2") - tk.MustExec("create table t (a int, b int)") - tk.MustExec("insert into t (a,b) values (1,1), (1,1), (2,2), (2,2), (3,3), (4,4)") - require.NoError(t, h.DumpStatsDeltaToKV(handle.DumpAll)) - - is := dom.InfoSchema() - tbl, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) - require.NoError(t, err) - tblID := tbl.Meta().ID - - tk.MustExec("analyze table t with 2 topn, 2 buckets") - tk.MustQuery(fmt.Sprintf("select modify_count, count from mysql.stats_meta where table_id = %d", tblID)).Sort().Check( - testkit.Rows("0 6")) - tk.MustQuery("show stats_topn where db_name = 'test' and table_name = 't'").Sort().Check( - // db, tbl, part, col, is_idx, value, count - testkit.Rows("test t a 0 1 2", - "test t a 0 2 2", - "test t b 0 1 2", - "test t b 0 2 2")) - tk.MustQuery(fmt.Sprintf("select is_index, hist_id, distinct_count, null_count, tot_col_size, stats_ver, truncate(correlation,2) from mysql.stats_histograms where table_id = %d", tblID)).Sort().Check( - testkit.Rows("0 1 4 0 6 2 1", - "0 2 4 0 6 2 1")) - tk.MustQuery("show stats_buckets where db_name = 'test' and table_name = 't'").Sort().Check( - // db, tbl, part, col, is_index, bucket_id, count, repeats, lower, upper, ndv - testkit.Rows("test t a 0 0 2 1 3 4 0", - "test t b 0 0 2 1 3 4 0")) - - tk.MustExec("insert into t (a,b) values (1,1), (6,6)") - require.NoError(t, h.DumpStatsDeltaToKV(handle.DumpAll)) - - switch choice { - case model.ColumnList: - tk.MustExec("analyze table t columns b with 2 topn, 2 buckets") - case model.PredicateColumns: - originalVal := tk.MustQuery("select @@tidb_enable_column_tracking").Rows()[0][0].(string) - defer func() { - tk.MustExec(fmt.Sprintf("set global tidb_enable_column_tracking = %v", originalVal)) - }() - tk.MustExec("set global tidb_enable_column_tracking = 1") - tk.MustExec("select * from t where b > 1") - require.NoError(t, h.DumpColStatsUsageToKV()) - rows := tk.MustQuery("show column_stats_usage where db_name = 'test' and table_name = 't' and last_used_at is not null").Rows() - require.Equal(t, 1, len(rows)) - require.Equal(t, "b", rows[0][3]) - tk.MustExec("analyze table t predicate columns with 2 topn, 2 buckets") - } - - // Column a is not analyzed in second ANALYZE. We keep the outdated stats of column a rather than delete them. - tk.MustQuery(fmt.Sprintf("select modify_count, count from mysql.stats_meta where table_id = %d", tblID)).Sort().Check( - testkit.Rows("0 8")) - tk.MustQuery("show stats_topn where db_name = 'test' and table_name = 't'").Sort().Check( - // db, tbl, part, col, is_idx, value, count - testkit.Rows("test t a 0 1 2", - "test t a 0 2 2", - "test t b 0 1 3", - "test t b 0 2 2")) - tk.MustQuery(fmt.Sprintf("select is_index, hist_id, distinct_count, null_count, tot_col_size, stats_ver, truncate(correlation,2) from mysql.stats_histograms where table_id = %d", tblID)).Sort().Check( - testkit.Rows("0 1 4 0 8 2 1", // tot_col_size of column a is updated to 8 by DumpStatsDeltaToKV - "0 2 5 0 8 2 0.76")) - tk.MustQuery("show stats_buckets where db_name = 'test' and table_name = 't'").Sort().Check( - // db, tbl, part, col, is_index, bucket_id, count, repeats, lower, upper, ndv - testkit.Rows("test t a 0 0 2 1 3 4 0", - "test t b 0 0 2 1 3 4 0", - "test t b 0 1 3 1 6 6 0")) - tk.MustQuery(fmt.Sprintf("select hist_id from mysql.stats_histograms where version = (select version from mysql.stats_meta where table_id = %d)", tblID)).Check(testkit.Rows("2")) - }(val) - } -} - -func TestAnalyzeColumnsErrorAndWarning(t *testing.T) { - store, dom, clean := testkit.CreateMockStoreAndDomain(t) - defer clean() - - 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)") - - // analyze version 1 doesn't support `ANALYZE COLUMNS c1, ..., cn`/`ANALYZE PREDICATE COLUMNS` currently - tk.MustExec("set @@tidb_analyze_version = 1") - err := tk.ExecToErr("analyze table t columns a") - require.Equal(t, "Only the analyze version 2 supports analyzing the specified columns", err.Error()) - err = tk.ExecToErr("analyze table t predicate columns") - require.Equal(t, "Only the analyze version 2 supports analyzing predicate columns", err.Error()) - - tk.MustExec("set @@tidb_analyze_version = 2") - // invalid column - err = tk.ExecToErr("analyze table t columns c") - terr := errors.Cause(err).(*terror.Error) - require.Equal(t, errors.ErrCode(errno.ErrAnalyzeMissColumn), terr.Code()) - - // If no predicate column is collected, analyze predicate columns gives a warning and falls back to analyze all columns. - tk.MustExec("analyze table t predicate columns") - tk.MustQuery("show warnings").Sort().Check(testkit.Rows( - "Note 1105 Analyze use auto adjusted sample rate 1.000000 for table test.t", - "Warning 1105 No predicate column has been collected yet for table test.t so all columns are analyzed", - )) - rows := tk.MustQuery("show column_stats_usage where db_name = 'test' and table_name = 't' and last_analyzed_at is not null").Rows() - require.Equal(t, 2, len(rows)) - - for _, val := range []model.ColumnChoice{model.ColumnList, model.PredicateColumns} { - func(choice model.ColumnChoice) { - tk.MustExec("set @@tidb_analyze_version = 1") - tk.MustExec("analyze table t") - tk.MustExec("set @@tidb_analyze_version = 2") - switch choice { - case model.ColumnList: - tk.MustExec("analyze table t columns b") - case model.PredicateColumns: - originalVal := tk.MustQuery("select @@tidb_enable_column_tracking").Rows()[0][0].(string) - defer func() { - tk.MustExec(fmt.Sprintf("set global tidb_enable_column_tracking = %v", originalVal)) - }() - tk.MustExec("set global tidb_enable_column_tracking = 1") - tk.MustExec("select * from t where b > 1") - require.NoError(t, dom.StatsHandle().DumpColStatsUsageToKV()) - tk.MustExec("analyze table t predicate columns") - } - tk.MustQuery("show warnings").Sort().Check(testkit.Rows( - "Note 1105 Analyze use auto adjusted sample rate 1.000000 for table test.t", - "Warning 1105 Table test.t has version 1 statistics so all the columns must be analyzed to overwrite the current statistics", - )) - }(val) - } -} - -func TestRecordHistoryStatsAfterAnalyze(t *testing.T) { - store, dom, clean := testkit.CreateMockStoreAndDomain(t) - defer clean() - - tk := testkit.NewTestKit(t, store) - tk.MustExec("set @@tidb_analyze_version = 2") - tk.MustExec("set global tidb_enable_historical_stats = 0") - tk.MustExec("use test") - tk.MustExec("drop table if exists t") - tk.MustExec("create table t(a int, b varchar(10))") - - h := dom.StatsHandle() - is := dom.InfoSchema() - tableInfo, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) - require.NoError(t, err) - - // 1. switch off the tidb_enable_historical_stats, and there is no records in table `mysql.stats_history` - rows := tk.MustQuery(fmt.Sprintf("select count(*) from mysql.stats_history where table_id = '%d'", tableInfo.Meta().ID)).Rows() - num, _ := strconv.Atoi(rows[0][0].(string)) - require.Equal(t, num, 0) - - tk.MustExec("analyze table t with 2 topn") - rows = tk.MustQuery(fmt.Sprintf("select count(*) from mysql.stats_history where table_id = '%d'", tableInfo.Meta().ID)).Rows() - num, _ = strconv.Atoi(rows[0][0].(string)) - require.Equal(t, num, 0) - - // 2. switch on the tidb_enable_historical_stats and do analyze - tk.MustExec("set global tidb_enable_historical_stats = 1") - defer tk.MustExec("set global tidb_enable_historical_stats = 0") - tk.MustExec("analyze table t with 2 topn") - rows = tk.MustQuery(fmt.Sprintf("select count(*) from mysql.stats_history where table_id = '%d'", tableInfo.Meta().ID)).Rows() - num, _ = strconv.Atoi(rows[0][0].(string)) - require.GreaterOrEqual(t, num, 1) - - // 3. dump current stats json - dumpJSONTable, err := h.DumpStatsToJSON("test", tableInfo.Meta(), nil) - require.NoError(t, err) - jsOrigin, _ := json.Marshal(dumpJSONTable) - - // 4. get the historical stats json - rows = tk.MustQuery(fmt.Sprintf("select * from mysql.stats_history where table_id = '%d' and create_time = ("+ - "select create_time from mysql.stats_history where table_id = '%d' order by create_time desc limit 1) "+ - "order by seq_no", tableInfo.Meta().ID, tableInfo.Meta().ID)).Rows() - num = len(rows) - require.GreaterOrEqual(t, num, 1) - data := make([][]byte, num) - for i, row := range rows { - data[i] = []byte(row[1].(string)) - } - jsonTbl, err := handle.BlocksToJSONTable(data) - require.NoError(t, err) - jsCur, err := json.Marshal(jsonTbl) - require.NoError(t, err) - // 5. historical stats must be equal to the current stats - require.JSONEq(t, string(jsOrigin), string(jsCur)) -} - -func TestRecordHistoryStatsMetaAfterAnalyze(t *testing.T) { - store, dom, clean := testkit.CreateMockStoreAndDomain(t) - defer clean() - - tk := testkit.NewTestKit(t, store) - tk.MustExec("set @@tidb_analyze_version = 2") - tk.MustExec("set global tidb_enable_historical_stats = 0") - tk.MustExec("use test") - tk.MustExec("drop table if exists t") - tk.MustExec("create table t(a int, b int)") - tk.MustExec("analyze table test.t") - - h := dom.StatsHandle() - is := dom.InfoSchema() - tableInfo, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) - require.NoError(t, err) - - // 1. switch off the tidb_enable_historical_stats, and there is no record in table `mysql.stats_meta_history` - tk.MustQuery(fmt.Sprintf("select count(*) from mysql.stats_meta_history where table_id = '%d'", tableInfo.Meta().ID)).Check(testkit.Rows("0")) - // insert demo tuples, and there is no record either. - insertNums := 5 - for i := 0; i < insertNums; i++ { - tk.MustExec("insert into test.t (a,b) values (1,1), (2,2), (3,3)") - err := h.DumpStatsDeltaToKV(handle.DumpDelta) - require.NoError(t, err) - } - tk.MustQuery(fmt.Sprintf("select count(*) from mysql.stats_meta_history where table_id = '%d'", tableInfo.Meta().ID)).Check(testkit.Rows("0")) - - // 2. switch on the tidb_enable_historical_stats and insert tuples to produce count/modifyCount delta change. - tk.MustExec("set global tidb_enable_historical_stats = 1") - defer tk.MustExec("set global tidb_enable_historical_stats = 0") - - for i := 0; i < insertNums; i++ { - tk.MustExec("insert into test.t (a,b) values (1,1), (2,2), (3,3)") - err := h.DumpStatsDeltaToKV(handle.DumpDelta) - require.NoError(t, err) - } - tk.MustQuery(fmt.Sprintf("select modify_count, count from mysql.stats_meta_history where table_id = '%d' order by create_time", tableInfo.Meta().ID)).Sort().Check( - testkit.Rows("18 18", "21 21", "24 24", "27 27", "30 30")) -} - -func checkAnalyzeStatus(t *testing.T, tk *testkit.TestKit, jobInfo, status, failReason, comment string, timeLimit int64) { - rows := tk.MustQuery("show analyze status where table_schema = 'test' and table_name = 't' and partition_name = ''").Rows() - require.Equal(t, 1, len(rows), comment) - require.Equal(t, jobInfo, rows[0][3], comment) - require.Equal(t, status, rows[0][7], comment) - require.Equal(t, failReason, rows[0][8], comment) - if timeLimit <= 0 { - return - } - const layout = "2006-01-02 15:04:05" - startTime, err := time.Parse(layout, rows[0][5].(string)) - require.NoError(t, err, comment) - endTime, err := time.Parse(layout, rows[0][6].(string)) - require.NoError(t, err, comment) - require.Less(t, endTime.Sub(startTime), time.Duration(timeLimit)*time.Second, comment) -} - -func testKillAutoAnalyze(t *testing.T, ver int) { - store, dom, clean := testkit.CreateMockStoreAndDomain(t) - defer clean() - tk := testkit.NewTestKit(t, store) - oriStart := tk.MustQuery("select @@tidb_auto_analyze_start_time").Rows()[0][0].(string) - oriEnd := tk.MustQuery("select @@tidb_auto_analyze_end_time").Rows()[0][0].(string) - handle.AutoAnalyzeMinCnt = 0 - defer func() { - handle.AutoAnalyzeMinCnt = 1000 - tk.MustExec(fmt.Sprintf("set global tidb_auto_analyze_start_time='%v'", oriStart)) - tk.MustExec(fmt.Sprintf("set global tidb_auto_analyze_end_time='%v'", oriEnd)) - }() - tk.MustExec(fmt.Sprintf("set @@tidb_analyze_version = %v", ver)) - tk.MustExec("use test") - tk.MustExec("drop table if exists t") - tk.MustExec("create table t (a int, b int)") - tk.MustExec("insert into t values (1,2), (3,4)") - is := dom.InfoSchema() - h := dom.StatsHandle() - require.NoError(t, h.DumpStatsDeltaToKV(handle.DumpAll)) - tk.MustExec("analyze table t") - tk.MustExec("insert into t values (5,6), (7,8), (9, 10)") - require.NoError(t, h.DumpStatsDeltaToKV(handle.DumpAll)) - require.NoError(t, h.Update(is)) - table, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) - require.NoError(t, err) - tableInfo := table.Meta() - lastVersion := h.GetTableStats(tableInfo).Version - tk.MustExec("set global tidb_auto_analyze_start_time='00:00 +0000'") - tk.MustExec("set global tidb_auto_analyze_end_time='23:59 +0000'") - jobInfo := "auto analyze " - if ver == 1 { - jobInfo += "columns" - } else { - jobInfo += "table all columns with 256 buckets, 500 topn, 1 samplerate" - } - // kill auto analyze when it is pending/running/finished - for _, status := range []string{"pending", "running", "finished"} { - func() { - comment := fmt.Sprintf("kill %v analyze job", status) - tk.MustExec("delete from mysql.analyze_jobs") - mockAnalyzeStatus := "github.com/pingcap/tidb/executor/mockKill" + strings.Title(status) - if status == "running" { - mockAnalyzeStatus += "V" + strconv.Itoa(ver) - } - mockAnalyzeStatus += "AnalyzeJob" - require.NoError(t, failpoint.Enable(mockAnalyzeStatus, "return")) - defer func() { - require.NoError(t, failpoint.Disable(mockAnalyzeStatus)) - }() - if status == "pending" || status == "running" { - mockSlowAnalyze := "github.com/pingcap/tidb/executor/mockSlowAnalyzeV" + strconv.Itoa(ver) - require.NoError(t, failpoint.Enable(mockSlowAnalyze, "return")) - defer func() { - require.NoError(t, failpoint.Disable(mockSlowAnalyze)) - }() - } - require.True(t, h.HandleAutoAnalyze(is), comment) - currentVersion := h.GetTableStats(tableInfo).Version - if status == "finished" { - // If we kill a finished job, after kill command the status is still finished and the table stats are updated. - checkAnalyzeStatus(t, tk, jobInfo, "finished", "", comment, -1) - require.Greater(t, currentVersion, lastVersion, comment) - } else { - // If we kill a pending/running job, after kill command the status is failed and the table stats are not updated. - // We expect the killed analyze stops quickly. Specifically, end_time - start_time < 10s. - checkAnalyzeStatus(t, tk, jobInfo, "failed", executor.ErrQueryInterrupted.Error(), comment, 10) - require.Equal(t, currentVersion, lastVersion, comment) - } - }() - } -} - -func TestKillAutoAnalyzeV1(t *testing.T) { - testKillAutoAnalyze(t, 1) -} - -func TestKillAutoAnalyzeV2(t *testing.T) { - testKillAutoAnalyze(t, 2) -} - -func TestKillAutoAnalyzeIndex(t *testing.T) { - store, dom, clean := testkit.CreateMockStoreAndDomain(t) - defer clean() - tk := testkit.NewTestKit(t, store) - oriStart := tk.MustQuery("select @@tidb_auto_analyze_start_time").Rows()[0][0].(string) - oriEnd := tk.MustQuery("select @@tidb_auto_analyze_end_time").Rows()[0][0].(string) - handle.AutoAnalyzeMinCnt = 0 - defer func() { - handle.AutoAnalyzeMinCnt = 1000 - tk.MustExec(fmt.Sprintf("set global tidb_auto_analyze_start_time='%v'", oriStart)) - tk.MustExec(fmt.Sprintf("set global tidb_auto_analyze_end_time='%v'", oriEnd)) - }() - tk.MustExec("set @@tidb_analyze_version = 1") - tk.MustExec("use test") - tk.MustExec("drop table if exists t") - tk.MustExec("create table t (a int, b int)") - tk.MustExec("insert into t values (1,2), (3,4)") - is := dom.InfoSchema() - h := dom.StatsHandle() - require.NoError(t, h.DumpStatsDeltaToKV(handle.DumpAll)) - tk.MustExec("analyze table t") - tk.MustExec("alter table t add index idx(b)") - tbl, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) - require.NoError(t, err) - tblInfo := tbl.Meta() - lastVersion := h.GetTableStats(tblInfo).Version - tk.MustExec("set global tidb_auto_analyze_start_time='00:00 +0000'") - tk.MustExec("set global tidb_auto_analyze_end_time='23:59 +0000'") - const jobInfo = "auto analyze index idx" - // kill auto analyze when it is pending/running/finished - for _, status := range []string{"pending", "running", "finished"} { - func() { - comment := fmt.Sprintf("kill %v analyze job", status) - tk.MustExec("delete from mysql.analyze_jobs") - mockAnalyzeStatus := "github.com/pingcap/tidb/executor/mockKill" + strings.Title(status) - if status == "running" { - mockAnalyzeStatus += "AnalyzeIndexJob" - } else { - mockAnalyzeStatus += "AnalyzeJob" - } - require.NoError(t, failpoint.Enable(mockAnalyzeStatus, "return")) - defer func() { - require.NoError(t, failpoint.Disable(mockAnalyzeStatus)) - }() - if status == "pending" || status == "running" { - require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/executor/mockSlowAnalyzeIndex", "return")) - defer func() { - require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/executor/mockSlowAnalyzeIndex")) - }() - } - require.True(t, h.HandleAutoAnalyze(dom.InfoSchema()), comment) - currentVersion := h.GetTableStats(tblInfo).Version - if status == "finished" { - // If we kill a finished job, after kill command the status is still finished and the index stats are updated. - checkAnalyzeStatus(t, tk, jobInfo, "finished", "", comment, -1) - require.Greater(t, currentVersion, lastVersion, comment) - } else { - // If we kill a pending/running job, after kill command the status is failed and the index stats are not updated. - // We expect the killed analyze stops quickly. Specifically, end_time - start_time < 10s. - checkAnalyzeStatus(t, tk, jobInfo, "failed", executor.ErrQueryInterrupted.Error(), comment, 10) - require.Equal(t, currentVersion, lastVersion, comment) - } - }() - } -} - -func TestAnalyzeJob(t *testing.T) { - store, clean := testkit.CreateMockStore(t) - defer clean() - for _, result := range []string{statistics.AnalyzeFinished, statistics.AnalyzeFailed} { - tk := testkit.NewTestKit(t, store) - tk.MustExec("delete from mysql.analyze_jobs") - se := tk.Session() - job := &statistics.AnalyzeJob{ - DBName: "test", - TableName: "t", - PartitionName: "", - JobInfo: "table all columns with 256 buckets, 500 topn, 1 samplerate", - } - executor.AddNewAnalyzeJob(se, job) - require.NotNil(t, job.ID) - rows := tk.MustQuery("show analyze status").Rows() - require.Len(t, rows, 1) - require.Equal(t, job.DBName, rows[0][0]) - require.Equal(t, job.TableName, rows[0][1]) - require.Equal(t, job.PartitionName, rows[0][2]) - require.Equal(t, job.JobInfo, rows[0][3]) - require.Equal(t, "0", rows[0][4]) - require.Equal(t, "", rows[0][5]) - require.Equal(t, "", rows[0][6]) - require.Equal(t, statistics.AnalyzePending, rows[0][7]) - require.Equal(t, "", rows[0][8]) - serverInfo, err := infosync.GetServerInfo() + for _, idx := range tbl.Indices { + ok, err := checkHistogram(tk.Session().GetSessionVars().StmtCtx, &idx.Histogram) require.NoError(t, err) - addr := fmt.Sprintf("%s:%d", serverInfo.IP, serverInfo.Port) - require.Equal(t, addr, rows[0][9]) - connID := strconv.FormatUint(tk.Session().GetSessionVars().ConnectionID, 10) - require.Equal(t, connID, rows[0][10]) - - executor.StartAnalyzeJob(se, job) - rows = tk.MustQuery("show analyze status").Rows() - checkTime := func(val interface{}) { - str, ok := val.(string) - require.True(t, ok) - _, err := time.Parse("2006-01-02 15:04:05", str) - require.NoError(t, err) - } - checkTime(rows[0][5]) - require.Equal(t, statistics.AnalyzeRunning, rows[0][7]) - - // UpdateAnalyzeJob requires the interval between two updates to mysql.analyze_jobs is more than 5 second. - // Hence we fake last dump time as 10 second ago in order to make update to mysql.analyze_jobs happen. - lastDumpTime := time.Now().Add(-10 * time.Second) - job.Progress.SetLastDumpTime(lastDumpTime) - const smallCount int64 = 100 - executor.UpdateAnalyzeJob(se, job, smallCount) - // Delta count doesn't reach threshold so we don't dump it to mysql.analyze_jobs - require.Equal(t, smallCount, job.Progress.GetDeltaCount()) - require.Equal(t, lastDumpTime, job.Progress.GetLastDumpTime()) - rows = tk.MustQuery("show analyze status").Rows() - require.Equal(t, "0", rows[0][4]) - - const largeCount int64 = 15000000 - executor.UpdateAnalyzeJob(se, job, largeCount) - // Delta count reaches threshold so we dump it to mysql.analyze_jobs and update last dump time. - require.Equal(t, int64(0), job.Progress.GetDeltaCount()) - require.True(t, job.Progress.GetLastDumpTime().After(lastDumpTime)) - lastDumpTime = job.Progress.GetLastDumpTime() - rows = tk.MustQuery("show analyze status").Rows() - require.Equal(t, strconv.FormatInt(smallCount+largeCount, 10), rows[0][4]) - - executor.UpdateAnalyzeJob(se, job, largeCount) - // We have just updated mysql.analyze_jobs in the previous step so we don't update it until 5 second passes or the analyze job is over. - require.Equal(t, largeCount, job.Progress.GetDeltaCount()) - require.Equal(t, lastDumpTime, job.Progress.GetLastDumpTime()) - rows = tk.MustQuery("show analyze status").Rows() - require.Equal(t, strconv.FormatInt(smallCount+largeCount, 10), rows[0][4]) - - var analyzeErr error - if result == statistics.AnalyzeFailed { - analyzeErr = errors.Errorf("analyze meets error") - } - executor.FinishAnalyzeJob(se, job, analyzeErr) - rows = tk.MustQuery("show analyze status").Rows() - require.Equal(t, strconv.FormatInt(smallCount+2*largeCount, 10), rows[0][4]) - checkTime(rows[0][6]) - require.Equal(t, result, rows[0][7]) - if result == statistics.AnalyzeFailed { - require.Equal(t, analyzeErr.Error(), rows[0][8]) - } else { - require.Equal(t, "", rows[0][8]) - } - // process_id is set to NULL after the analyze job is finished/failed. - require.Equal(t, "", rows[0][10]) - } -} - -func TestInsertAnalyzeJobWithLongInstance(t *testing.T) { - store, dom, clean := testkit.CreateMockStoreAndDomain(t) - defer clean() - tk := testkit.NewTestKit(t, store) - tk.MustExec("delete from mysql.analyze_jobs") - job := &statistics.AnalyzeJob{ - DBName: "test", - TableName: "t", - PartitionName: "", - JobInfo: "table all columns with 256 buckets, 500 topn, 1 samplerate", - } - h := dom.StatsHandle() - instance := "xxxtidb-tidb-0.xxxtidb-tidb-peer.xxxx-xx-1234-xxx-123456-1-321.xyz:4000" - require.NoError(t, h.InsertAnalyzeJob(job, instance, 1)) - rows := tk.MustQuery("show analyze status").Rows() - require.Len(t, rows, 1) - require.Equal(t, instance, rows[0][9]) -} - -func TestShowAanalyzeStatusJobInfo(t *testing.T) { - store, dom, clean := testkit.CreateMockStoreAndDomain(t) - defer clean() - tk := testkit.NewTestKit(t, store) - originalVal1 := tk.MustQuery("select @@tidb_persist_analyze_options").Rows()[0][0].(string) - originalVal2 := tk.MustQuery("select @@tidb_enable_column_tracking").Rows()[0][0].(string) - defer func() { - tk.MustExec(fmt.Sprintf("set global tidb_persist_analyze_options = %v", originalVal1)) - tk.MustExec(fmt.Sprintf("set global tidb_enable_column_tracking = %v", originalVal2)) - }() - tk.MustExec("set @@tidb_analyze_version = 2") - tk.MustExec("set global tidb_persist_analyze_options = 0") - tk.MustExec("use test") - tk.MustExec("drop table if exists t") - tk.MustExec("create table t (a int, b int, c int, d int, index idx_b_d(b, d))") - tk.MustExec("insert into t values (1,1,null,1), (2,1,9,1), (1,1,8,1), (2,2,7,2), (1,3,7,3), (2,4,6,4), (1,4,6,5), (2,4,6,5), (1,5,6,5)") - tk.MustExec("analyze table t columns c with 2 topn, 2 buckets") - checkJobInfo := func(expected string) { - rows := tk.MustQuery("show analyze status where table_schema = 'test' and table_name = 't'").Rows() - require.Equal(t, 1, len(rows)) - require.Equal(t, expected, rows[0][3]) - tk.MustExec("delete from mysql.analyze_jobs") + require.True(t, ok) + require.True(t, idx.TopN.Equal(topn)) } - checkJobInfo("analyze table columns b, c, d with 2 buckets, 2 topn, 1 samplerate") - tk.MustExec("set global tidb_enable_column_tracking = 1") - tk.MustExec("select * from t where c > 1") - h := dom.StatsHandle() - require.NoError(t, h.DumpColStatsUsageToKV()) - tk.MustExec("analyze table t predicate columns with 2 topn, 2 buckets") - checkJobInfo("analyze table columns b, c, d with 2 buckets, 2 topn, 1 samplerate") - tk.MustExec("analyze table t") - checkJobInfo("analyze table all columns with 256 buckets, 500 topn, 1 samplerate") - tk.MustExec("set global tidb_persist_analyze_options = 1") - tk.MustExec("analyze table t columns a with 1 topn, 3 buckets") - checkJobInfo("analyze table columns a, b, d with 3 buckets, 1 topn, 1 samplerate") - tk.MustExec("analyze table t") - checkJobInfo("analyze table columns a, b, d with 3 buckets, 1 topn, 1 samplerate") -} - -func TestAnalyzePartitionTableWithDynamicMode(t *testing.T) { - store, dom, clean := testkit.CreateMockStoreAndDomain(t) - defer clean() - tk := testkit.NewTestKit(t, store) - originalVal := tk.MustQuery("select @@tidb_persist_analyze_options").Rows()[0][0].(string) - defer func() { - tk.MustExec(fmt.Sprintf("set global tidb_persist_analyze_options = %v", originalVal)) - }() - tk.MustExec("set global tidb_persist_analyze_options = true") - - tk.MustExec("use test") - tk.MustExec("set @@session.tidb_analyze_version = 2") - tk.MustExec("set @@session.tidb_partition_prune_mode = 'dynamic'") - createTable := `CREATE TABLE t (a int, b int, c varchar(10), d int, primary key(a), index idx(b)) -PARTITION BY RANGE ( a ) ( - PARTITION p0 VALUES LESS THAN (10), - PARTITION p1 VALUES LESS THAN (20) -)` - tk.MustExec(createTable) - tk.MustExec("insert into t values (1,1,1,1),(2,1,2,2),(3,1,3,3),(4,1,4,4),(5,1,5,5),(6,1,6,6),(7,7,7,7),(8,8,8,8),(9,9,9,9)") - tk.MustExec("insert into t values (10,10,10,10),(11,11,11,11),(12,12,12,12),(13,13,13,13),(14,14,14,14)") - h := dom.StatsHandle() - oriLease := h.Lease() - h.SetLease(1) - defer func() { - h.SetLease(oriLease) - }() - is := dom.InfoSchema() - table, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) - require.NoError(t, err) - tableInfo := table.Meta() - pi := tableInfo.GetPartitionInfo() - require.NotNil(t, pi) - - // analyze table only sets table options and gen globalStats - tk.MustExec("analyze table t columns a,c with 1 topn, 3 buckets") - tk.MustQuery("select * from t where b > 1 and c > 1") - require.NoError(t, h.LoadNeededHistograms()) - tbl := h.GetTableStats(tableInfo) - lastVersion := tbl.Version - // both globalStats and partition stats generated and options saved for column a,c - require.Equal(t, 3, len(tbl.Columns[tableInfo.Columns[0].ID].Buckets)) - require.Equal(t, 1, len(tbl.Columns[tableInfo.Columns[0].ID].TopN.TopN)) - require.Equal(t, 3, len(tbl.Columns[tableInfo.Columns[2].ID].Buckets)) - require.Equal(t, 1, len(tbl.Columns[tableInfo.Columns[2].ID].TopN.TopN)) - rs := tk.MustQuery("select buckets,topn from mysql.analyze_options where table_id=" + strconv.FormatInt(pi.Definitions[0].ID, 10)) - require.Equal(t, 0, len(rs.Rows())) - rs = tk.MustQuery("select buckets,topn from mysql.analyze_options where table_id=" + strconv.FormatInt(pi.Definitions[1].ID, 10)) - require.Equal(t, 0, len(rs.Rows())) - rs = tk.MustQuery("select buckets,topn from mysql.analyze_options where table_id=" + strconv.FormatInt(tableInfo.ID, 10)) - require.Equal(t, 1, len(rs.Rows())) - require.Equal(t, "3", rs.Rows()[0][0]) - require.Equal(t, "1", rs.Rows()[0][1]) - - // analyze table with persisted table-level options - tk.MustExec("analyze table t") - tk.MustQuery("select * from t where b > 1 and c > 1") - require.NoError(t, h.LoadNeededHistograms()) - tbl = h.GetTableStats(tableInfo) - require.Greater(t, tbl.Version, lastVersion) - lastVersion = tbl.Version - require.Equal(t, 3, len(tbl.Columns[tableInfo.Columns[0].ID].Buckets)) - require.Equal(t, 1, len(tbl.Columns[tableInfo.Columns[0].ID].TopN.TopN)) - require.Equal(t, 3, len(tbl.Columns[tableInfo.Columns[2].ID].Buckets)) - require.Equal(t, 1, len(tbl.Columns[tableInfo.Columns[2].ID].TopN.TopN)) - rs = tk.MustQuery("select buckets,topn from mysql.analyze_options where table_id=" + strconv.FormatInt(pi.Definitions[0].ID, 10)) - require.Equal(t, 0, len(rs.Rows())) - rs = tk.MustQuery("select buckets,topn from mysql.analyze_options where table_id=" + strconv.FormatInt(pi.Definitions[1].ID, 10)) - require.Equal(t, 0, len(rs.Rows())) - rs = tk.MustQuery("select buckets,topn from mysql.analyze_options where table_id=" + strconv.FormatInt(tableInfo.ID, 10)) - require.Equal(t, 1, len(rs.Rows())) - require.Equal(t, "3", rs.Rows()[0][0]) - require.Equal(t, "1", rs.Rows()[0][1]) - - // analyze table with merged table-level options - tk.MustExec("analyze table t with 2 topn, 2 buckets") - tk.MustQuery("select * from t where b > 1 and c > 1") - require.NoError(t, h.LoadNeededHistograms()) - tbl = h.GetTableStats(tableInfo) - require.Greater(t, tbl.Version, lastVersion) - require.Equal(t, 2, len(tbl.Columns[tableInfo.Columns[0].ID].Buckets)) - require.Equal(t, 2, len(tbl.Columns[tableInfo.Columns[0].ID].TopN.TopN)) - require.Equal(t, 2, len(tbl.Columns[tableInfo.Columns[2].ID].Buckets)) - require.Equal(t, 2, len(tbl.Columns[tableInfo.Columns[2].ID].TopN.TopN)) - rs = tk.MustQuery("select buckets,topn from mysql.analyze_options where table_id=" + strconv.FormatInt(pi.Definitions[0].ID, 10)) - require.Equal(t, 0, len(rs.Rows())) - rs = tk.MustQuery("select buckets,topn from mysql.analyze_options where table_id=" + strconv.FormatInt(pi.Definitions[1].ID, 10)) - require.Equal(t, 0, len(rs.Rows())) - rs = tk.MustQuery("select buckets,topn from mysql.analyze_options where table_id=" + strconv.FormatInt(tableInfo.ID, 10)) - require.Equal(t, 1, len(rs.Rows())) - require.Equal(t, "2", rs.Rows()[0][0]) - require.Equal(t, "2", rs.Rows()[0][1]) -} - -func TestAnalyzePartitionTableStaticToDynamic(t *testing.T) { - store, dom, clean := testkit.CreateMockStoreAndDomain(t) - defer clean() - tk := testkit.NewTestKit(t, store) - originalVal := tk.MustQuery("select @@tidb_persist_analyze_options").Rows()[0][0].(string) - defer func() { - tk.MustExec(fmt.Sprintf("set global tidb_persist_analyze_options = %v", originalVal)) - }() - tk.MustExec("set global tidb_persist_analyze_options = true") - - tk.MustExec("use test") - tk.MustExec("set @@session.tidb_analyze_version = 2") - tk.MustExec("set @@session.tidb_partition_prune_mode = 'static'") - createTable := `CREATE TABLE t (a int, b int, c varchar(10), d int, primary key(a), index idx(b)) -PARTITION BY RANGE ( a ) ( - PARTITION p0 VALUES LESS THAN (10), - PARTITION p1 VALUES LESS THAN (20) -)` - tk.MustExec(createTable) - tk.MustExec("insert into t values (1,1,1,1),(2,1,2,2),(3,1,3,3),(4,1,4,4),(5,1,5,5),(6,1,6,6),(7,7,7,7),(8,8,8,8),(9,9,9,9)") - tk.MustExec("insert into t values (10,10,10,10),(11,11,11,11),(12,12,12,12),(13,13,13,13),(14,14,14,14)") - h := dom.StatsHandle() - oriLease := h.Lease() - h.SetLease(1) - defer func() { - h.SetLease(oriLease) - }() - is := dom.InfoSchema() - table, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) - require.NoError(t, err) - tableInfo := table.Meta() - pi := tableInfo.GetPartitionInfo() - require.NotNil(t, pi) - - // analyze partition under static mode with options - tk.MustExec("analyze table t partition p0 columns a,c with 1 topn, 3 buckets") - tk.MustQuery("select * from t where b > 1 and c > 1") - require.NoError(t, h.LoadNeededHistograms()) - tbl := h.GetTableStats(tableInfo) - p0 := h.GetPartitionStats(tableInfo, pi.Definitions[0].ID) - p1 := h.GetPartitionStats(tableInfo, pi.Definitions[1].ID) - lastVersion := tbl.Version - require.Equal(t, 3, len(p0.Columns[tableInfo.Columns[0].ID].Buckets)) - require.Equal(t, 3, len(p0.Columns[tableInfo.Columns[2].ID].Buckets)) - require.Equal(t, 0, len(p1.Columns[tableInfo.Columns[0].ID].Buckets)) - require.Equal(t, 0, len(tbl.Columns[tableInfo.Columns[0].ID].Buckets)) - rs := tk.MustQuery("select buckets,topn from mysql.analyze_options where table_id=" + strconv.FormatInt(pi.Definitions[0].ID, 10)) - require.Equal(t, 1, len(rs.Rows())) - require.Equal(t, "3", rs.Rows()[0][0]) - require.Equal(t, "1", rs.Rows()[0][1]) - rs = tk.MustQuery("select buckets,topn from mysql.analyze_options where table_id=" + strconv.FormatInt(pi.Definitions[1].ID, 10)) - require.Equal(t, 0, len(rs.Rows())) - // The columns are: table_id, sample_num, sample_rate, buckets, topn, column_choice, column_ids. - rs = tk.MustQuery("select buckets,topn from mysql.analyze_options where table_id=" + strconv.FormatInt(tableInfo.ID, 10)) - require.Equal(t, 1, len(rs.Rows())) - require.Equal(t, "0", rs.Rows()[0][0]) - - tk.MustExec("set @@session.tidb_partition_prune_mode = 'dynamic'") - - // analyze table in dynamic mode will ignore partition-level options and use default - tk.MustExec("analyze table t") - tk.MustQuery("select * from t where b > 1 and c > 1") - require.NoError(t, h.LoadNeededHistograms()) - tbl = h.GetTableStats(tableInfo) - require.Greater(t, tbl.Version, lastVersion) - lastVersion = tbl.Version - p0 = h.GetPartitionStats(tableInfo, pi.Definitions[0].ID) - p1 = h.GetPartitionStats(tableInfo, pi.Definitions[1].ID) - require.NotEqual(t, 3, len(p0.Columns[tableInfo.Columns[0].ID].Buckets)) - require.Equal(t, len(tbl.Columns[tableInfo.Columns[0].ID].Buckets), len(p0.Columns[tableInfo.Columns[0].ID].Buckets)) - require.Equal(t, len(tbl.Columns[tableInfo.Columns[0].ID].Buckets), len(p1.Columns[tableInfo.Columns[0].ID].Buckets)) - rs = tk.MustQuery("select buckets,topn from mysql.analyze_options where table_id=" + strconv.FormatInt(pi.Definitions[0].ID, 10)) - require.Equal(t, 1, len(rs.Rows())) - require.Equal(t, "3", rs.Rows()[0][0]) - require.Equal(t, "1", rs.Rows()[0][1]) - rs = tk.MustQuery("select buckets,topn from mysql.analyze_options where table_id=" + strconv.FormatInt(pi.Definitions[1].ID, 10)) - require.Equal(t, 0, len(rs.Rows())) - rs = tk.MustQuery("select buckets,topn from mysql.analyze_options where table_id=" + strconv.FormatInt(tableInfo.ID, 10)) - require.Equal(t, 1, len(rs.Rows())) - require.Equal(t, "0", rs.Rows()[0][0]) - - // analyze table under dynamic mode with specified options with old partition-level options - tk.MustExec("analyze table t columns b,d with 2 topn, 2 buckets") - tk.MustQuery("select * from t where b > 1 and d > 1") - require.NoError(t, h.LoadNeededHistograms()) - tbl = h.GetTableStats(tableInfo) - require.Greater(t, tbl.Version, lastVersion) - lastVersion = tbl.Version - require.Equal(t, 2, len(tbl.Columns[tableInfo.Columns[1].ID].Buckets)) - require.Equal(t, 2, len(tbl.Columns[tableInfo.Columns[3].ID].Buckets)) - rs = tk.MustQuery("select buckets,topn from mysql.analyze_options where table_id=" + strconv.FormatInt(pi.Definitions[0].ID, 10)) - require.Equal(t, 1, len(rs.Rows())) - require.Equal(t, "3", rs.Rows()[0][0]) - require.Equal(t, "1", rs.Rows()[0][1]) - rs = tk.MustQuery("select buckets,topn from mysql.analyze_options where table_id=" + strconv.FormatInt(pi.Definitions[1].ID, 10)) - require.Equal(t, 0, len(rs.Rows())) - rs = tk.MustQuery("select buckets,topn from mysql.analyze_options where table_id=" + strconv.FormatInt(tableInfo.ID, 10)) - require.Equal(t, 1, len(rs.Rows())) - require.Equal(t, "2", rs.Rows()[0][0]) - require.Equal(t, "2", rs.Rows()[0][1]) - - // analyze table under dynamic mode without options with old table-level & partition-level options - tk.MustExec("analyze table t") - tk.MustQuery("select * from t where b > 1 and d > 1") - require.NoError(t, h.LoadNeededHistograms()) - tbl = h.GetTableStats(tableInfo) - require.Greater(t, tbl.Version, lastVersion) - lastVersion = tbl.Version - require.Equal(t, 2, len(tbl.Columns[tableInfo.Columns[3].ID].Buckets)) - require.Equal(t, 2, len(tbl.Columns[tableInfo.Columns[3].ID].TopN.TopN)) - - // analyze table under dynamic mode with specified options with old table-level & partition-level options - tk.MustExec("analyze table t with 1 topn") - tk.MustQuery("select * from t where b > 1 and d > 1") - require.NoError(t, h.LoadNeededHistograms()) - tbl = h.GetTableStats(tableInfo) - require.Greater(t, tbl.Version, lastVersion) - require.Equal(t, 2, len(tbl.Columns[tableInfo.Columns[1].ID].Buckets)) - require.Equal(t, 2, len(tbl.Columns[tableInfo.Columns[3].ID].Buckets)) - require.Equal(t, 1, len(tbl.Columns[tableInfo.Columns[1].ID].TopN.TopN)) - require.Equal(t, 1, len(tbl.Columns[tableInfo.Columns[3].ID].TopN.TopN)) - rs = tk.MustQuery("select buckets,topn from mysql.analyze_options where table_id=" + strconv.FormatInt(pi.Definitions[0].ID, 10)) - require.Equal(t, 1, len(rs.Rows())) - require.Equal(t, "3", rs.Rows()[0][0]) - require.Equal(t, "1", rs.Rows()[0][1]) - rs = tk.MustQuery("select buckets,topn from mysql.analyze_options where table_id=" + strconv.FormatInt(pi.Definitions[1].ID, 10)) - require.Equal(t, 0, len(rs.Rows())) - rs = tk.MustQuery("select buckets,topn from mysql.analyze_options where table_id=" + strconv.FormatInt(tableInfo.ID, 10)) - require.Equal(t, 1, len(rs.Rows())) - require.Equal(t, "2", rs.Rows()[0][0]) - require.Equal(t, "1", rs.Rows()[0][1]) -} - -func TestAnalyzePartitionUnderDynamic(t *testing.T) { - store, dom, clean := testkit.CreateMockStoreAndDomain(t) - defer clean() - tk := testkit.NewTestKit(t, store) - originalVal := tk.MustQuery("select @@tidb_persist_analyze_options").Rows()[0][0].(string) - defer func() { - tk.MustExec(fmt.Sprintf("set global tidb_persist_analyze_options = %v", originalVal)) - }() - tk.MustExec("set global tidb_persist_analyze_options = true") - - tk.MustExec("use test") - tk.MustExec("set @@session.tidb_analyze_version = 2") - tk.MustExec("set @@session.tidb_partition_prune_mode = 'dynamic'") - createTable := `CREATE TABLE t (a int, b int, c varchar(10), d int, primary key(a), index idx(b)) -PARTITION BY RANGE ( a ) ( - PARTITION p0 VALUES LESS THAN (10), - PARTITION p1 VALUES LESS THAN (20) -)` - tk.MustExec(createTable) - tk.MustExec("insert into t values (1,1,1,1),(2,1,2,2),(3,1,3,3),(4,1,4,4),(5,1,5,5),(6,1,6,6),(7,7,7,7),(8,8,8,8),(9,9,9,9)") - tk.MustExec("insert into t values (10,10,10,10),(11,11,11,11),(12,12,12,12),(13,13,13,13),(14,14,14,14)") - h := dom.StatsHandle() - oriLease := h.Lease() - h.SetLease(1) - defer func() { - h.SetLease(oriLease) - }() - is := dom.InfoSchema() - table, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) - require.NoError(t, err) - tableInfo := table.Meta() - pi := tableInfo.GetPartitionInfo() - require.NotNil(t, pi) - - // analyze partition with options under dynamic mode - tk.MustExec("analyze table t partition p0 columns a,b,c with 1 topn, 3 buckets") - tk.MustQuery("show warnings").Sort().Check(testkit.Rows( - "Note 1105 Analyze use auto adjusted sample rate 1.000000 for table test.t's partition p0", - "Warning 1105 Ignore columns and options when analyze partition in dynamic mode", - "Warning 8131 Build table: `t` global-level stats failed due to missing partition-level stats", - "Warning 8131 Build table: `t` index: `idx` global-level stats failed due to missing partition-level stats", - )) - tk.MustQuery("select * from t where a > 1 and b > 1 and c > 1 and d > 1") - require.NoError(t, h.LoadNeededHistograms()) - tbl := h.GetTableStats(tableInfo) - lastVersion := tbl.Version - require.NotEqual(t, 3, len(tbl.Columns[tableInfo.Columns[2].ID].Buckets)) - require.NotEqual(t, 3, len(tbl.Columns[tableInfo.Columns[3].ID].Buckets)) - - tk.MustExec("analyze table t partition p0") - tk.MustQuery("show warnings").Sort().Check(testkit.Rows( - "Note 1105 Analyze use auto adjusted sample rate 1.000000 for table test.t's partition p0", - "Warning 8131 Build table: `t` global-level stats failed due to missing partition-level stats", - "Warning 8131 Build table: `t` index: `idx` global-level stats failed due to missing partition-level stats", - )) - tbl = h.GetTableStats(tableInfo) - require.Equal(t, tbl.Version, lastVersion) // global stats not updated -} - -func TestAnalyzePartitionStaticToDynamic(t *testing.T) { - store, dom, clean := testkit.CreateMockStoreAndDomain(t) - defer clean() - tk := testkit.NewTestKit(t, store) - originalVal := tk.MustQuery("select @@tidb_persist_analyze_options").Rows()[0][0].(string) - defer func() { - tk.MustExec(fmt.Sprintf("set global tidb_persist_analyze_options = %v", originalVal)) - }() - - tk.MustExec("use test") - tk.MustExec("set @@session.tidb_analyze_version = 2") - createTable := `CREATE TABLE t (a int, b int, c varchar(10), d int, primary key(a), index idx(b)) -PARTITION BY RANGE ( a ) ( - PARTITION p0 VALUES LESS THAN (10), - PARTITION p1 VALUES LESS THAN (20) -)` - tk.MustExec(createTable) - tk.MustExec("insert into t values (1,1,1,1),(2,1,2,2),(3,1,3,3),(4,1,4,4),(5,1,5,5),(6,1,6,6),(7,7,7,7),(8,8,8,8),(9,9,9,9)") - tk.MustExec("insert into t values (10,10,10,10),(11,11,11,11),(12,12,12,12),(13,13,13,13),(14,14,14,14)") - h := dom.StatsHandle() - oriLease := h.Lease() - h.SetLease(1) - defer func() { - h.SetLease(oriLease) - }() - is := dom.InfoSchema() - table, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) - require.NoError(t, err) - tableInfo := table.Meta() - pi := tableInfo.GetPartitionInfo() - require.NotNil(t, pi) - - // generate old partition stats - tk.MustExec("set global tidb_persist_analyze_options = false") - tk.MustExec("set @@session.tidb_partition_prune_mode = 'static'") - tk.MustExec("analyze table t partition p0 columns a,c with 1 topn, 3 buckets") - tk.MustQuery("select * from t where a > 1 and b > 1 and c > 1 and d > 1") - require.NoError(t, h.LoadNeededHistograms()) - p0 := h.GetPartitionStats(tableInfo, pi.Definitions[0].ID) - require.Equal(t, 3, len(p0.Columns[tableInfo.Columns[2].ID].Buckets)) - - // analyze partition with existing stats of other partitions under dynamic - tk.MustExec("set @@session.tidb_partition_prune_mode = 'dynamic'") - tk.MustExec("analyze table t partition p1 columns a,b,d with 1 topn, 3 buckets") - tk.MustQuery("show warnings").Sort().Check(testkit.Rows( - "Note 1105 Analyze use auto adjusted sample rate 1.000000 for table test.t's partition p1", - "Warning 8244 Build table: `t` column: `d` global-level stats failed due to missing partition-level column stats, please run analyze table to refresh columns of all partitions", - )) - - // analyze partition with existing table-level options and existing partition stats under dynamic - tk.MustExec("insert into mysql.analyze_options values (?,?,?,?,?,?,?)", tableInfo.ID, 0, 0, 2, 2, "DEFAULT", "") - tk.MustExec("set global tidb_persist_analyze_options = true") - tk.MustExec("analyze table t partition p1 columns a,b,d with 1 topn, 3 buckets") - tk.MustQuery("show warnings").Sort().Check(testkit.Rows( - "Note 1105 Analyze use auto adjusted sample rate 1.000000 for table test.t's partition p1", - "Warning 1105 Ignore columns and options when analyze partition in dynamic mode", - "Warning 8244 Build table: `t` column: `d` global-level stats failed due to missing partition-level column stats, please run analyze table to refresh columns of all partitions", - )) - - // analyze partition with existing table-level & partition-level options and existing partition stats under dynamic - tk.MustExec("insert into mysql.analyze_options values (?,?,?,?,?,?,?)", pi.Definitions[1].ID, 0, 0, 1, 1, "DEFAULT", "") - tk.MustExec("analyze table t partition p1 columns a,b,d with 1 topn, 3 buckets") - tk.MustQuery("show warnings").Sort().Check(testkit.Rows( - "Note 1105 Analyze use auto adjusted sample rate 1.000000 for table test.t's partition p1", - "Warning 1105 Ignore columns and options when analyze partition in dynamic mode", - "Warning 8244 Build table: `t` column: `d` global-level stats failed due to missing partition-level column stats, please run analyze table to refresh columns of all partitions", - )) - tk.MustQuery("select * from t where a > 1 and b > 1 and c > 1 and d > 1") - require.NoError(t, h.LoadNeededHistograms()) - tbl := h.GetTableStats(tableInfo) - require.Equal(t, 0, len(tbl.Columns)) - - // ignore both p0's 3 buckets, persisted-partition-options' 1 bucket, just use table-level 2 buckets - tk.MustExec("analyze table t partition p0") - tk.MustQuery("select * from t where a > 1 and b > 1 and c > 1 and d > 1") - require.NoError(t, h.LoadNeededHistograms()) - tbl = h.GetTableStats(tableInfo) - require.Equal(t, 2, len(tbl.Columns[tableInfo.Columns[2].ID].Buckets)) -} - -func TestAnalyzePartitionUnderV1Dynamic(t *testing.T) { - store, dom, clean := testkit.CreateMockStoreAndDomain(t) - defer clean() - tk := testkit.NewTestKit(t, store) - originalVal := tk.MustQuery("select @@tidb_persist_analyze_options").Rows()[0][0].(string) - defer func() { - tk.MustExec(fmt.Sprintf("set global tidb_persist_analyze_options = %v", originalVal)) - }() - - tk.MustExec("use test") - tk.MustExec("set @@session.tidb_analyze_version = 1") - tk.MustExec("set @@session.tidb_partition_prune_mode = 'dynamic'") - createTable := `CREATE TABLE t (a int, b int, c varchar(10), d int, primary key(a), index idx(b)) -PARTITION BY RANGE ( a ) ( - PARTITION p0 VALUES LESS THAN (10), - PARTITION p1 VALUES LESS THAN (20) -)` - tk.MustExec(createTable) - tk.MustExec("insert into t values (1,1,1,1),(2,1,2,2),(3,1,3,3),(4,1,4,4),(5,1,5,5),(6,1,6,6),(7,7,7,7),(8,8,8,8),(9,9,9,9)") - tk.MustExec("insert into t values (10,10,10,10),(11,11,11,11),(12,12,12,12),(13,13,13,13),(14,14,14,14)") - h := dom.StatsHandle() - oriLease := h.Lease() - h.SetLease(1) - defer func() { - h.SetLease(oriLease) - }() - is := dom.InfoSchema() - table, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) - require.NoError(t, err) - tableInfo := table.Meta() - pi := tableInfo.GetPartitionInfo() - require.NotNil(t, pi) - - // analyze partition with index and with options are allowed under dynamic V1 - tk.MustExec("analyze table t partition p0 with 1 topn, 3 buckets") - tk.MustQuery("show warnings").Sort().Check(testkit.Rows( - "Warning 8131 Build table: `t` global-level stats failed due to missing partition-level stats", - "Warning 8131 Build table: `t` index: `idx` global-level stats failed due to missing partition-level stats", - )) - tk.MustExec("analyze table t partition p1 with 1 topn, 3 buckets") - tk.MustQuery("show warnings").Sort().Check(testkit.Rows()) - tk.MustQuery("select * from t where a > 1 and b > 1 and c > 1 and d > 1") - require.NoError(t, h.LoadNeededHistograms()) - tbl := h.GetTableStats(tableInfo) - lastVersion := tbl.Version - require.Equal(t, 3, len(tbl.Columns[tableInfo.Columns[2].ID].Buckets)) - require.Equal(t, 3, len(tbl.Columns[tableInfo.Columns[3].ID].Buckets)) - - tk.MustExec("analyze table t partition p1 index idx with 1 topn, 2 buckets") - tk.MustQuery("show warnings").Sort().Check(testkit.Rows()) - tbl = h.GetTableStats(tableInfo) - require.Greater(t, tbl.Version, lastVersion) - require.Equal(t, 2, len(tbl.Indices[tableInfo.Indices[0].ID].Buckets)) -} - -func TestIssue35056(t *testing.T) { - store, dom, clean := testkit.CreateMockStoreAndDomain(t) - defer clean() - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("set @@session.tidb_analyze_version = 1") - createTable := `CREATE TABLE t (id int, a int, b varchar(10)) -PARTITION BY RANGE ( id ) ( - PARTITION p0 VALUES LESS THAN (10), - PARTITION p1 VALUES LESS THAN (20) -)` - tk.MustExec(createTable) - tk.MustExec("set @@session.tidb_partition_prune_mode = 'static'") - tk.MustExec("insert into t values (1,1,1),(2,2,2),(3,3,3),(4,4,4),(7,7,7),(9,9,9)") - tk.MustExec("insert into t values (11,11,11),(12,12,12),(14,14,14)") - h := dom.StatsHandle() - oriLease := h.Lease() - h.SetLease(1) - defer func() { - h.SetLease(oriLease) - }() - is := dom.InfoSchema() - h.HandleAutoAnalyze(is) - tk.MustExec("create index idxa on t (a)") - tk.MustExec("create index idxb on t (b)") - table, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) - require.NoError(t, err) - tableInfo := table.Meta() - pi := tableInfo.GetPartitionInfo() - require.NotNil(t, pi) - tk.MustExec("analyze table t partition p0 index idxa") - tk.MustExec("analyze table t partition p1 index idxb") - tk.MustExec("set @@session.tidb_partition_prune_mode = 'dynamic'") - tk.MustExec("analyze table t partition p0") // no panic -} - -func TestIssue35056Related(t *testing.T) { - store, dom, clean := testkit.CreateMockStoreAndDomain(t) - defer clean() - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("set @@session.tidb_analyze_version = 2") - createTable := `CREATE TABLE t (id int) -PARTITION BY RANGE ( id ) ( - PARTITION p0 VALUES LESS THAN (10), - PARTITION p1 VALUES LESS THAN (20) -)` - tk.MustExec(createTable) - tk.MustExec("set @@session.tidb_partition_prune_mode = 'static'") - tk.MustExec("insert into t values (1),(2),(3),(4),(7),(9)") - tk.MustExec("insert into t values (11),(12),(14)") - h := dom.StatsHandle() - oriLease := h.Lease() - h.SetLease(1) - defer func() { - h.SetLease(oriLease) - }() - is := dom.InfoSchema() - h.HandleAutoAnalyze(is) - tk.MustExec("alter table t add column a int") - tk.MustExec("alter table t add column b int") - table, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) - require.NoError(t, err) - tableInfo := table.Meta() - pi := tableInfo.GetPartitionInfo() - require.NotNil(t, pi) - tk.MustExec("analyze table t partition p0 columns id,a") - tk.MustExec("analyze table t partition p1 columns id,b") - tk.MustExec("set @@session.tidb_partition_prune_mode = 'dynamic'") - tk.MustExec("analyze table t partition p0") // no panic -} - -func TestIssue35044(t *testing.T) { - store, dom, clean := testkit.CreateMockStoreAndDomain(t) - defer clean() - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("set @@session.tidb_analyze_version = 2") - tk.MustExec("set @@session.tidb_partition_prune_mode = 'static'") - createTable := `CREATE TABLE t (a int) -PARTITION BY RANGE ( a ) ( - PARTITION p0 VALUES LESS THAN (10), - PARTITION p1 VALUES LESS THAN (20) -)` - tk.MustExec(createTable) - tk.MustExec("insert into t values (1),(2),(3)") - tk.MustExec("insert into t values (11),(12),(14)") - h := dom.StatsHandle() - oriLease := h.Lease() - h.SetLease(1) - defer func() { - h.SetLease(oriLease) - }() - is := dom.InfoSchema() - table, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) - require.NoError(t, err) - tableInfo := table.Meta() - pi := tableInfo.GetPartitionInfo() - require.NotNil(t, pi) - tk.MustExec("analyze table t partition p0 columns a") - tk.MustExec("analyze table t partition p1 columns a") - tk.MustExec("set @@session.tidb_partition_prune_mode = 'dynamic'") - tk.MustExec("analyze table t partition p0") - tbl := h.GetTableStats(tableInfo) - require.Equal(t, int64(6), tbl.Columns[tableInfo.Columns[0].ID].Histogram.NDV) } diff --git a/executor/analyze_utils.go b/executor/analyze_utils.go new file mode 100644 index 0000000000000..795dd8c990ef0 --- /dev/null +++ b/executor/analyze_utils.go @@ -0,0 +1,121 @@ +// 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 executor + +import ( + "strconv" + "sync" + + "github.com/pingcap/errors" + "github.com/pingcap/tidb/config" + "github.com/pingcap/tidb/sessionctx" + "github.com/pingcap/tidb/sessionctx/variable" + "github.com/pingcap/tidb/statistics" + "go.uber.org/atomic" +) + +func getBuildStatsConcurrency(ctx sessionctx.Context) (int, error) { + sessionVars := ctx.GetSessionVars() + concurrency, err := variable.GetSessionOrGlobalSystemVar(sessionVars, variable.TiDBBuildStatsConcurrency) + if err != nil { + return 0, err + } + c, err := strconv.ParseInt(concurrency, 10, 64) + return int(c), err +} + +var errAnalyzeWorkerPanic = errors.New("analyze worker panic") +var errAnalyzeOOM = errors.Errorf("analyze panic due to memory quota exceeds, please try with smaller samplerate(refer to %d/count)", config.DefRowsForSampleRate) + +func isAnalyzeWorkerPanic(err error) bool { + return err == errAnalyzeWorkerPanic || err == errAnalyzeOOM +} + +func getAnalyzePanicErr(r interface{}) error { + if msg, ok := r.(string); ok && msg == globalPanicAnalyzeMemoryExceed { + return errAnalyzeOOM + } + if err, ok := r.(error); ok { + if err.Error() == globalPanicAnalyzeMemoryExceed { + return errAnalyzeOOM + } + return err + } + return errAnalyzeWorkerPanic +} + +// analyzeResultsNotifyWaitGroupWrapper is a wrapper for sync.WaitGroup +// Please add all goroutine count when to `Add` to avoid exiting in advance. +type analyzeResultsNotifyWaitGroupWrapper struct { + sync.WaitGroup + notify chan *statistics.AnalyzeResults + cnt atomic.Uint64 +} + +// NewAnalyzeResultsNotifyWaitGroupWrapper is to create analyzeResultsNotifyWaitGroupWrapper +func NewAnalyzeResultsNotifyWaitGroupWrapper(notify chan *statistics.AnalyzeResults) *analyzeResultsNotifyWaitGroupWrapper { + return &analyzeResultsNotifyWaitGroupWrapper{ + notify: notify, + cnt: *atomic.NewUint64(0), + } +} + +// Run runs a function in a goroutine and calls done when function returns. +// Please DO NOT use panic in the cb function. +func (w *analyzeResultsNotifyWaitGroupWrapper) Run(exec func()) { + old := w.cnt.Inc() - 1 + go func(cnt uint64) { + defer func() { + w.Done() + if cnt == 0 { + w.Wait() + close(w.notify) + } + }() + exec() + }(old) +} + +// notifyErrorWaitGroupWrapper is a wrapper for sync.WaitGroup +// Please add all goroutine count when to `Add` to avoid exiting in advance. +type notifyErrorWaitGroupWrapper struct { + sync.WaitGroup + notify chan error + cnt atomic.Uint64 +} + +// newNotifyErrorWaitGroupWrapper is to create notifyErrorWaitGroupWrapper +func newNotifyErrorWaitGroupWrapper(notify chan error) *notifyErrorWaitGroupWrapper { + return ¬ifyErrorWaitGroupWrapper{ + notify: notify, + cnt: *atomic.NewUint64(0), + } +} + +// Run runs a function in a goroutine and calls done when function returns. +// Please DO NOT use panic in the cb function. +func (w *notifyErrorWaitGroupWrapper) Run(exec func()) { + old := w.cnt.Inc() - 1 + go func(cnt uint64) { + defer func() { + w.Done() + if cnt == 0 { + w.Wait() + close(w.notify) + } + }() + exec() + }(old) +} diff --git a/executor/analyzetest/BUILD.bazel b/executor/analyzetest/BUILD.bazel new file mode 100644 index 0000000000000..d496753a9c7b9 --- /dev/null +++ b/executor/analyzetest/BUILD.bazel @@ -0,0 +1,39 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_test") + +go_test( + name = "analyzetest_test", + srcs = [ + "analyze_test.go", + "main_test.go", + ], + flaky = True, + shard_count = 50, + deps = [ + "//domain", + "//domain/infosync", + "//errno", + "//executor", + "//infoschema", + "//kv", + "//parser/model", + "//parser/mysql", + "//parser/terror", + "//planner/core", + "//session", + "//sessionctx", + "//sessionctx/variable", + "//statistics", + "//statistics/handle", + "//store/mockstore", + "//tablecodec", + "//testkit", + "//types", + "//util/codec", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_stretchr_testify//require", + "@com_github_tikv_client_go_v2//testutils", + "@com_github_tikv_client_go_v2//tikv", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/executor/analyzetest/analyze_test.go b/executor/analyzetest/analyze_test.go new file mode 100644 index 0000000000000..b37376132ec5b --- /dev/null +++ b/executor/analyzetest/analyze_test.go @@ -0,0 +1,3091 @@ +// 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 analyzetest + +import ( + "encoding/json" + "fmt" + "strconv" + "strings" + "testing" + "time" + + "github.com/pingcap/errors" + "github.com/pingcap/failpoint" + "github.com/pingcap/tidb/domain" + "github.com/pingcap/tidb/domain/infosync" + "github.com/pingcap/tidb/errno" + "github.com/pingcap/tidb/executor" + "github.com/pingcap/tidb/infoschema" + "github.com/pingcap/tidb/kv" + "github.com/pingcap/tidb/parser/model" + "github.com/pingcap/tidb/parser/mysql" + "github.com/pingcap/tidb/parser/terror" + "github.com/pingcap/tidb/planner/core" + "github.com/pingcap/tidb/session" + "github.com/pingcap/tidb/sessionctx" + "github.com/pingcap/tidb/sessionctx/variable" + "github.com/pingcap/tidb/statistics" + "github.com/pingcap/tidb/statistics/handle" + "github.com/pingcap/tidb/store/mockstore" + "github.com/pingcap/tidb/tablecodec" + "github.com/pingcap/tidb/testkit" + "github.com/pingcap/tidb/types" + "github.com/pingcap/tidb/util/codec" + "github.com/stretchr/testify/require" + "github.com/tikv/client-go/v2/testutils" + "github.com/tikv/client-go/v2/tikv" +) + +func TestAnalyzePartition(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + tk := testkit.NewTestKit(t, store) + testkit.WithPruneMode(tk, variable.Static, func() { + tk.MustExec("use test") + tk.MustExec("drop table if exists t") + tk.MustExec("set @@tidb_analyze_version=2") + createTable := `CREATE TABLE t (a int, b int, c varchar(10), primary key(a), index idx(b)) +PARTITION BY RANGE ( a ) ( + 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(createTable) + for i := 1; i < 21; i++ { + tk.MustExec(fmt.Sprintf(`insert into t values (%d, %d, "hello")`, i, i)) + } + tk.MustExec("analyze table t") + + is := tk.Session().(sessionctx.Context).GetInfoSchema().(infoschema.InfoSchema) + table, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) + require.NoError(t, err) + pi := table.Meta().GetPartitionInfo() + require.NotNil(t, pi) + do, err := session.GetDomain(store) + require.NoError(t, err) + handle := do.StatsHandle() + for _, def := range pi.Definitions { + statsTbl := handle.GetPartitionStats(table.Meta(), def.ID) + require.False(t, statsTbl.Pseudo) + require.Len(t, statsTbl.Columns, 3) + require.Len(t, statsTbl.Indices, 1) + for _, col := range statsTbl.Columns { + require.Greater(t, col.Len()+col.Num(), 0) + } + for _, idx := range statsTbl.Indices { + require.Greater(t, idx.Len()+idx.Num(), 0) + } + } + + tk.MustExec("drop table t") + tk.MustExec(createTable) + for i := 1; i < 21; i++ { + tk.MustExec(fmt.Sprintf(`insert into t values (%d, %d, "hello")`, i, i)) + } + tk.MustExec("alter table t analyze partition p0") + is = tk.Session().(sessionctx.Context).GetInfoSchema().(infoschema.InfoSchema) + table, err = is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) + require.NoError(t, err) + pi = table.Meta().GetPartitionInfo() + require.NotNil(t, pi) + + for i, def := range pi.Definitions { + statsTbl := handle.GetPartitionStats(table.Meta(), def.ID) + if i == 0 { + require.False(t, statsTbl.Pseudo) + require.Len(t, statsTbl.Columns, 3) + require.Len(t, statsTbl.Indices, 1) + } else { + require.True(t, statsTbl.Pseudo) + } + } + }) +} + +func TestAnalyzeReplicaReadFollower(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + tk := testkit.NewTestKit(t, store) + + tk.MustExec("use test") + tk.MustExec("drop table if exists t") + tk.MustExec("create table t(a int)") + ctx := tk.Session().(sessionctx.Context) + ctx.GetSessionVars().SetReplicaRead(kv.ReplicaReadFollower) + tk.MustExec("analyze table t") +} + +func TestClusterIndexAnalyze(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + tk := testkit.NewTestKit(t, store) + + tk.MustExec("drop database if exists test_cluster_index_analyze;") + tk.MustExec("create database test_cluster_index_analyze;") + tk.MustExec("use test_cluster_index_analyze;") + tk.Session().GetSessionVars().EnableClusteredIndex = variable.ClusteredIndexDefModeOn + + tk.MustExec("create table t (a int, b int, c int, primary key(a, b));") + for i := 0; i < 100; i++ { + tk.MustExec("insert into t values (?, ?, ?)", i, i, i) + } + tk.MustExec("analyze table t;") + tk.MustExec("drop table t;") + + tk.MustExec("create table t (a varchar(255), b int, c float, primary key(c, a));") + for i := 0; i < 100; i++ { + tk.MustExec("insert into t values (?, ?, ?)", strconv.Itoa(i), i, i) + } + tk.MustExec("analyze table t;") + tk.MustExec("drop table t;") + + tk.MustExec("create table t (a char(10), b decimal(5, 3), c int, primary key(a, c, b));") + for i := 0; i < 100; i++ { + tk.MustExec("insert into t values (?, ?, ?)", strconv.Itoa(i), i, i) + } + tk.MustExec("analyze table t;") + tk.MustExec("drop table t;") +} + +func TestAnalyzeRestrict(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + tk := testkit.NewTestKit(t, store) + + tk.MustExec("use test") + tk.MustExec("drop table if exists t") + tk.MustExec("create table t(a int)") + ctx := tk.Session().(sessionctx.Context) + ctx.GetSessionVars().InRestrictedSQL = true + tk.MustExec("analyze table t") +} + +func TestAnalyzeParameters(t *testing.T) { + store, dom, clean := testkit.CreateMockStoreAndDomain(t) + defer clean() + + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("drop table if exists t") + tk.MustExec("create table t(a int)") + for i := 0; i < 20; i++ { + tk.MustExec(fmt.Sprintf("insert into t values (%d)", i)) + } + tk.MustExec("insert into t values (19), (19), (19)") + + tk.MustExec("set @@tidb_enable_fast_analyze = 1") + tk.MustExec("set @@tidb_analyze_version = 1") + tk.MustExec("analyze table t with 30 samples") + is := tk.Session().(sessionctx.Context).GetInfoSchema().(infoschema.InfoSchema) + table, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) + require.NoError(t, err) + tableInfo := table.Meta() + tbl := dom.StatsHandle().GetTableStats(tableInfo) + col := tbl.Columns[1] + require.Equal(t, 20, col.Len()) + require.Len(t, col.TopN.TopN, 1) + width, depth := col.CMSketch.GetWidthAndDepth() + require.Equal(t, int32(5), depth) + require.Equal(t, int32(2048), width) + + tk.MustExec("analyze table t with 4 buckets, 0 topn, 4 cmsketch width, 4 cmsketch depth") + tbl = dom.StatsHandle().GetTableStats(tableInfo) + col = tbl.Columns[1] + require.Equal(t, 4, col.Len()) + require.Nil(t, col.TopN) + width, depth = col.CMSketch.GetWidthAndDepth() + require.Equal(t, int32(4), depth) + require.Equal(t, int32(4), width) + + // Test very large cmsketch + tk.MustExec(fmt.Sprintf("analyze table t with %d cmsketch width, %d cmsketch depth", core.CMSketchSizeLimit, 1)) + tbl = dom.StatsHandle().GetTableStats(tableInfo) + col = tbl.Columns[1] + require.Equal(t, 20, col.Len()) + + require.Len(t, col.TopN.TopN, 1) + width, depth = col.CMSketch.GetWidthAndDepth() + require.Equal(t, int32(1), depth) + require.Equal(t, int32(core.CMSketchSizeLimit), width) + + // Test very large cmsketch + tk.MustExec("analyze table t with 20480 cmsketch width, 50 cmsketch depth") + tbl = dom.StatsHandle().GetTableStats(tableInfo) + col = tbl.Columns[1] + require.Equal(t, 20, col.Len()) + require.Len(t, col.TopN.TopN, 1) + width, depth = col.CMSketch.GetWidthAndDepth() + require.Equal(t, int32(50), depth) + require.Equal(t, int32(20480), width) +} + +func TestAnalyzeTooLongColumns(t *testing.T) { + store, dom, clean := testkit.CreateMockStoreAndDomain(t) + defer clean() + + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("drop table if exists t") + tk.MustExec("create table t(a json)") + value := fmt.Sprintf(`{"x":"%s"}`, strings.Repeat("x", mysql.MaxFieldVarCharLength)) + tk.MustExec(fmt.Sprintf("insert into t values ('%s')", value)) + + tk.MustExec("analyze table t") + is := tk.Session().(sessionctx.Context).GetInfoSchema().(infoschema.InfoSchema) + table, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) + require.NoError(t, err) + tableInfo := table.Meta() + tbl := dom.StatsHandle().GetTableStats(tableInfo) + require.Equal(t, 0, tbl.Columns[1].Len()) + require.Equal(t, 0, tbl.Columns[1].TopN.Num()) + require.Equal(t, int64(65559), tbl.Columns[1].TotColSize) +} + +func TestIssue15993(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + tk := testkit.NewTestKit(t, store) + + tk.MustExec("use test") + tk.MustExec("drop table if exists t0") + tk.MustExec("CREATE TABLE t0(c0 INT PRIMARY KEY);") + tk.MustExec("set @@tidb_enable_fast_analyze=1;") + tk.MustExec("set @@tidb_analyze_version = 1") + tk.MustExec("ANALYZE TABLE t0 INDEX PRIMARY;") +} + +func TestIssue15751(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + tk := testkit.NewTestKit(t, store) + + tk.MustExec("use test") + tk.MustExec("drop table if exists t0") + tk.MustExec("CREATE TABLE t0(c0 INT, c1 INT, PRIMARY KEY(c0, c1))") + tk.MustExec("INSERT INTO t0 VALUES (0, 0)") + tk.MustExec("set @@tidb_enable_fast_analyze=1") + tk.MustExec("set @@tidb_analyze_version = 1") + tk.MustExec("ANALYZE TABLE t0") +} + +func TestIssue15752(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + tk := testkit.NewTestKit(t, store) + + tk.MustExec("use test") + tk.MustExec("drop table if exists t0") + tk.MustExec("CREATE TABLE t0(c0 INT)") + tk.MustExec("INSERT INTO t0 VALUES (0)") + tk.MustExec("CREATE INDEX i0 ON t0(c0)") + tk.MustExec("set @@tidb_enable_fast_analyze=1") + tk.MustExec("set @@tidb_analyze_version = 1") + tk.MustExec("ANALYZE TABLE t0 INDEX i0") +} + +func TestFastAnalyzeRetryRowCount(t *testing.T) { + cli := &testkit.RegionProperityClient{} + hijackClient := func(c tikv.Client) tikv.Client { + cli.Client = c + return cli + } + + var cls testutils.Cluster + store, err := mockstore.NewMockStore( + mockstore.WithClusterInspector(func(c testutils.Cluster) { + mockstore.BootstrapWithSingleStore(c) + cls = c + }), + mockstore.WithClientHijacker(hijackClient), + ) + require.NoError(t, err) + defer func() { + err := store.Close() + require.NoError(t, err) + }() + dom, err := session.BootstrapSession(store) + require.NoError(t, err) + defer dom.Close() + tk := testkit.NewTestKit(t, store) + + tk.MustExec("use test") + tk.MustExec("drop table if exists retry_row_count") + tk.MustExec("create table retry_row_count(a int primary key)") + tblInfo, err := dom.InfoSchema().TableByName(model.NewCIStr("test"), model.NewCIStr("retry_row_count")) + require.NoError(t, err) + tid := tblInfo.Meta().ID + require.NoError(t, dom.StatsHandle().Update(dom.InfoSchema())) + tk.MustExec("set @@session.tidb_enable_fast_analyze=1") + tk.MustExec("set @@session.tidb_build_stats_concurrency=1") + tk.MustExec("set @@tidb_analyze_version = 1") + for i := 0; i < 30; i++ { + tk.MustExec(fmt.Sprintf("insert into retry_row_count values (%d)", i)) + } + tableStart := tablecodec.GenTableRecordPrefix(tid) + cls.SplitKeys(tableStart, tableStart.PrefixNext(), 6) + // Flush the region cache first. + tk.MustQuery("select * from retry_row_count") + tk.MustExec("analyze table retry_row_count") + row := tk.MustQuery(`show stats_meta where db_name = "test" and table_name = "retry_row_count"`).Rows()[0] + require.Equal(t, "30", row[5]) +} + +func TestFailedAnalyzeRequest(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + 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 int, index index_b(b))") + tk.MustExec("set @@tidb_analyze_version = 1") + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/executor/buildStatsFromResult", `return(true)`)) + _, err := tk.Exec("analyze table t") + require.NotNil(t, err) + require.Equal(t, "mock buildStatsFromResult error", err.Error()) + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/executor/buildStatsFromResult")) +} + +func TestExtractTopN(t *testing.T) { + store, dom, clean := testkit.CreateMockStoreAndDomain(t) + defer clean() + + tk := testkit.NewTestKit(t, store) + tk.MustExec("create database if not exists test_extract_topn") + tk.MustExec("use test_extract_topn") + tk.MustExec("drop table if exists test_extract_topn") + tk.MustExec("create table test_extract_topn(a int primary key, b int, index index_b(b))") + tk.MustExec("set @@session.tidb_analyze_version=2") + for i := 0; i < 10; i++ { + tk.MustExec(fmt.Sprintf("insert into test_extract_topn values (%d, %d)", i, i)) + } + for i := 0; i < 10; i++ { + tk.MustExec(fmt.Sprintf("insert into test_extract_topn values (%d, 0)", i+10)) + } + tk.MustExec("analyze table test_extract_topn") + is := dom.InfoSchema() + table, err := is.TableByName(model.NewCIStr("test_extract_topn"), model.NewCIStr("test_extract_topn")) + require.NoError(t, err) + tblInfo := table.Meta() + tblStats := dom.StatsHandle().GetTableStats(tblInfo) + colStats := tblStats.Columns[tblInfo.Columns[1].ID] + require.Len(t, colStats.TopN.TopN, 10) + item := colStats.TopN.TopN[0] + require.Equal(t, uint64(11), item.Count) + idxStats := tblStats.Indices[tblInfo.Indices[0].ID] + require.Len(t, idxStats.TopN.TopN, 10) + idxItem := idxStats.TopN.TopN[0] + require.Equal(t, uint64(11), idxItem.Count) + // The columns are: DBName, table name, column name, is index, value, count. + tk.MustQuery("show stats_topn where column_name in ('b', 'index_b')").Sort().Check(testkit.Rows("test_extract_topn test_extract_topn b 0 0 11", + "test_extract_topn test_extract_topn b 0 1 1", + "test_extract_topn test_extract_topn b 0 2 1", + "test_extract_topn test_extract_topn b 0 3 1", + "test_extract_topn test_extract_topn b 0 4 1", + "test_extract_topn test_extract_topn b 0 5 1", + "test_extract_topn test_extract_topn b 0 6 1", + "test_extract_topn test_extract_topn b 0 7 1", + "test_extract_topn test_extract_topn b 0 8 1", + "test_extract_topn test_extract_topn b 0 9 1", + "test_extract_topn test_extract_topn index_b 1 0 11", + "test_extract_topn test_extract_topn index_b 1 1 1", + "test_extract_topn test_extract_topn index_b 1 2 1", + "test_extract_topn test_extract_topn index_b 1 3 1", + "test_extract_topn test_extract_topn index_b 1 4 1", + "test_extract_topn test_extract_topn index_b 1 5 1", + "test_extract_topn test_extract_topn index_b 1 6 1", + "test_extract_topn test_extract_topn index_b 1 7 1", + "test_extract_topn test_extract_topn index_b 1 8 1", + "test_extract_topn test_extract_topn index_b 1 9 1", + )) +} + +func TestHashInTopN(t *testing.T) { + store, dom, clean := testkit.CreateMockStoreAndDomain(t) + defer clean() + + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("drop table if exists t") + tk.MustExec("create table t(a int, b float, c decimal(30, 10), d varchar(20))") + tk.MustExec(`insert into t values + (1, 1.1, 11.1, "0110"), + (2, 2.2, 22.2, "0110"), + (3, 3.3, 33.3, "0110"), + (4, 4.4, 44.4, "0440")`) + for i := 0; i < 3; i++ { + tk.MustExec("insert into t select * from t") + } + tk.MustExec("set @@tidb_analyze_version = 1") + // get stats of normal analyze + tk.MustExec("analyze table t") + is := dom.InfoSchema() + tbl, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) + require.NoError(t, err) + tblInfo := tbl.Meta() + tblStats1 := dom.StatsHandle().GetTableStats(tblInfo).Copy() + // get stats of fast analyze + tk.MustExec("set @@tidb_enable_fast_analyze = 1") + tk.MustExec("analyze table t") + tblStats2 := dom.StatsHandle().GetTableStats(tblInfo).Copy() + // check the hash for topn + for _, col := range tblInfo.Columns { + topn1 := tblStats1.Columns[col.ID].TopN.TopN + cm2 := tblStats2.Columns[col.ID].TopN + for _, topnMeta := range topn1 { + count2, exists := cm2.QueryTopN(topnMeta.Encoded) + require.True(t, exists) + require.Equal(t, topnMeta.Count, count2) + } + } +} + +func TestNormalAnalyzeOnCommonHandle(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + tk := testkit.NewTestKit(t, store) + + tk.MustExec("use test") + tk.MustExec("drop table if exists t1, t2, t3, t4") + tk.Session().GetSessionVars().EnableClusteredIndex = variable.ClusteredIndexDefModeOn + tk.MustExec("CREATE TABLE t1 (a int primary key, b int)") + tk.MustExec("insert into t1 values(1,1), (2,2), (3,3)") + tk.MustExec("CREATE TABLE t2 (a varchar(255) primary key, b int)") + tk.MustExec("insert into t2 values(\"111\",1), (\"222\",2), (\"333\",3)") + tk.MustExec("CREATE TABLE t3 (a int, b int, c int, primary key (a, b), key(c))") + tk.MustExec("insert into t3 values(1,1,1), (2,2,2), (3,3,3)") + + // Version2 is tested in TestStatsVer2. + tk.MustExec("set@@tidb_analyze_version=1") + tk.MustExec("analyze table t1, t2, t3") + + tk.MustQuery(`show stats_buckets where table_name in ("t1", "t2", "t3")`).Sort().Check(testkit.Rows( + "test t1 a 0 0 1 1 1 1 0", + "test t1 a 0 1 2 1 2 2 0", + "test t1 a 0 2 3 1 3 3 0", + "test t1 b 0 0 1 1 1 1 0", + "test t1 b 0 1 2 1 2 2 0", + "test t1 b 0 2 3 1 3 3 0", + "test t2 PRIMARY 1 0 1 1 111 111 0", + "test t2 PRIMARY 1 1 2 1 222 222 0", + "test t2 PRIMARY 1 2 3 1 333 333 0", + "test t2 a 0 0 1 1 111 111 0", + "test t2 a 0 1 2 1 222 222 0", + "test t2 a 0 2 3 1 333 333 0", + "test t2 b 0 0 1 1 1 1 0", + "test t2 b 0 1 2 1 2 2 0", + "test t2 b 0 2 3 1 3 3 0", + "test t3 PRIMARY 1 0 1 1 (1, 1) (1, 1) 0", + "test t3 PRIMARY 1 1 2 1 (2, 2) (2, 2) 0", + "test t3 PRIMARY 1 2 3 1 (3, 3) (3, 3) 0", + "test t3 a 0 0 1 1 1 1 0", + "test t3 a 0 1 2 1 2 2 0", + "test t3 a 0 2 3 1 3 3 0", + "test t3 b 0 0 1 1 1 1 0", + "test t3 b 0 1 2 1 2 2 0", + "test t3 b 0 2 3 1 3 3 0", + "test t3 c 0 0 1 1 1 1 0", + "test t3 c 0 1 2 1 2 2 0", + "test t3 c 0 2 3 1 3 3 0", + "test t3 c 1 0 1 1 1 1 0", + "test t3 c 1 1 2 1 2 2 0", + "test t3 c 1 2 3 1 3 3 0")) +} + +func TestDefaultValForAnalyze(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + tk := testkit.NewTestKit(t, store) + tk.MustExec("set @@tidb_analyze_version=1") + defer tk.MustExec("set @@tidb_analyze_version=2") + tk.MustExec("drop database if exists test_default_val_for_analyze;") + tk.MustExec("create database test_default_val_for_analyze;") + tk.MustExec("use test_default_val_for_analyze") + + tk.MustExec("create table t (a int, key(a));") + for i := 0; i < 2048; i++ { + tk.MustExec("insert into t values (0)") + } + for i := 1; i < 4; i++ { + tk.MustExec("insert into t values (?)", i) + } + + // Default RPC encoding may cause statistics explain result differ and then the test unstable. + tk.MustExec("set @@tidb_enable_chunk_rpc = on") + + tk.MustQuery("select @@tidb_enable_fast_analyze").Check(testkit.Rows("0")) + tk.MustQuery("select @@session.tidb_enable_fast_analyze").Check(testkit.Rows("0")) + tk.MustExec("analyze table t with 0 topn;") + tk.MustQuery("explain format = 'brief' select * from t where a = 1").Check(testkit.Rows("IndexReader 512.00 root index:IndexRangeScan", + "└─IndexRangeScan 512.00 cop[tikv] table:t, index:a(a) range:[1,1], keep order:false")) + tk.MustQuery("explain format = 'brief' select * from t where a = 999").Check(testkit.Rows("IndexReader 0.00 root index:IndexRangeScan", + "└─IndexRangeScan 0.00 cop[tikv] table:t, index:a(a) range:[999,999], keep order:false")) + + tk.MustExec("drop table t;") + tk.MustExec("create table t (a int, key(a));") + for i := 0; i < 2048; i++ { + tk.MustExec("insert into t values (0)") + } + for i := 1; i < 2049; i++ { + tk.MustExec("insert into t values (?)", i) + } + tk.MustExec("analyze table t with 0 topn;") + tk.MustQuery("explain format = 'brief' select * from t where a = 1").Check(testkit.Rows("IndexReader 1.00 root index:IndexRangeScan", + "└─IndexRangeScan 1.00 cop[tikv] table:t, index:a(a) range:[1,1], keep order:false")) +} + +func TestAnalyzeFullSamplingOnIndexWithVirtualColumnOrPrefixColumn(t *testing.T) { + t.Skip("unstable, skip it and fix it before 20210624") + store, clean := testkit.CreateMockStore(t) + defer clean() + tk := testkit.NewTestKit(t, store) + + tk.MustExec("use test") + tk.MustExec("drop table if exists sampling_index_virtual_col") + tk.MustExec("create table sampling_index_virtual_col(a int, b int as (a+1), index idx(b))") + tk.MustExec("insert into sampling_index_virtual_col (a) values (1), (2), (null), (3), (4), (null), (5), (5), (5), (5)") + tk.MustExec("set @@session.tidb_analyze_version = 2") + tk.MustExec("analyze table sampling_index_virtual_col with 1 topn") + tk.MustQuery("show stats_buckets where table_name = 'sampling_index_virtual_col' and column_name = 'idx'").Check(testkit.Rows( + "test sampling_index_virtual_col idx 1 0 1 1 2 2 0", + "test sampling_index_virtual_col idx 1 1 2 1 3 3 0", + "test sampling_index_virtual_col idx 1 2 3 1 4 4 0", + "test sampling_index_virtual_col idx 1 3 4 1 5 5 0")) + tk.MustQuery("show stats_topn where table_name = 'sampling_index_virtual_col' and column_name = 'idx'").Check(testkit.Rows("test sampling_index_virtual_col idx 1 6 4")) + row := tk.MustQuery(`show stats_histograms where db_name = "test" and table_name = "sampling_index_virtual_col"`).Rows()[0] + // The NDV. + require.Equal(t, "5", row[6]) + // The NULLs. + require.Equal(t, "2", row[7]) + tk.MustExec("drop table if exists sampling_index_prefix_col") + tk.MustExec("create table sampling_index_prefix_col(a varchar(3), index idx(a(1)))") + tk.MustExec("insert into sampling_index_prefix_col (a) values ('aa'), ('ab'), ('ac'), ('bb')") + tk.MustExec("analyze table sampling_index_prefix_col with 1 topn") + tk.MustQuery("show stats_buckets where table_name = 'sampling_index_prefix_col' and column_name = 'idx'").Check(testkit.Rows( + "test sampling_index_prefix_col idx 1 0 1 1 b b 0", + )) + tk.MustQuery("show stats_topn where table_name = 'sampling_index_prefix_col' and column_name = 'idx'").Check(testkit.Rows("test sampling_index_prefix_col idx 1 a 3")) +} + +func TestSnapshotAnalyze(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + tk := testkit.NewTestKit(t, store) + + tk.MustExec("use test") + tk.MustExec("drop table if exists t") + tk.MustExec("create table t(a int, index index_a(a))") + is := tk.Session().(sessionctx.Context).GetInfoSchema().(infoschema.InfoSchema) + tbl, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) + require.NoError(t, err) + tblInfo := tbl.Meta() + tid := tblInfo.ID + tk.MustExec("insert into t values(1),(1),(1)") + tk.MustExec("begin") + txn, err := tk.Session().Txn(false) + require.NoError(t, err) + startTS1 := txn.StartTS() + tk.MustExec("commit") + tk.MustExec("insert into t values(2),(2),(2)") + tk.MustExec("begin") + txn, err = tk.Session().Txn(false) + require.NoError(t, err) + startTS2 := txn.StartTS() + tk.MustExec("commit") + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/executor/injectAnalyzeSnapshot", fmt.Sprintf("return(%d)", startTS1))) + tk.MustExec("analyze table t") + rows := tk.MustQuery(fmt.Sprintf("select count, snapshot from mysql.stats_meta where table_id = %d", tid)).Rows() + require.Len(t, rows, 1) + require.Equal(t, "3", rows[0][0]) + s1Str := rows[0][1].(string) + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/executor/injectAnalyzeSnapshot", fmt.Sprintf("return(%d)", startTS2))) + tk.MustExec("analyze table t") + rows = tk.MustQuery(fmt.Sprintf("select count, snapshot from mysql.stats_meta where table_id = %d", tid)).Rows() + require.Len(t, rows, 1) + require.Equal(t, "6", rows[0][0]) + s2Str := rows[0][1].(string) + require.True(t, s1Str != s2Str) + tk.MustExec("set @@session.tidb_analyze_version = 2") + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/executor/injectAnalyzeSnapshot", fmt.Sprintf("return(%d)", startTS1))) + tk.MustExec("analyze table t") + rows = tk.MustQuery(fmt.Sprintf("select count, snapshot from mysql.stats_meta where table_id = %d", tid)).Rows() + require.Len(t, rows, 1) + require.Equal(t, "6", rows[0][0]) + s3Str := rows[0][1].(string) + require.Equal(t, s2Str, s3Str) + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/executor/injectAnalyzeSnapshot")) +} + +func TestAdjustSampleRateNote(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + tk := testkit.NewTestKit(t, store) + + tk.MustExec("use test") + statsHandle := domain.GetDomain(tk.Session().(sessionctx.Context)).StatsHandle() + tk.MustExec("drop table if exists t") + tk.MustExec("create table t(a int, index index_a(a))") + require.NoError(t, statsHandle.HandleDDLEvent(<-statsHandle.DDLEventCh())) + is := tk.Session().(sessionctx.Context).GetInfoSchema().(infoschema.InfoSchema) + tbl, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) + require.NoError(t, err) + tblInfo := tbl.Meta() + tid := tblInfo.ID + tk.MustExec(fmt.Sprintf("update mysql.stats_meta set count = 220000 where table_id=%d", tid)) + require.NoError(t, statsHandle.Update(is)) + result := tk.MustQuery("show stats_meta where table_name = 't'") + require.Equal(t, "220000", result.Rows()[0][5]) + tk.MustExec("analyze table t") + tk.MustQuery("show warnings").Check(testkit.Rows("Note 1105 Analyze use auto adjusted sample rate 0.500000 for table test.t")) + tk.MustExec("insert into t values(1),(1),(1)") + require.NoError(t, statsHandle.DumpStatsDeltaToKV(handle.DumpAll)) + require.NoError(t, statsHandle.Update(is)) + result = tk.MustQuery("show stats_meta where table_name = 't'") + require.Equal(t, "3", result.Rows()[0][5]) + tk.MustExec("analyze table t") + tk.MustQuery("show warnings").Check(testkit.Rows("Note 1105 Analyze use auto adjusted sample rate 1.000000 for table test.t")) +} + +func TestFastAnalyze4GlobalStats(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + + tk := testkit.NewTestKit(t, store) + tk.MustExec(`create database if not exists test_fast_gstats`) + tk.MustExec("use test_fast_gstats") + tk.MustExec("set @@session.tidb_enable_fast_analyze=1") + tk.MustExec("set @@session.tidb_build_stats_concurrency=1") + // test fast analyze in dynamic mode + tk.MustExec("set @@session.tidb_analyze_version = 2;") + tk.MustExec("set @@session.tidb_partition_prune_mode = 'dynamic';") + tk.MustExec("drop table if exists test_fast_gstats;") + tk.MustExec("create table test_fast_gstats(a int, b int) PARTITION BY HASH(a) PARTITIONS 2;") + tk.MustExec("insert into test_fast_gstats values(1,1),(3,3),(4,4),(2,2),(5,5);") + err := tk.ExecToErr("analyze table test_fast_gstats;") + require.EqualError(t, err, "Fast analyze hasn't reached General Availability and only support analyze version 1 currently") +} + +func TestAnalyzeIndex(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("drop table if exists t1") + tk.MustExec("create table t1 (id int, v int, primary key(id), index k(v))") + tk.MustExec("insert into t1(id, v) values(1, 2), (2, 2), (3, 2), (4, 2), (5, 1), (6, 3), (7, 4)") + tk.MustExec("set @@tidb_analyze_version=1") + tk.MustExec("analyze table t1 index k") + require.Greater(t, len(tk.MustQuery("show stats_buckets where table_name = 't1' and column_name = 'k' and is_index = 1").Rows()), 0) + tk.MustExec("set @@tidb_analyze_version=default") + tk.MustExec("analyze table t1") + require.Greater(t, len(tk.MustQuery("show stats_topn where table_name = 't1' and column_name = 'k' and is_index = 1").Rows()), 0) + + func() { + defer tk.MustExec("set @@session.tidb_enable_fast_analyze=0") + tk.MustExec("drop stats t1") + tk.MustExec("set @@session.tidb_enable_fast_analyze=1") + tk.MustExec("set @@tidb_analyze_version=1") + tk.MustExec("analyze table t1 index k") + require.Greater(t, len(tk.MustQuery("show stats_buckets where table_name = 't1' and column_name = 'k' and is_index = 1").Rows()), 1) + }() +} + +func TestAnalyzeIncremental(t *testing.T) { + store, dom, clean := testkit.CreateMockStoreAndDomain(t) + defer clean() + + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("set @@tidb_analyze_version = 1") + testAnalyzeIncremental(tk, t, dom) +} + +func testAnalyzeIncremental(tk *testkit.TestKit, t *testing.T, dom *domain.Domain) { + tk.MustExec("use test") + tk.MustExec("drop table if exists t") + tk.MustExec("create table t(a int, b int, primary key(a), index idx(b))") + tk.MustExec("analyze incremental table t index") + tk.MustQuery("show stats_buckets").Check(testkit.Rows()) + tk.MustExec("insert into t values (1,1)") + tk.MustExec("analyze incremental table t index") + tk.MustQuery("show stats_buckets").Check(testkit.Rows("test t a 0 0 1 1 1 1 0", "test t idx 1 0 1 1 1 1 0")) + tk.MustExec("insert into t values (2,2)") + tk.MustExec("analyze incremental table t index") + tk.MustQuery("show stats_buckets").Check(testkit.Rows("test t a 0 0 1 1 1 1 0", "test t a 0 1 2 1 2 2 0", "test t idx 1 0 1 1 1 1 0", "test t idx 1 1 2 1 2 2 0")) + tk.MustExec("analyze incremental table t index") + // Result should not change. + tk.MustQuery("show stats_buckets").Check(testkit.Rows("test t a 0 0 1 1 1 1 0", "test t a 0 1 2 1 2 2 0", "test t idx 1 0 1 1 1 1 0", "test t idx 1 1 2 1 2 2 0")) + + // Test analyze incremental with feedback. + // paging is not compatible with feedback. + tk.MustExec("set @@tidb_enable_paging = off") + + tk.MustExec("insert into t values (3,3)") + oriProbability := statistics.FeedbackProbability.Load() + oriMinLogCount := handle.MinLogScanCount.Load() + defer func() { + statistics.FeedbackProbability.Store(oriProbability) + handle.MinLogScanCount.Store(oriMinLogCount) + }() + statistics.FeedbackProbability.Store(1) + handle.MinLogScanCount.Store(0) + is := dom.InfoSchema() + table, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) + require.NoError(t, err) + tblInfo := table.Meta() + tk.MustQuery("select * from t use index(idx) where b = 3") + tk.MustQuery("select * from t where a > 1") + h := dom.StatsHandle() + require.NoError(t, h.DumpStatsDeltaToKV(handle.DumpAll)) + require.NoError(t, h.DumpStatsFeedbackToKV()) + require.NoError(t, h.HandleUpdateStats(is)) + require.NoError(t, h.Update(is)) + require.NoError(t, h.LoadNeededHistograms()) + tk.MustQuery("show stats_buckets").Check(testkit.Rows("test t a 0 0 1 1 1 1 0", "test t a 0 1 3 0 2 2147483647 0", "test t idx 1 0 1 1 1 1 0", "test t idx 1 1 2 1 2 2 0")) + tblStats := h.GetTableStats(tblInfo) + val, err := codec.EncodeKey(tk.Session().GetSessionVars().StmtCtx, nil, types.NewIntDatum(3)) + require.NoError(t, err) + require.Equal(t, uint64(1), tblStats.Indices[tblInfo.Indices[0].ID].QueryBytes(val)) + require.False(t, statistics.IsAnalyzed(tblStats.Indices[tblInfo.Indices[0].ID].Flag)) + require.False(t, statistics.IsAnalyzed(tblStats.Columns[tblInfo.Columns[0].ID].Flag)) + + tk.MustExec("analyze incremental table t index") + require.NoError(t, h.LoadNeededHistograms()) + tk.MustQuery("show stats_buckets").Check(testkit.Rows("test t a 0 0 1 1 1 1 0", "test t a 0 1 2 1 2 2 0", "test t a 0 2 3 1 3 3 0", + "test t idx 1 0 1 1 1 1 0", "test t idx 1 1 2 1 2 2 0", "test t idx 1 2 3 1 3 3 0")) + tblStats = h.GetTableStats(tblInfo) + require.Equal(t, uint64(1), tblStats.Indices[tblInfo.Indices[0].ID].QueryBytes(val)) + + // test analyzeIndexIncremental for global-level stats; + tk.MustExec("set @@session.tidb_analyze_version = 1;") + tk.MustQuery("select @@tidb_analyze_version").Check(testkit.Rows("1")) + tk.MustExec("set @@tidb_partition_prune_mode = 'static';") + tk.MustExec("drop table if exists t;") + tk.MustExec(`create table t (a int, b int, primary key(a), index idx(b)) partition by range (a) ( + partition p0 values less than (10), + partition p1 values less than (20), + partition p2 values less than (30) + );`) + tk.MustExec("analyze incremental table t index") + require.NoError(t, h.LoadNeededHistograms()) + tk.MustQuery("show stats_buckets").Check(testkit.Rows()) + tk.MustExec("insert into t values (1,1)") + tk.MustExec("analyze incremental table t index") + tk.MustQuery("show warnings").Check(testkit.Rows()) // no warning + require.NoError(t, h.LoadNeededHistograms()) + tk.MustQuery("show stats_buckets").Check(testkit.Rows("test t p0 a 0 0 1 1 1 1 0", "test t p0 idx 1 0 1 1 1 1 0")) + tk.MustExec("insert into t values (2,2)") + tk.MustExec("analyze incremental table t index") + require.NoError(t, h.LoadNeededHistograms()) + tk.MustQuery("show stats_buckets").Check(testkit.Rows("test t p0 a 0 0 1 1 1 1 0", "test t p0 a 0 1 2 1 2 2 0", "test t p0 idx 1 0 1 1 1 1 0", "test t p0 idx 1 1 2 1 2 2 0")) + tk.MustExec("set @@tidb_partition_prune_mode = 'dynamic';") + tk.MustExec("insert into t values (11,11)") + err = tk.ExecToErr("analyze incremental table t index") + require.Equal(t, "[stats]: global statistics for partitioned tables unavailable in ANALYZE INCREMENTAL", err.Error()) +} + +func TestIssue20874(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("drop table if exists t") + tk.MustExec("delete from mysql.stats_histograms") + tk.MustExec("create table t (a char(10) collate utf8mb4_unicode_ci not null, b char(20) collate utf8mb4_general_ci not null, key idxa(a), key idxb(b))") + tk.MustExec("insert into t values ('#', 'C'), ('$', 'c'), ('a', 'a')") + tk.MustExec("set @@tidb_analyze_version=1") + tk.MustExec("analyze table t") + tk.MustQuery("show stats_buckets where db_name = 'test' and table_name = 't'").Sort().Check(testkit.Rows( + "test t a 0 0 1 1 \x02\xd2 \x02\xd2 0", + "test t a 0 1 2 1 \x0e\x0f \x0e\x0f 0", + "test t a 0 2 3 1 \x0e3 \x0e3 0", + "test t b 0 0 1 1 \x00A \x00A 0", + "test t b 0 1 3 2 \x00C \x00C 0", + "test t idxa 1 0 1 1 \x02\xd2 \x02\xd2 0", + "test t idxa 1 1 2 1 \x0e\x0f \x0e\x0f 0", + "test t idxa 1 2 3 1 \x0e3 \x0e3 0", + "test t idxb 1 0 1 1 \x00A \x00A 0", + "test t idxb 1 1 3 2 \x00C \x00C 0", + )) + tk.MustQuery("select is_index, hist_id, distinct_count, null_count, tot_col_size, stats_ver, correlation from mysql.stats_histograms").Sort().Check(testkit.Rows( + "0 1 3 0 9 1 1", + "0 2 2 0 9 1 -0.5", + "1 1 3 0 0 1 0", + "1 2 2 0 0 1 0", + )) + tk.MustExec("set @@tidb_analyze_version=2") + tk.MustExec("analyze table t") + tk.MustQuery("show stats_topn where db_name = 'test' and table_name = 't'").Sort().Check(testkit.Rows( + "test t a 0 \x02\xd2 1", + "test t a 0 \x0e\x0f 1", + "test t a 0 \x0e3 1", + "test t b 0 \x00A 1", + "test t b 0 \x00C 2", + "test t idxa 1 \x02\xd2 1", + "test t idxa 1 \x0e\x0f 1", + "test t idxa 1 \x0e3 1", + "test t idxb 1 \x00A 1", + "test t idxb 1 \x00C 2", + )) + tk.MustQuery("select is_index, hist_id, distinct_count, null_count, tot_col_size, stats_ver, correlation from mysql.stats_histograms").Sort().Check(testkit.Rows( + "0 1 3 0 6 2 1", + "0 2 2 0 6 2 -0.5", + "1 1 3 0 6 2 0", + "1 2 2 0 6 2 0", + )) +} + +func TestAnalyzeClusteredIndexPrimary(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("drop table if exists t0") + tk.MustExec("drop table if exists t1") + tk.MustExec("create table t0(a varchar(20), primary key(a) clustered)") + tk.MustExec("create table t1(a varchar(20), primary key(a))") + tk.MustExec("insert into t0 values('1111')") + tk.MustExec("insert into t1 values('1111')") + tk.MustExec("set @@session.tidb_analyze_version = 1") + tk.MustExec("analyze table t0 index primary") + tk.MustExec("analyze table t1 index primary") + tk.MustQuery("show stats_buckets").Check(testkit.Rows( + "test t0 PRIMARY 1 0 1 1 1111 1111 0", + "test t1 PRIMARY 1 0 1 1 1111 1111 0")) + tk.MustExec("set @@session.tidb_analyze_version = 2") + tk.MustExec("analyze table t0") + tk.MustExec("analyze table t1") + tk.MustQuery("show stats_topn").Sort().Check(testkit.Rows(""+ + "test t0 PRIMARY 1 1111 1", + "test t0 a 0 1111 1", + "test t1 PRIMARY 1 1111 1", + "test t1 a 0 1111 1")) +} + +func TestAnalyzeSamplingWorkPanic(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("set @@session.tidb_analyze_version = 2") + tk.MustExec("create table t(a int)") + tk.MustExec("insert into t values(1), (2), (3), (4), (5), (6), (7), (8), (9), (10), (11), (12)") + tk.MustExec("split table t between (-9223372036854775808) and (9223372036854775807) regions 12") + + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/executor/mockAnalyzeSamplingBuildWorkerPanic", "return(1)")) + err := tk.ExecToErr("analyze table t") + require.NotNil(t, err) + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/executor/mockAnalyzeSamplingBuildWorkerPanic")) + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/executor/mockAnalyzeSamplingMergeWorkerPanic", "return(1)")) + err = tk.ExecToErr("analyze table t") + require.NotNil(t, err) + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/executor/mockAnalyzeSamplingMergeWorkerPanic")) +} + +func TestSmallTableAnalyzeV2(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + + tk := testkit.NewTestKit(t, store) + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/executor/calcSampleRateByStorageCount", "return(1)")) + tk.MustExec("use test") + tk.MustExec("set @@session.tidb_analyze_version = 2") + tk.MustExec("create table small_table_inject_pd(a int)") + tk.MustExec("insert into small_table_inject_pd values(1), (2), (3), (4), (5)") + tk.MustExec("analyze table small_table_inject_pd") + tk.MustQuery("show warnings").Check(testkit.Rows("Note 1105 Analyze use auto adjusted sample rate 1.000000 for table test.small_table_inject_pd")) + tk.MustExec(` +create table small_table_inject_pd_with_partition( + a int +) partition by range(a) ( + partition p0 values less than (5), + partition p1 values less than (10), + partition p2 values less than (15) +)`) + tk.MustExec("insert into small_table_inject_pd_with_partition values(1), (6), (11)") + tk.MustExec("analyze table small_table_inject_pd_with_partition") + tk.MustQuery("show warnings").Check(testkit.Rows( + "Note 1105 Analyze use auto adjusted sample rate 1.000000 for table test.small_table_inject_pd_with_partition's partition p0", + "Note 1105 Analyze use auto adjusted sample rate 1.000000 for table test.small_table_inject_pd_with_partition's partition p1", + "Note 1105 Analyze use auto adjusted sample rate 1.000000 for table test.small_table_inject_pd_with_partition's partition p2", + )) + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/executor/calcSampleRateByStorageCount")) +} + +func TestSavedAnalyzeOptions(t *testing.T) { + store, dom, clean := testkit.CreateMockStoreAndDomain(t) + defer clean() + tk := testkit.NewTestKit(t, store) + originalVal1 := tk.MustQuery("select @@tidb_persist_analyze_options").Rows()[0][0].(string) + defer func() { + tk.MustExec(fmt.Sprintf("set global tidb_persist_analyze_options = %v", originalVal1)) + }() + tk.MustExec("set global tidb_persist_analyze_options = true") + originalVal2 := tk.MustQuery("select @@tidb_auto_analyze_ratio").Rows()[0][0].(string) + defer func() { + tk.MustExec(fmt.Sprintf("set global tidb_auto_analyze_ratio = %v", originalVal2)) + }() + tk.MustExec("set global tidb_auto_analyze_ratio = 0.01") + originalVal3 := handle.AutoAnalyzeMinCnt + defer func() { + handle.AutoAnalyzeMinCnt = originalVal3 + }() + handle.AutoAnalyzeMinCnt = 0 + + tk.MustExec("use test") + tk.MustExec("set @@session.tidb_analyze_version = 2") + tk.MustExec("create table t(a int, b int, c int, primary key(a), key idx(b))") + tk.MustExec("insert into t values (1,1,1),(2,1,2),(3,1,3),(4,1,4),(5,1,5),(6,1,6),(7,7,7),(8,8,8),(9,9,9)") + + h := dom.StatsHandle() + oriLease := h.Lease() + h.SetLease(1) + defer func() { + h.SetLease(oriLease) + }() + tk.MustExec("analyze table t with 1 topn, 2 buckets") + is := dom.InfoSchema() + tk.MustQuery("select * from t where b > 1 and c > 1") + require.NoError(t, h.LoadNeededHistograms()) + table, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) + require.NoError(t, err) + tableInfo := table.Meta() + tbl := h.GetTableStats(tableInfo) + lastVersion := tbl.Version + col0 := tbl.Columns[tableInfo.Columns[0].ID] + require.Equal(t, 2, len(col0.Buckets)) + col1 := tbl.Columns[tableInfo.Columns[1].ID] + require.Equal(t, 1, len(col1.TopN.TopN)) + require.Equal(t, 2, len(col1.Buckets)) + col2 := tbl.Columns[tableInfo.Columns[2].ID] + require.Equal(t, 2, len(col2.Buckets)) + rs := tk.MustQuery("select buckets,topn from mysql.analyze_options where table_id=" + strconv.FormatInt(tbl.PhysicalID, 10)) + require.Equal(t, 1, len(rs.Rows())) + require.Equal(t, "2", rs.Rows()[0][0]) + require.Equal(t, "1", rs.Rows()[0][1]) + + // auto-analyze uses the table-level options + tk.MustExec("insert into t values (10,10,10)") + require.Nil(t, h.DumpStatsDeltaToKV(handle.DumpAll)) + require.Nil(t, h.Update(is)) + h.HandleAutoAnalyze(is) + tbl = h.GetTableStats(tableInfo) + require.Greater(t, tbl.Version, lastVersion) + lastVersion = tbl.Version + col0 = tbl.Columns[tableInfo.Columns[0].ID] + require.Equal(t, 2, len(col0.Buckets)) + + // manual analyze uses the table-level persisted options by merging the new options + tk.MustExec("analyze table t columns a,b with 1 samplerate, 3 buckets") + tbl = h.GetTableStats(tableInfo) + require.Greater(t, tbl.Version, lastVersion) + lastVersion = tbl.Version + col0 = tbl.Columns[tableInfo.Columns[0].ID] + require.Equal(t, 3, len(col0.Buckets)) + tk.MustQuery("select * from t where b > 1 and c > 1") + require.NoError(t, h.LoadNeededHistograms()) + col1 = tbl.Columns[tableInfo.Columns[1].ID] + require.Equal(t, 1, len(col1.TopN.TopN)) + col2 = tbl.Columns[tableInfo.Columns[2].ID] + require.Less(t, col2.LastUpdateVersion, col0.LastUpdateVersion) // not updated since removed from list + rs = tk.MustQuery("select sample_rate,buckets,topn,column_choice,column_ids from mysql.analyze_options where table_id=" + strconv.FormatInt(tbl.PhysicalID, 10)) + require.Equal(t, 1, len(rs.Rows())) + require.Equal(t, "1", rs.Rows()[0][0]) + require.Equal(t, "3", rs.Rows()[0][1]) + require.Equal(t, "1", rs.Rows()[0][2]) + require.Equal(t, "LIST", rs.Rows()[0][3]) + colIDStrs := strings.Join([]string{strconv.FormatInt(tableInfo.Columns[0].ID, 10), strconv.FormatInt(tableInfo.Columns[1].ID, 10)}, ",") + require.Equal(t, colIDStrs, rs.Rows()[0][4]) + + // disable option persistence + tk.MustExec("set global tidb_persist_analyze_options = false") + // manual analyze will neither use the pre-persisted options nor persist new options + tk.MustExec("analyze table t with 2 topn") + tbl = h.GetTableStats(tableInfo) + require.Greater(t, tbl.Version, lastVersion) + col0 = tbl.Columns[tableInfo.Columns[0].ID] + require.NotEqual(t, 3, len(col0.Buckets)) + rs = tk.MustQuery("select topn from mysql.analyze_options where table_id=" + strconv.FormatInt(tbl.PhysicalID, 10)) + require.Equal(t, 1, len(rs.Rows())) + require.NotEqual(t, "2", rs.Rows()[0][0]) +} + +func TestSavedPartitionAnalyzeOptions(t *testing.T) { + store, dom, clean := testkit.CreateMockStoreAndDomain(t) + defer clean() + tk := testkit.NewTestKit(t, store) + originalVal := tk.MustQuery("select @@tidb_persist_analyze_options").Rows()[0][0].(string) + defer func() { + tk.MustExec(fmt.Sprintf("set global tidb_persist_analyze_options = %v", originalVal)) + }() + tk.MustExec("set global tidb_persist_analyze_options = true") + + tk.MustExec("use test") + tk.MustExec("set @@session.tidb_analyze_version = 2") + tk.MustExec("set @@session.tidb_partition_prune_mode = 'static'") + createTable := `CREATE TABLE t (a int, b int, c varchar(10), primary key(a), index idx(b)) +PARTITION BY RANGE ( a ) ( + PARTITION p0 VALUES LESS THAN (10), + PARTITION p1 VALUES LESS THAN (20) +)` + tk.MustExec(createTable) + tk.MustExec("insert into t values (1,1,1),(2,1,2),(3,1,3),(4,1,4),(5,1,5),(6,1,6),(7,7,7),(8,8,8),(9,9,9),(10,10,10),(11,11,11),(12,12,12),(13,13,13),(14,14,14)") + + h := dom.StatsHandle() + oriLease := h.Lease() + h.SetLease(1) + defer func() { + h.SetLease(oriLease) + }() + // analyze partition only sets options of partition + tk.MustExec("analyze table t partition p0 with 1 topn, 3 buckets") + is := dom.InfoSchema() + tk.MustQuery("select * from t where b > 1 and c > 1") + require.NoError(t, h.LoadNeededHistograms()) + table, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) + require.NoError(t, err) + tableInfo := table.Meta() + pi := tableInfo.GetPartitionInfo() + require.NotNil(t, pi) + p0 := h.GetPartitionStats(tableInfo, pi.Definitions[0].ID) + lastVersion := p0.Version + require.Equal(t, 3, len(p0.Columns[tableInfo.Columns[0].ID].Buckets)) + rs := tk.MustQuery("select buckets,topn from mysql.analyze_options where table_id=" + strconv.FormatInt(p0.PhysicalID, 10)) + require.Equal(t, 1, len(rs.Rows())) + require.Equal(t, "3", rs.Rows()[0][0]) + require.Equal(t, "1", rs.Rows()[0][1]) + rs = tk.MustQuery("select buckets,topn from mysql.analyze_options where table_id=" + strconv.FormatInt(tableInfo.ID, 10)) + require.Equal(t, 1, len(rs.Rows())) + require.Equal(t, "0", rs.Rows()[0][0]) + require.Equal(t, "-1", rs.Rows()[0][1]) + + // merge partition & table level options + tk.MustExec("analyze table t columns a,b with 0 topn, 2 buckets") + tk.MustQuery("select * from t where b > 1 and c > 1") + require.NoError(t, h.LoadNeededHistograms()) + p0 = h.GetPartitionStats(tableInfo, pi.Definitions[0].ID) + p1 := h.GetPartitionStats(tableInfo, pi.Definitions[1].ID) + require.Greater(t, p0.Version, lastVersion) + lastVersion = p0.Version + require.Equal(t, 2, len(p0.Columns[tableInfo.Columns[0].ID].Buckets)) + require.Equal(t, 2, len(p1.Columns[tableInfo.Columns[0].ID].Buckets)) + // check column c is not analyzed + require.Less(t, p0.Columns[tableInfo.Columns[2].ID].LastUpdateVersion, p0.Columns[tableInfo.Columns[0].ID].LastUpdateVersion) + require.Less(t, p1.Columns[tableInfo.Columns[2].ID].LastUpdateVersion, p1.Columns[tableInfo.Columns[0].ID].LastUpdateVersion) + rs = tk.MustQuery("select sample_rate,buckets,topn,column_choice,column_ids from mysql.analyze_options where table_id=" + strconv.FormatInt(tableInfo.ID, 10)) + require.Equal(t, 1, len(rs.Rows())) + require.Equal(t, "0", rs.Rows()[0][0]) + require.Equal(t, "2", rs.Rows()[0][1]) + require.Equal(t, "0", rs.Rows()[0][2]) + require.Equal(t, "LIST", rs.Rows()[0][3]) + colIDStrsAB := strings.Join([]string{strconv.FormatInt(tableInfo.Columns[0].ID, 10), strconv.FormatInt(tableInfo.Columns[1].ID, 10)}, ",") + require.Equal(t, colIDStrsAB, rs.Rows()[0][4]) + rs = tk.MustQuery("select sample_rate,buckets,topn,column_choice,column_ids from mysql.analyze_options where table_id=" + strconv.FormatInt(p0.PhysicalID, 10)) + require.Equal(t, 1, len(rs.Rows())) + require.Equal(t, "0", rs.Rows()[0][0]) + require.Equal(t, "2", rs.Rows()[0][1]) + require.Equal(t, "0", rs.Rows()[0][2]) + require.Equal(t, "LIST", rs.Rows()[0][3]) + require.Equal(t, colIDStrsAB, rs.Rows()[0][4]) + rs = tk.MustQuery("select sample_rate,buckets,topn,column_choice,column_ids from mysql.analyze_options where table_id=" + strconv.FormatInt(p1.PhysicalID, 10)) + require.Equal(t, 1, len(rs.Rows())) + require.Equal(t, "0", rs.Rows()[0][0]) + require.Equal(t, "2", rs.Rows()[0][1]) + require.Equal(t, "0", rs.Rows()[0][2]) + require.Equal(t, "LIST", rs.Rows()[0][3]) + require.Equal(t, colIDStrsAB, rs.Rows()[0][4]) + + // analyze partition only updates this partition, and set different collist + tk.MustExec("analyze table t partition p1 columns a,c with 1 buckets") + tk.MustQuery("select * from t where b > 1 and c > 1") + require.NoError(t, h.LoadNeededHistograms()) + p0 = h.GetPartitionStats(tableInfo, pi.Definitions[0].ID) + p1 = h.GetPartitionStats(tableInfo, pi.Definitions[1].ID) + require.Equal(t, p0.Version, lastVersion) + require.Greater(t, p1.Version, lastVersion) + lastVersion = p1.Version + require.Equal(t, 1, len(p1.Columns[tableInfo.Columns[0].ID].Buckets)) + require.Equal(t, 2, len(p0.Columns[tableInfo.Columns[0].ID].Buckets)) + // only column c of p1 is re-analyzed + require.Equal(t, 1, len(p1.Columns[tableInfo.Columns[2].ID].Buckets)) + require.NotEqual(t, 1, len(p0.Columns[tableInfo.Columns[2].ID].Buckets)) + colIDStrsABC := strings.Join([]string{strconv.FormatInt(tableInfo.Columns[0].ID, 10), strconv.FormatInt(tableInfo.Columns[1].ID, 10), strconv.FormatInt(tableInfo.Columns[2].ID, 10)}, ",") + rs = tk.MustQuery("select buckets,column_ids from mysql.analyze_options where table_id=" + strconv.FormatInt(tableInfo.ID, 10)) + require.Equal(t, 1, len(rs.Rows())) + require.Equal(t, "2", rs.Rows()[0][0]) + require.Equal(t, colIDStrsAB, rs.Rows()[0][1]) + rs = tk.MustQuery("select buckets,column_ids from mysql.analyze_options where table_id=" + strconv.FormatInt(p1.PhysicalID, 10)) + require.Equal(t, 1, len(rs.Rows())) + require.Equal(t, "1", rs.Rows()[0][0]) + require.Equal(t, colIDStrsABC, rs.Rows()[0][1]) + rs = tk.MustQuery("select buckets,column_ids from mysql.analyze_options where table_id=" + strconv.FormatInt(p0.PhysicalID, 10)) + require.Equal(t, 1, len(rs.Rows())) + require.Equal(t, "2", rs.Rows()[0][0]) + require.Equal(t, colIDStrsAB, rs.Rows()[0][1]) + + // analyze partition without options uses saved partition options + tk.MustExec("analyze table t partition p0") + p0 = h.GetPartitionStats(tableInfo, pi.Definitions[0].ID) + require.Greater(t, p0.Version, lastVersion) + lastVersion = p0.Version + require.Equal(t, 2, len(p0.Columns[tableInfo.Columns[0].ID].Buckets)) + rs = tk.MustQuery("select buckets from mysql.analyze_options where table_id=" + strconv.FormatInt(tableInfo.ID, 10)) + require.Equal(t, 1, len(rs.Rows())) + require.Equal(t, "2", rs.Rows()[0][0]) + rs = tk.MustQuery("select buckets from mysql.analyze_options where table_id=" + strconv.FormatInt(p0.PhysicalID, 10)) + require.Equal(t, 1, len(rs.Rows())) + require.Equal(t, "2", rs.Rows()[0][0]) + + // merge options of statement's, partition's and table's + tk.MustExec("analyze table t partition p0 with 3 buckets") + p0 = h.GetPartitionStats(tableInfo, pi.Definitions[0].ID) + require.Greater(t, p0.Version, lastVersion) + require.Equal(t, 3, len(p0.Columns[tableInfo.Columns[0].ID].Buckets)) + rs = tk.MustQuery("select sample_rate,buckets,topn,column_choice,column_ids from mysql.analyze_options where table_id=" + strconv.FormatInt(p0.PhysicalID, 10)) + require.Equal(t, 1, len(rs.Rows())) + require.Equal(t, "0", rs.Rows()[0][0]) + require.Equal(t, "3", rs.Rows()[0][1]) + require.Equal(t, "0", rs.Rows()[0][2]) + require.Equal(t, "LIST", rs.Rows()[0][3]) + require.Equal(t, colIDStrsAB, rs.Rows()[0][4]) + + // add new partitions, use table options as default + tk.MustExec("ALTER TABLE t ADD PARTITION (PARTITION p2 VALUES LESS THAN (30))") + tk.MustExec("insert into t values (21,21,21),(22,22,22),(23,23,23),(24,24,24)") + tk.MustExec("analyze table t partition p2") + is = dom.InfoSchema() + table, err = is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) + require.NoError(t, err) + tableInfo = table.Meta() + pi = tableInfo.GetPartitionInfo() + p2 := h.GetPartitionStats(tableInfo, pi.Definitions[2].ID) + require.Equal(t, 2, len(p2.Columns[tableInfo.Columns[0].ID].Buckets)) + rs = tk.MustQuery("select sample_rate,buckets,topn,column_choice,column_ids from mysql.analyze_options where table_id=" + strconv.FormatInt(p2.PhysicalID, 10)) + require.Equal(t, 1, len(rs.Rows())) + require.Equal(t, "0", rs.Rows()[0][0]) + require.Equal(t, "2", rs.Rows()[0][1]) + require.Equal(t, "0", rs.Rows()[0][2]) + require.Equal(t, "LIST", rs.Rows()[0][3]) + require.Equal(t, colIDStrsAB, rs.Rows()[0][4]) + rs = tk.MustQuery("select sample_rate,buckets,topn,column_choice,column_ids from mysql.analyze_options where table_id=" + strconv.FormatInt(tableInfo.ID, 10)) + require.Equal(t, 1, len(rs.Rows())) + require.Equal(t, "0", rs.Rows()[0][0]) + require.Equal(t, "2", rs.Rows()[0][1]) + require.Equal(t, "0", rs.Rows()[0][2]) + require.Equal(t, "LIST", rs.Rows()[0][3]) + require.Equal(t, colIDStrsAB, rs.Rows()[0][4]) + + // set analyze version back to 1, will not use persisted + tk.MustExec("set @@session.tidb_analyze_version = 1") + tk.MustExec("analyze table t partition p2") + pi = tableInfo.GetPartitionInfo() + p2 = h.GetPartitionStats(tableInfo, pi.Definitions[2].ID) + require.NotEqual(t, 2, len(p2.Columns[tableInfo.Columns[0].ID].Buckets)) + + // drop column + tk.MustExec("set @@session.tidb_analyze_version = 2") + tk.MustExec("alter table t drop column b") + tk.MustExec("analyze table t") + colIDStrsA := strings.Join([]string{strconv.FormatInt(tableInfo.Columns[0].ID, 10)}, ",") + colIDStrsAC := strings.Join([]string{strconv.FormatInt(tableInfo.Columns[0].ID, 10), strconv.FormatInt(tableInfo.Columns[2].ID, 10)}, ",") + rs = tk.MustQuery("select column_ids from mysql.analyze_options where table_id=" + strconv.FormatInt(tableInfo.ID, 10)) + require.Equal(t, 1, len(rs.Rows())) + require.Equal(t, colIDStrsA, rs.Rows()[0][0]) + rs = tk.MustQuery("select column_ids from mysql.analyze_options where table_id=" + strconv.FormatInt(p0.PhysicalID, 10)) + require.Equal(t, 1, len(rs.Rows())) + require.Equal(t, colIDStrsA, rs.Rows()[0][0]) + rs = tk.MustQuery("select column_ids from mysql.analyze_options where table_id=" + strconv.FormatInt(p1.PhysicalID, 10)) + require.Equal(t, 1, len(rs.Rows())) + require.Equal(t, colIDStrsAC, rs.Rows()[0][0]) + + // drop partition + tk.MustExec("alter table t drop partition p1") + is = dom.InfoSchema() // refresh infoschema + require.Nil(t, h.GCStats(is, time.Duration(0))) + rs = tk.MustQuery("select * from mysql.analyze_options where table_id=" + strconv.FormatInt(tableInfo.ID, 10)) + require.Equal(t, 1, len(rs.Rows())) + rs = tk.MustQuery("select * from mysql.analyze_options where table_id=" + strconv.FormatInt(p0.PhysicalID, 10)) + require.Equal(t, 1, len(rs.Rows())) + rs = tk.MustQuery("select * from mysql.analyze_options where table_id=" + strconv.FormatInt(p1.PhysicalID, 10)) + require.Equal(t, 0, len(rs.Rows())) + + // drop table + tk.MustExec("drop table t") + is = dom.InfoSchema() // refresh infoschema + require.Nil(t, h.GCStats(is, time.Duration(0))) + rs = tk.MustQuery("select * from mysql.analyze_options where table_id=" + strconv.FormatInt(tableInfo.ID, 10)) + //require.Equal(t, len(rs.Rows()), 0) TODO + rs = tk.MustQuery("select * from mysql.analyze_options where table_id=" + strconv.FormatInt(p0.PhysicalID, 10)) + require.Equal(t, 0, len(rs.Rows())) +} + +func TestSavedAnalyzeOptionsForMultipleTables(t *testing.T) { + store, dom, clean := testkit.CreateMockStoreAndDomain(t) + defer clean() + tk := testkit.NewTestKit(t, store) + originalVal := tk.MustQuery("select @@tidb_persist_analyze_options").Rows()[0][0].(string) + defer func() { + tk.MustExec(fmt.Sprintf("set global tidb_persist_analyze_options = %v", originalVal)) + }() + tk.MustExec("set global tidb_persist_analyze_options = true") + + tk.MustExec("use test") + tk.MustExec("set @@session.tidb_analyze_version = 2") + tk.MustExec("set @@session.tidb_partition_prune_mode = 'static'") + tk.MustExec("create table t1(a int, b int, c int, primary key(a), key idx(b))") + tk.MustExec("insert into t1 values (1,1,1),(2,1,2),(3,1,3),(4,1,4),(5,1,5),(6,1,6),(7,7,7),(8,8,8),(9,9,9)") + tk.MustExec("create table t2(a int, b int, c int, primary key(a), key idx(b))") + tk.MustExec("insert into t2 values (1,1,1),(2,1,2),(3,1,3),(4,1,4),(5,1,5),(6,1,6),(7,7,7),(8,8,8),(9,9,9)") + + h := dom.StatsHandle() + oriLease := h.Lease() + h.SetLease(1) + defer func() { + h.SetLease(oriLease) + }() + + tk.MustExec("analyze table t1 with 1 topn, 3 buckets") + tk.MustExec("analyze table t2 with 0 topn, 2 buckets") + tk.MustExec("analyze table t1,t2 with 2 topn") + is := dom.InfoSchema() + table1, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t1")) + require.NoError(t, err) + table2, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t2")) + require.NoError(t, err) + tableInfo1 := table1.Meta() + tableInfo2 := table2.Meta() + tblStats1 := h.GetTableStats(tableInfo1) + tblStats2 := h.GetTableStats(tableInfo2) + tbl1Col0 := tblStats1.Columns[tableInfo1.Columns[0].ID] + tbl2Col0 := tblStats2.Columns[tableInfo2.Columns[0].ID] + require.Equal(t, 3, len(tbl1Col0.Buckets)) + require.Equal(t, 2, len(tbl2Col0.Buckets)) + rs := tk.MustQuery("select buckets,topn from mysql.analyze_options where table_id=" + strconv.FormatInt(tableInfo1.ID, 10)) + require.Equal(t, 1, len(rs.Rows())) + require.Equal(t, "3", rs.Rows()[0][0]) + require.Equal(t, "2", rs.Rows()[0][1]) + rs = tk.MustQuery("select buckets,topn from mysql.analyze_options where table_id=" + strconv.FormatInt(tableInfo2.ID, 10)) + require.Equal(t, 1, len(rs.Rows())) + require.Equal(t, "2", rs.Rows()[0][0]) + require.Equal(t, "2", rs.Rows()[0][1]) +} + +func TestSavedAnalyzeColumnOptions(t *testing.T) { + store, dom, clean := testkit.CreateMockStoreAndDomain(t) + defer clean() + tk := testkit.NewTestKit(t, store) + originalVal1 := tk.MustQuery("select @@tidb_persist_analyze_options").Rows()[0][0].(string) + defer func() { + tk.MustExec(fmt.Sprintf("set global tidb_persist_analyze_options = %v", originalVal1)) + }() + tk.MustExec("set global tidb_persist_analyze_options = true") + originalVal2 := tk.MustQuery("select @@tidb_auto_analyze_ratio").Rows()[0][0].(string) + defer func() { + tk.MustExec(fmt.Sprintf("set global tidb_auto_analyze_ratio = %v", originalVal2)) + }() + tk.MustExec("set global tidb_auto_analyze_ratio = 0.01") + originalVal3 := handle.AutoAnalyzeMinCnt + defer func() { + handle.AutoAnalyzeMinCnt = originalVal3 + }() + handle.AutoAnalyzeMinCnt = 0 + originalVal4 := tk.MustQuery("select @@tidb_enable_column_tracking").Rows()[0][0].(string) + defer func() { + tk.MustExec(fmt.Sprintf("set global tidb_enable_column_tracking = %v", originalVal4)) + }() + tk.MustExec("set global tidb_enable_column_tracking = 1") + + tk.MustExec("use test") + tk.MustExec("set @@session.tidb_analyze_version = 2") + tk.MustExec("create table t(a int, b int, c int)") + tk.MustExec("insert into t values (1,1,1),(2,2,2),(3,3,3),(4,4,4)") + + h := dom.StatsHandle() + oriLease := h.Lease() + h.SetLease(1) + defer func() { + h.SetLease(oriLease) + }() + is := dom.InfoSchema() + tbl, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) + require.NoError(t, err) + tblInfo := tbl.Meta() + tk.MustExec("select * from t where b > 1") + require.NoError(t, h.DumpColStatsUsageToKV()) + tk.MustExec("analyze table t predicate columns") + require.NoError(t, h.LoadNeededHistograms()) + tblStats := h.GetTableStats(tblInfo) + lastVersion := tblStats.Version + // column b is analyzed + require.Greater(t, lastVersion, tblStats.Columns[tblInfo.Columns[0].ID].LastUpdateVersion) + require.Equal(t, lastVersion, tblStats.Columns[tblInfo.Columns[1].ID].LastUpdateVersion) + require.Greater(t, lastVersion, tblStats.Columns[tblInfo.Columns[2].ID].LastUpdateVersion) + tk.MustQuery(fmt.Sprintf("select column_choice, column_ids from mysql.analyze_options where table_id = %v", tblInfo.ID)).Check(testkit.Rows("PREDICATE ")) + + tk.MustExec("select * from t where c > 1") + require.NoError(t, h.DumpColStatsUsageToKV()) + // manually analyze uses the saved option(predicate columns). + tk.MustExec("analyze table t") + require.NoError(t, h.LoadNeededHistograms()) + tblStats = h.GetTableStats(tblInfo) + require.Less(t, lastVersion, tblStats.Version) + lastVersion = tblStats.Version + // column b, c are analyzed + require.Greater(t, lastVersion, tblStats.Columns[tblInfo.Columns[0].ID].LastUpdateVersion) + require.Equal(t, lastVersion, tblStats.Columns[tblInfo.Columns[1].ID].LastUpdateVersion) + require.Equal(t, lastVersion, tblStats.Columns[tblInfo.Columns[2].ID].LastUpdateVersion) + + tk.MustExec("insert into t values (5,5,5),(6,6,6)") + require.Nil(t, h.DumpStatsDeltaToKV(handle.DumpAll)) + require.Nil(t, h.Update(is)) + // auto analyze uses the saved option(predicate columns). + h.HandleAutoAnalyze(is) + tblStats = h.GetTableStats(tblInfo) + require.Less(t, lastVersion, tblStats.Version) + lastVersion = tblStats.Version + // column b, c are analyzed + require.Greater(t, lastVersion, tblStats.Columns[tblInfo.Columns[0].ID].LastUpdateVersion) + require.Equal(t, lastVersion, tblStats.Columns[tblInfo.Columns[1].ID].LastUpdateVersion) + require.Equal(t, lastVersion, tblStats.Columns[tblInfo.Columns[2].ID].LastUpdateVersion) + + tk.MustExec("analyze table t columns a") + tblStats = h.GetTableStats(tblInfo) + require.Less(t, lastVersion, tblStats.Version) + lastVersion = tblStats.Version + // column a is analyzed + require.Equal(t, lastVersion, tblStats.Columns[tblInfo.Columns[0].ID].LastUpdateVersion) + require.Greater(t, lastVersion, tblStats.Columns[tblInfo.Columns[1].ID].LastUpdateVersion) + require.Greater(t, lastVersion, tblStats.Columns[tblInfo.Columns[2].ID].LastUpdateVersion) + tk.MustQuery(fmt.Sprintf("select column_choice, column_ids from mysql.analyze_options where table_id = %v", tblInfo.ID)).Check(testkit.Rows(fmt.Sprintf("LIST %v", tblInfo.Columns[0].ID))) + + tk.MustExec("analyze table t all columns") + tblStats = h.GetTableStats(tblInfo) + require.Less(t, lastVersion, tblStats.Version) + lastVersion = tblStats.Version + // column a, b, c are analyzed + require.Equal(t, lastVersion, tblStats.Columns[tblInfo.Columns[0].ID].LastUpdateVersion) + require.Equal(t, lastVersion, tblStats.Columns[tblInfo.Columns[1].ID].LastUpdateVersion) + require.Equal(t, lastVersion, tblStats.Columns[tblInfo.Columns[2].ID].LastUpdateVersion) + tk.MustQuery(fmt.Sprintf("select column_choice, column_ids from mysql.analyze_options where table_id = %v", tblInfo.ID)).Check(testkit.Rows("ALL ")) +} + +func TestAnalyzeColumnsWithPrimaryKey(t *testing.T) { + for _, val := range []model.ColumnChoice{model.ColumnList, model.PredicateColumns} { + func(choice model.ColumnChoice) { + store, dom, clean := testkit.CreateMockStoreAndDomain(t) + defer clean() + + tk := testkit.NewTestKit(t, store) + h := dom.StatsHandle() + tk.MustExec("use test") + tk.MustExec("drop table if exists t") + tk.MustExec("set @@tidb_analyze_version = 2") + tk.MustExec("create table t (a int, b int, c int primary key)") + tk.MustExec("insert into t values (1,1,1), (1,1,2), (2,2,3), (2,2,4), (3,3,5), (4,3,6), (5,4,7), (6,4,8), (null,null,9)") + require.NoError(t, h.DumpStatsDeltaToKV(handle.DumpAll)) + + is := dom.InfoSchema() + tbl, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) + require.NoError(t, err) + tblID := tbl.Meta().ID + + switch choice { + case model.ColumnList: + tk.MustExec("analyze table t columns a with 2 topn, 2 buckets") + tk.MustQuery("show warnings").Sort().Check(testkit.Rows( + "Note 1105 Analyze use auto adjusted sample rate 1.000000 for table test.t", + "Warning 1105 Columns c are missing in ANALYZE but their stats are needed for calculating stats for indexes/primary key/extended stats", + )) + case model.PredicateColumns: + originalVal := tk.MustQuery("select @@tidb_enable_column_tracking").Rows()[0][0].(string) + defer func() { + tk.MustExec(fmt.Sprintf("set global tidb_enable_column_tracking = %v", originalVal)) + }() + tk.MustExec("set global tidb_enable_column_tracking = 1") + tk.MustExec("select * from t where a > 1") + require.NoError(t, h.DumpColStatsUsageToKV()) + rows := tk.MustQuery("show column_stats_usage where db_name = 'test' and table_name = 't' and last_used_at is not null").Rows() + require.Equal(t, 1, len(rows)) + require.Equal(t, "a", rows[0][3]) + tk.MustExec("analyze table t predicate columns with 2 topn, 2 buckets") + } + + rows := tk.MustQuery("show column_stats_usage where db_name = 'test' and table_name = 't' and last_analyzed_at is not null").Sort().Rows() + require.Equal(t, 2, len(rows)) + require.Equal(t, "a", rows[0][3]) + require.Equal(t, "c", rows[1][3]) + + tk.MustQuery(fmt.Sprintf("select modify_count, count from mysql.stats_meta where table_id = %d", tblID)).Sort().Check( + testkit.Rows("0 9")) + tk.MustQuery("show stats_topn where db_name = 'test' and table_name = 't'").Sort().Check( + // db, tbl, part, col, is_idx, value, count + testkit.Rows("test t a 0 1 2", + "test t a 0 2 2", + "test t c 0 1 1", + "test t c 0 2 1")) + tk.MustQuery(fmt.Sprintf("select is_index, hist_id, distinct_count, null_count, tot_col_size, stats_ver, truncate(correlation,2) from mysql.stats_histograms where table_id = %d", tblID)).Sort().Check( + testkit.Rows("0 1 6 1 8 2 1", + "0 2 0 0 8 0 0", // column b is not analyzed + "0 3 9 0 9 2 1", + )) + tk.MustQuery("show stats_buckets where db_name = 'test' and table_name = 't'").Sort().Check( + // db, tbl, part, col, is_index, bucket_id, count, repeats, lower, upper, ndv + testkit.Rows("test t a 0 0 3 1 3 5 0", + "test t a 0 1 4 1 6 6 0", + "test t c 0 0 4 1 3 6 0", + "test t c 0 1 7 1 7 9 0")) + }(val) + } +} + +func TestAnalyzeColumnsWithIndex(t *testing.T) { + for _, val := range []model.ColumnChoice{model.ColumnList, model.PredicateColumns} { + func(choice model.ColumnChoice) { + store, dom, clean := testkit.CreateMockStoreAndDomain(t) + defer clean() + + tk := testkit.NewTestKit(t, store) + h := dom.StatsHandle() + tk.MustExec("use test") + tk.MustExec("drop table if exists t") + tk.MustExec("set @@tidb_analyze_version = 2") + tk.MustExec("create table t (a int, b int, c int, d int, index idx_b_d(b, d))") + tk.MustExec("insert into t values (1,1,null,1), (2,1,9,1), (1,1,8,1), (2,2,7,2), (1,3,7,3), (2,4,6,4), (1,4,6,5), (2,4,6,5), (1,5,6,5)") + require.NoError(t, h.DumpStatsDeltaToKV(handle.DumpAll)) + + is := dom.InfoSchema() + tbl, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) + require.NoError(t, err) + tblID := tbl.Meta().ID + + switch choice { + case model.ColumnList: + tk.MustExec("analyze table t columns c with 2 topn, 2 buckets") + tk.MustQuery("show warnings").Sort().Check(testkit.Rows( + "Note 1105 Analyze use auto adjusted sample rate 1.000000 for table test.t", + "Warning 1105 Columns b,d are missing in ANALYZE but their stats are needed for calculating stats for indexes/primary key/extended stats", + )) + case model.PredicateColumns: + originalVal := tk.MustQuery("select @@tidb_enable_column_tracking").Rows()[0][0].(string) + defer func() { + tk.MustExec(fmt.Sprintf("set global tidb_enable_column_tracking = %v", originalVal)) + }() + tk.MustExec("set global tidb_enable_column_tracking = 1") + tk.MustExec("select * from t where c > 1") + require.NoError(t, h.DumpColStatsUsageToKV()) + rows := tk.MustQuery("show column_stats_usage where db_name = 'test' and table_name = 't' and last_used_at is not null").Rows() + require.Equal(t, 1, len(rows)) + require.Equal(t, "c", rows[0][3]) + tk.MustExec("analyze table t predicate columns with 2 topn, 2 buckets") + } + + rows := tk.MustQuery("show column_stats_usage where db_name = 'test' and table_name = 't' and last_analyzed_at is not null").Sort().Rows() + require.Equal(t, 3, len(rows)) + require.Equal(t, "b", rows[0][3]) + require.Equal(t, "c", rows[1][3]) + require.Equal(t, "d", rows[2][3]) + + tk.MustQuery(fmt.Sprintf("select modify_count, count from mysql.stats_meta where table_id = %d", tblID)).Sort().Check( + testkit.Rows("0 9")) + tk.MustQuery("show stats_topn where db_name = 'test' and table_name = 't'").Sort().Check( + // db, tbl, part, col, is_idx, value, count + testkit.Rows("test t b 0 1 3", + "test t b 0 4 3", + "test t c 0 6 4", + "test t c 0 7 2", + "test t d 0 1 3", + "test t d 0 5 3", + "test t idx_b_d 1 (1, 1) 3", + "test t idx_b_d 1 (4, 5) 2")) + tk.MustQuery(fmt.Sprintf("select is_index, hist_id, distinct_count, null_count, tot_col_size, stats_ver, truncate(correlation,2) from mysql.stats_histograms where table_id = %d", tblID)).Sort().Check( + testkit.Rows("0 1 0 0 9 0 0", // column a is not analyzed + "0 2 5 0 9 2 1", + "0 3 4 1 8 2 -0.07", + "0 4 5 0 9 2 1", + "1 1 6 0 18 2 0")) + tk.MustQuery("show stats_buckets where db_name = 'test' and table_name = 't'").Sort().Check( + // db, tbl, part, col, is_index, bucket_id, count, repeats, lower, upper, ndv + testkit.Rows("test t b 0 0 2 1 2 3 0", + "test t b 0 1 3 1 5 5 0", + "test t c 0 0 2 1 8 9 0", + "test t d 0 0 2 1 2 3 0", + "test t d 0 1 3 1 4 4 0", + "test t idx_b_d 1 0 3 1 (2, 2) (4, 4) 0", + "test t idx_b_d 1 1 4 1 (5, 5) (5, 5) 0")) + }(val) + } +} + +func TestAnalyzeColumnsWithClusteredIndex(t *testing.T) { + for _, val := range []model.ColumnChoice{model.ColumnList, model.PredicateColumns} { + func(choice model.ColumnChoice) { + store, dom, clean := testkit.CreateMockStoreAndDomain(t) + defer clean() + + tk := testkit.NewTestKit(t, store) + h := dom.StatsHandle() + tk.MustExec("use test") + tk.MustExec("drop table if exists t") + tk.MustExec("set @@tidb_analyze_version = 2") + tk.MustExec("create table t (a int, b int, c int, d int, primary key(b, d) clustered)") + tk.MustExec("insert into t values (1,1,null,1), (2,2,9,2), (1,3,8,3), (2,4,7,4), (1,5,7,5), (2,6,6,6), (1,7,6,7), (2,8,6,8), (1,9,6,9)") + require.NoError(t, h.DumpStatsDeltaToKV(handle.DumpAll)) + + is := dom.InfoSchema() + tbl, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) + require.NoError(t, err) + tblID := tbl.Meta().ID + + switch choice { + case model.ColumnList: + tk.MustExec("analyze table t columns c with 2 topn, 2 buckets") + tk.MustQuery("show warnings").Sort().Check(testkit.Rows( + "Note 1105 Analyze use auto adjusted sample rate 1.000000 for table test.t", + "Warning 1105 Columns b,d are missing in ANALYZE but their stats are needed for calculating stats for indexes/primary key/extended stats", + )) + case model.PredicateColumns: + originalVal := tk.MustQuery("select @@tidb_enable_column_tracking").Rows()[0][0].(string) + defer func() { + tk.MustExec(fmt.Sprintf("set global tidb_enable_column_tracking = %v", originalVal)) + }() + tk.MustExec("set global tidb_enable_column_tracking = 1") + tk.MustExec("select * from t where c > 1") + require.NoError(t, h.DumpColStatsUsageToKV()) + rows := tk.MustQuery("show column_stats_usage where db_name = 'test' and table_name = 't' and last_used_at is not null").Rows() + require.Equal(t, 1, len(rows)) + require.Equal(t, "c", rows[0][3]) + tk.MustExec("analyze table t predicate columns with 2 topn, 2 buckets") + } + + rows := tk.MustQuery("show column_stats_usage where db_name = 'test' and table_name = 't' and last_analyzed_at is not null").Sort().Rows() + require.Equal(t, 3, len(rows)) + require.Equal(t, "b", rows[0][3]) + require.Equal(t, "c", rows[1][3]) + require.Equal(t, "d", rows[2][3]) + + tk.MustQuery(fmt.Sprintf("select modify_count, count from mysql.stats_meta where table_id = %d", tblID)).Sort().Check( + testkit.Rows("0 9")) + tk.MustQuery("show stats_topn where db_name = 'test' and table_name = 't'").Sort().Check( + // db, tbl, part, col, is_idx, value, count + testkit.Rows("test t PRIMARY 1 (1, 1) 1", + "test t PRIMARY 1 (2, 2) 1", + "test t b 0 1 1", + "test t b 0 2 1", + "test t c 0 6 4", + "test t c 0 7 2", + "test t d 0 1 1", + "test t d 0 2 1")) + tk.MustQuery(fmt.Sprintf("select is_index, hist_id, distinct_count, null_count, tot_col_size, stats_ver, truncate(correlation,2) from mysql.stats_histograms where table_id = %d", tblID)).Sort().Check( + testkit.Rows("0 1 0 0 9 0 0", // column a is not analyzed + "0 2 9 0 9 2 1", + "0 3 4 1 8 2 -0.07", + "0 4 9 0 9 2 1", + "1 1 9 0 18 2 0")) + tk.MustQuery("show stats_buckets where db_name = 'test' and table_name = 't'").Sort().Check( + // db, tbl, part, col, is_index, bucket_id, count, repeats, lower, upper, ndv + testkit.Rows("test t PRIMARY 1 0 4 1 (3, 3) (6, 6) 0", + "test t PRIMARY 1 1 7 1 (7, 7) (9, 9) 0", + "test t b 0 0 4 1 3 6 0", + "test t b 0 1 7 1 7 9 0", + "test t c 0 0 2 1 8 9 0", + "test t d 0 0 4 1 3 6 0", + "test t d 0 1 7 1 7 9 0")) + }(val) + } +} + +func TestAnalyzeColumnsWithDynamicPartitionTable(t *testing.T) { + for _, val := range []model.ColumnChoice{model.ColumnList, model.PredicateColumns} { + func(choice model.ColumnChoice) { + store, dom, clean := testkit.CreateMockStoreAndDomain(t) + defer clean() + + tk := testkit.NewTestKit(t, store) + h := dom.StatsHandle() + tk.MustExec("use test") + tk.MustExec("drop table if exists t") + tk.MustExec("set @@tidb_analyze_version = 2") + tk.MustExec("set @@tidb_partition_prune_mode = 'dynamic'") + tk.MustExec("create table t (a int, b int, c int, index idx(c)) partition by range (a) (partition p0 values less than (10), partition p1 values less than maxvalue)") + tk.MustExec("insert into t values (1,2,1), (2,4,1), (3,6,1), (4,8,2), (4,8,2), (5,10,3), (5,10,4), (5,10,5), (null,null,6), (11,22,7), (12,24,8), (13,26,9), (14,28,10), (15,30,11), (16,32,12), (16,32,13), (16,32,13), (16,32,14), (17,34,14), (17,34,14)") + require.NoError(t, h.DumpStatsDeltaToKV(handle.DumpAll)) + + is := dom.InfoSchema() + tbl, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) + require.NoError(t, err) + tblID := tbl.Meta().ID + defs := tbl.Meta().Partition.Definitions + p0ID := defs[0].ID + p1ID := defs[1].ID + + switch choice { + case model.ColumnList: + tk.MustExec("analyze table t columns a with 2 topn, 2 buckets") + tk.MustQuery("show warnings").Sort().Check(testkit.Rows( + "Note 1105 Analyze use auto adjusted sample rate 1.000000 for table test.t's partition p0", + "Note 1105 Analyze use auto adjusted sample rate 1.000000 for table test.t's partition p1", + "Warning 1105 Columns c are missing in ANALYZE but their stats are needed for calculating stats for indexes/primary key/extended stats", + )) + case model.PredicateColumns: + originalVal := tk.MustQuery("select @@tidb_enable_column_tracking").Rows()[0][0].(string) + defer func() { + tk.MustExec(fmt.Sprintf("set global tidb_enable_column_tracking = %v", originalVal)) + }() + tk.MustExec("set global tidb_enable_column_tracking = 1") + tk.MustExec("select * from t where a < 1") + require.NoError(t, h.DumpColStatsUsageToKV()) + rows := tk.MustQuery("show column_stats_usage where db_name = 'test' and table_name = 't' and last_used_at is not null").Rows() + require.Equal(t, 1, len(rows)) + require.Equal(t, []interface{}{"test", "t", "global", "a"}, rows[0][:4]) + tk.MustExec("analyze table t predicate columns with 2 topn, 2 buckets") + } + + rows := tk.MustQuery("show column_stats_usage where db_name = 'test' and table_name = 't' and last_analyzed_at is not null").Sort().Rows() + require.Equal(t, 6, len(rows)) + require.Equal(t, []interface{}{"test", "t", "global", "a"}, rows[0][:4]) + require.Equal(t, []interface{}{"test", "t", "global", "c"}, rows[1][:4]) + require.Equal(t, []interface{}{"test", "t", "p0", "a"}, rows[2][:4]) + require.Equal(t, []interface{}{"test", "t", "p0", "c"}, rows[3][:4]) + require.Equal(t, []interface{}{"test", "t", "p1", "a"}, rows[4][:4]) + require.Equal(t, []interface{}{"test", "t", "p1", "c"}, rows[5][:4]) + + rows = tk.MustQuery("show stats_meta where db_name = 'test' and table_name = 't'").Sort().Rows() + require.Equal(t, 3, len(rows)) + require.Equal(t, []interface{}{"test", "t", "global", "0", "20"}, append(rows[0][:3], rows[0][4:]...)) + require.Equal(t, []interface{}{"test", "t", "p0", "0", "9"}, append(rows[1][:3], rows[1][4:]...)) + require.Equal(t, []interface{}{"test", "t", "p1", "0", "11"}, append(rows[2][:3], rows[2][4:]...)) + + tk.MustQuery("show stats_topn where db_name = 'test' and table_name = 't' and is_index = 0").Sort().Check( + // db, tbl, part, col, is_idx, value, count + testkit.Rows("test t global a 0 16 4", + "test t global a 0 5 3", + "test t global c 0 1 3", + "test t global c 0 14 3", + "test t p0 a 0 4 2", + "test t p0 a 0 5 3", + "test t p0 c 0 1 3", + "test t p0 c 0 2 2", + "test t p1 a 0 16 4", + "test t p1 a 0 17 2", + "test t p1 c 0 13 2", + "test t p1 c 0 14 3")) + + tk.MustQuery("show stats_topn where db_name = 'test' and table_name = 't' and is_index = 1").Sort().Check( + // db, tbl, part, col, is_idx, value, count + testkit.Rows("test t global idx 1 1 3", + "test t global idx 1 14 3", + "test t p0 idx 1 1 3", + "test t p0 idx 1 2 2", + "test t p1 idx 1 13 2", + "test t p1 idx 1 14 3")) + + tk.MustQuery("show stats_buckets where db_name = 'test' and table_name = 't' and is_index = 0").Sort().Check( + // db, tbl, part, col, is_index, bucket_id, count, repeats, lower, upper, ndv + testkit.Rows("test t global a 0 0 5 2 1 4 0", + "test t global a 0 1 12 2 17 17 0", + "test t global c 0 0 6 1 2 6 0", + "test t global c 0 1 14 2 13 13 0", + "test t p0 a 0 0 2 1 1 2 0", + "test t p0 a 0 1 3 1 3 3 0", + "test t p0 c 0 0 3 1 3 5 0", + "test t p0 c 0 1 4 1 6 6 0", + "test t p1 a 0 0 3 1 11 13 0", + "test t p1 a 0 1 5 1 14 15 0", + "test t p1 c 0 0 4 1 7 10 0", + "test t p1 c 0 1 6 1 11 12 0")) + + tk.MustQuery("show stats_buckets where db_name = 'test' and table_name = 't' and is_index = 1").Sort().Check( + // db, tbl, part, col, is_index, bucket_id, count, repeats, lower, upper, ndv + testkit.Rows("test t global idx 1 0 6 1 2 6 0", + "test t global idx 1 1 14 2 13 13 0", + "test t p0 idx 1 0 3 1 3 5 0", + "test t p0 idx 1 1 4 1 6 6 0", + "test t p1 idx 1 0 4 1 7 10 0", + "test t p1 idx 1 1 6 1 11 12 0")) + + tk.MustQuery("select table_id, is_index, hist_id, distinct_count, null_count, tot_col_size, stats_ver, truncate(correlation,2) from mysql.stats_histograms order by table_id, is_index, hist_id asc").Check( + testkit.Rows(fmt.Sprintf("%d 0 1 12 1 19 2 0", tblID), // global, a + fmt.Sprintf("%d 0 3 14 0 20 2 0", tblID), // global, c + fmt.Sprintf("%d 1 1 14 0 0 2 0", tblID), // global, idx + fmt.Sprintf("%d 0 1 5 1 8 2 1", p0ID), // p0, a + fmt.Sprintf("%d 0 2 0 0 8 0 0", p0ID), // p0, b, not analyzed + fmt.Sprintf("%d 0 3 6 0 9 2 1", p0ID), // p0, c + fmt.Sprintf("%d 1 1 6 0 9 2 0", p0ID), // p0, idx + fmt.Sprintf("%d 0 1 7 0 11 2 1", p1ID), // p1, a + fmt.Sprintf("%d 0 2 0 0 11 0 0", p1ID), // p1, b, not analyzed + fmt.Sprintf("%d 0 3 8 0 11 2 1", p1ID), // p1, c + fmt.Sprintf("%d 1 1 8 0 11 2 0", p1ID), // p1, idx + )) + }(val) + } +} + +func TestIssue34228(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + + tk := testkit.NewTestKit(t, store) + tk.MustExec(`USE test`) + tk.MustExec(`DROP TABLE IF EXISTS Issue34228`) + tk.MustExec(`CREATE TABLE Issue34228 (id bigint NOT NULL, dt datetime NOT NULL) PARTITION BY RANGE COLUMNS(dt) (PARTITION p202201 VALUES LESS THAN ("2022-02-01"), PARTITION p202202 VALUES LESS THAN ("2022-03-01"))`) + tk.MustExec(`INSERT INTO Issue34228 VALUES (1, '2022-02-01 00:00:02'), (2, '2022-02-01 00:00:02')`) + tk.MustExec(`SET @@global.tidb_analyze_version = 1`) + tk.MustExec(`SET @@session.tidb_partition_prune_mode = 'static'`) + tk.MustExec(`ANALYZE TABLE Issue34228`) + tk.MustExec(`SET @@session.tidb_partition_prune_mode = 'dynamic'`) + tk.MustExec(`ANALYZE TABLE Issue34228`) + tk.MustQuery(`SELECT * FROM Issue34228`).Sort().Check(testkit.Rows("1 2022-02-01 00:00:02", "2 2022-02-01 00:00:02")) + // Needs a second run to hit the issue + tk2 := testkit.NewTestKit(t, store) + tk2.MustExec(`USE test`) + tk2.MustExec(`DROP TABLE IF EXISTS Issue34228`) + tk2.MustExec(`CREATE TABLE Issue34228 (id bigint NOT NULL, dt datetime NOT NULL) PARTITION BY RANGE COLUMNS(dt) (PARTITION p202201 VALUES LESS THAN ("2022-02-01"), PARTITION p202202 VALUES LESS THAN ("2022-03-01"))`) + tk2.MustExec(`INSERT INTO Issue34228 VALUES (1, '2022-02-01 00:00:02'), (2, '2022-02-01 00:00:02')`) + tk2.MustExec(`SET @@global.tidb_analyze_version = 1`) + tk2.MustExec(`SET @@session.tidb_partition_prune_mode = 'static'`) + tk2.MustExec(`ANALYZE TABLE Issue34228`) + tk2.MustExec(`SET @@session.tidb_partition_prune_mode = 'dynamic'`) + tk2.MustExec(`ANALYZE TABLE Issue34228`) + tk2.MustQuery(`SELECT * FROM Issue34228`).Sort().Check(testkit.Rows("1 2022-02-01 00:00:02", "2 2022-02-01 00:00:02")) +} + +func TestAnalyzeColumnsWithStaticPartitionTable(t *testing.T) { + for _, val := range []model.ColumnChoice{model.ColumnList, model.PredicateColumns} { + func(choice model.ColumnChoice) { + store, dom, clean := testkit.CreateMockStoreAndDomain(t) + defer clean() + + tk := testkit.NewTestKit(t, store) + h := dom.StatsHandle() + tk.MustExec("use test") + tk.MustExec("drop table if exists t") + tk.MustExec("set @@tidb_analyze_version = 2") + tk.MustExec("set @@tidb_partition_prune_mode = 'static'") + tk.MustExec("create table t (a int, b int, c int, index idx(c)) partition by range (a) (partition p0 values less than (10), partition p1 values less than maxvalue)") + tk.MustExec("insert into t values (1,2,1), (2,4,1), (3,6,1), (4,8,2), (4,8,2), (5,10,3), (5,10,4), (5,10,5), (null,null,6), (11,22,7), (12,24,8), (13,26,9), (14,28,10), (15,30,11), (16,32,12), (16,32,13), (16,32,13), (16,32,14), (17,34,14), (17,34,14)") + require.NoError(t, h.DumpStatsDeltaToKV(handle.DumpAll)) + + is := dom.InfoSchema() + tbl, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) + require.NoError(t, err) + defs := tbl.Meta().Partition.Definitions + p0ID := defs[0].ID + p1ID := defs[1].ID + + switch choice { + case model.ColumnList: + tk.MustExec("analyze table t columns a with 2 topn, 2 buckets") + tk.MustQuery("show warnings").Sort().Check(testkit.Rows( + "Note 1105 Analyze use auto adjusted sample rate 1.000000 for table test.t's partition p0", + "Note 1105 Analyze use auto adjusted sample rate 1.000000 for table test.t's partition p1", + "Warning 1105 Columns c are missing in ANALYZE but their stats are needed for calculating stats for indexes/primary key/extended stats", + )) + case model.PredicateColumns: + originalVal := tk.MustQuery("select @@tidb_enable_column_tracking").Rows()[0][0].(string) + defer func() { + tk.MustExec(fmt.Sprintf("set global tidb_enable_column_tracking = %v", originalVal)) + }() + tk.MustExec("set global tidb_enable_column_tracking = 1") + tk.MustExec("select * from t where a < 1") + require.NoError(t, h.DumpColStatsUsageToKV()) + rows := tk.MustQuery("show column_stats_usage where db_name = 'test' and table_name = 't' and last_used_at is not null").Rows() + require.Equal(t, 1, len(rows)) + require.Equal(t, []interface{}{"test", "t", "global", "a"}, rows[0][:4]) + tk.MustExec("analyze table t predicate columns with 2 topn, 2 buckets") + } + + rows := tk.MustQuery("show column_stats_usage where db_name = 'test' and table_name = 't' and last_analyzed_at is not null").Sort().Rows() + require.Equal(t, 4, len(rows)) + require.Equal(t, []interface{}{"test", "t", "p0", "a"}, rows[0][:4]) + require.Equal(t, []interface{}{"test", "t", "p0", "c"}, rows[1][:4]) + require.Equal(t, []interface{}{"test", "t", "p1", "a"}, rows[2][:4]) + require.Equal(t, []interface{}{"test", "t", "p1", "c"}, rows[3][:4]) + + rows = tk.MustQuery("show stats_meta where db_name = 'test' and table_name = 't'").Sort().Rows() + require.Equal(t, 2, len(rows)) + require.Equal(t, []interface{}{"test", "t", "p0", "0", "9"}, append(rows[0][:3], rows[0][4:]...)) + require.Equal(t, []interface{}{"test", "t", "p1", "0", "11"}, append(rows[1][:3], rows[1][4:]...)) + + tk.MustQuery("show stats_topn where db_name = 'test' and table_name = 't' and is_index = 0").Sort().Check( + // db, tbl, part, col, is_idx, value, count + testkit.Rows("test t p0 a 0 4 2", + "test t p0 a 0 5 3", + "test t p0 c 0 1 3", + "test t p0 c 0 2 2", + "test t p1 a 0 16 4", + "test t p1 a 0 17 2", + "test t p1 c 0 13 2", + "test t p1 c 0 14 3")) + + tk.MustQuery("show stats_topn where db_name = 'test' and table_name = 't' and is_index = 1").Sort().Check( + // db, tbl, part, col, is_idx, value, count + testkit.Rows("test t p0 idx 1 1 3", + "test t p0 idx 1 2 2", + "test t p1 idx 1 13 2", + "test t p1 idx 1 14 3")) + + tk.MustQuery("show stats_buckets where db_name = 'test' and table_name = 't' and is_index = 0").Sort().Check( + // db, tbl, part, col, is_index, bucket_id, count, repeats, lower, upper, ndv + testkit.Rows("test t p0 a 0 0 2 1 1 2 0", + "test t p0 a 0 1 3 1 3 3 0", + "test t p0 c 0 0 3 1 3 5 0", + "test t p0 c 0 1 4 1 6 6 0", + "test t p1 a 0 0 3 1 11 13 0", + "test t p1 a 0 1 5 1 14 15 0", + "test t p1 c 0 0 4 1 7 10 0", + "test t p1 c 0 1 6 1 11 12 0")) + + tk.MustQuery("show stats_buckets where db_name = 'test' and table_name = 't' and is_index = 1").Sort().Check( + // db, tbl, part, col, is_index, bucket_id, count, repeats, lower, upper, ndv + testkit.Rows("test t p0 idx 1 0 3 1 3 5 0", + "test t p0 idx 1 1 4 1 6 6 0", + "test t p1 idx 1 0 4 1 7 10 0", + "test t p1 idx 1 1 6 1 11 12 0")) + + tk.MustQuery("select table_id, is_index, hist_id, distinct_count, null_count, tot_col_size, stats_ver, truncate(correlation,2) from mysql.stats_histograms order by table_id, is_index, hist_id asc").Check( + testkit.Rows(fmt.Sprintf("%d 0 1 5 1 8 2 1", p0ID), // p0, a + fmt.Sprintf("%d 0 2 0 0 8 0 0", p0ID), // p0, b, not analyzed + fmt.Sprintf("%d 0 3 6 0 9 2 1", p0ID), // p0, c + fmt.Sprintf("%d 1 1 6 0 9 2 0", p0ID), // p0, idx + fmt.Sprintf("%d 0 1 7 0 11 2 1", p1ID), // p1, a + fmt.Sprintf("%d 0 2 0 0 11 0 0", p1ID), // p1, b, not analyzed + fmt.Sprintf("%d 0 3 8 0 11 2 1", p1ID), // p1, c + fmt.Sprintf("%d 1 1 8 0 11 2 0", p1ID), // p1, idx + )) + }(val) + } +} + +func TestAnalyzeColumnsWithExtendedStats(t *testing.T) { + for _, val := range []model.ColumnChoice{model.ColumnList, model.PredicateColumns} { + func(choice model.ColumnChoice) { + store, dom, clean := testkit.CreateMockStoreAndDomain(t) + defer clean() + + tk := testkit.NewTestKit(t, store) + h := dom.StatsHandle() + tk.MustExec("use test") + tk.MustExec("drop table if exists t") + tk.MustExec("set @@tidb_analyze_version = 2") + tk.MustExec("set @@tidb_enable_extended_stats = on") + tk.MustExec("create table t (a int, b int, c int)") + tk.MustExec("alter table t add stats_extended s1 correlation(b,c)") + tk.MustExec("insert into t values (5,1,1), (4,2,2), (3,3,3), (2,4,4), (1,5,5)") + require.NoError(t, h.DumpStatsDeltaToKV(handle.DumpAll)) + + is := dom.InfoSchema() + tbl, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) + require.NoError(t, err) + tblID := tbl.Meta().ID + + switch choice { + case model.ColumnList: + tk.MustExec("analyze table t columns b with 2 topn, 2 buckets") + tk.MustQuery("show warnings").Sort().Check(testkit.Rows( + "Note 1105 Analyze use auto adjusted sample rate 1.000000 for table test.t", + "Warning 1105 Columns c are missing in ANALYZE but their stats are needed for calculating stats for indexes/primary key/extended stats", + )) + case model.PredicateColumns: + originalVal := tk.MustQuery("select @@tidb_enable_column_tracking").Rows()[0][0].(string) + defer func() { + tk.MustExec(fmt.Sprintf("set global tidb_enable_column_tracking = %v", originalVal)) + }() + tk.MustExec("set global tidb_enable_column_tracking = 1") + tk.MustExec("select * from t where b > 1") + require.NoError(t, h.DumpColStatsUsageToKV()) + rows := tk.MustQuery("show column_stats_usage where db_name = 'test' and table_name = 't' and last_used_at is not null").Rows() + require.Equal(t, 1, len(rows)) + require.Equal(t, "b", rows[0][3]) + tk.MustExec("analyze table t predicate columns with 2 topn, 2 buckets") + } + rows := tk.MustQuery("show column_stats_usage where db_name = 'test' and table_name = 't' and last_analyzed_at is not null").Sort().Rows() + require.Equal(t, 2, len(rows)) + require.Equal(t, "b", rows[0][3]) + require.Equal(t, "c", rows[1][3]) + + tk.MustQuery(fmt.Sprintf("select modify_count, count from mysql.stats_meta where table_id = %d", tblID)).Sort().Check( + testkit.Rows("0 5")) + tk.MustQuery("show stats_topn where db_name = 'test' and table_name = 't'").Sort().Check( + // db, tbl, part, col, is_idx, value, count + testkit.Rows("test t b 0 1 1", + "test t b 0 2 1", + "test t c 0 1 1", + "test t c 0 2 1")) + tk.MustQuery(fmt.Sprintf("select is_index, hist_id, distinct_count, null_count, tot_col_size, stats_ver, truncate(correlation,2) from mysql.stats_histograms where table_id = %d", tblID)).Sort().Check( + testkit.Rows("0 1 0 0 5 0 0", // column a is not analyzed + "0 2 5 0 5 2 1", + "0 3 5 0 5 2 1", + )) + tk.MustQuery("show stats_buckets where db_name = 'test' and table_name = 't'").Sort().Check( + // db, tbl, part, col, is_index, bucket_id, count, repeats, lower, upper, ndv + testkit.Rows("test t b 0 0 2 1 3 4 0", + "test t b 0 1 3 1 5 5 0", + "test t c 0 0 2 1 3 4 0", + "test t c 0 1 3 1 5 5 0")) + rows = tk.MustQuery("show stats_extended where db_name = 'test' and table_name = 't'").Rows() + require.Equal(t, 1, len(rows)) + require.Equal(t, []interface{}{"test", "t", "s1", "[b,c]", "correlation", "1.000000"}, rows[0][:len(rows[0])-1]) + }(val) + } +} + +func TestAnalyzeColumnsWithVirtualColumnIndex(t *testing.T) { + for _, val := range []model.ColumnChoice{model.ColumnList, model.PredicateColumns} { + func(choice model.ColumnChoice) { + store, dom, clean := testkit.CreateMockStoreAndDomain(t) + defer clean() + + tk := testkit.NewTestKit(t, store) + h := dom.StatsHandle() + tk.MustExec("use test") + tk.MustExec("drop table if exists t") + tk.MustExec("set @@tidb_analyze_version = 2") + tk.MustExec("create table t (a int, b int, c int as (b+1), index idx(c))") + tk.MustExec("insert into t (a,b) values (1,1), (2,2), (3,3), (4,4), (5,4), (6,5), (7,5), (8,5), (null,null)") + require.NoError(t, h.DumpStatsDeltaToKV(handle.DumpAll)) + + is := dom.InfoSchema() + tbl, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) + require.NoError(t, err) + tblID := tbl.Meta().ID + + switch choice { + case model.ColumnList: + tk.MustExec("analyze table t columns b with 2 topn, 2 buckets") + tk.MustQuery("show warnings").Sort().Check(testkit.Rows( + "Note 1105 Analyze use auto adjusted sample rate 1.000000 for table test.t", + "Warning 1105 Columns c are missing in ANALYZE but their stats are needed for calculating stats for indexes/primary key/extended stats", + )) + case model.PredicateColumns: + originalVal := tk.MustQuery("select @@tidb_enable_column_tracking").Rows()[0][0].(string) + defer func() { + tk.MustExec(fmt.Sprintf("set global tidb_enable_column_tracking = %v", originalVal)) + }() + tk.MustExec("set global tidb_enable_column_tracking = 1") + tk.MustExec("select * from t where b > 1") + require.NoError(t, h.DumpColStatsUsageToKV()) + rows := tk.MustQuery("show column_stats_usage where db_name = 'test' and table_name = 't' and last_used_at is not null").Rows() + require.Equal(t, 1, len(rows)) + require.Equal(t, "b", rows[0][3]) + tk.MustExec("analyze table t predicate columns with 2 topn, 2 buckets") + } + // virtual column c is skipped when dumping stats into disk, so only the stats of column b are updated + rows := tk.MustQuery("show column_stats_usage where db_name = 'test' and table_name = 't' and last_analyzed_at is not null").Rows() + require.Equal(t, 1, len(rows)) + require.Equal(t, "b", rows[0][3]) + + tk.MustQuery(fmt.Sprintf("select modify_count, count from mysql.stats_meta where table_id = %d", tblID)).Sort().Check( + testkit.Rows("0 9")) + tk.MustQuery("show stats_topn where db_name = 'test' and table_name = 't'").Sort().Check( + // db, tbl, part, col, is_idx, value, count + testkit.Rows("test t b 0 4 2", + "test t b 0 5 3", + "test t idx 1 5 2", + "test t idx 1 6 3")) + tk.MustQuery(fmt.Sprintf("select is_index, hist_id, distinct_count, null_count, stats_ver, truncate(correlation,2) from mysql.stats_histograms where table_id = %d", tblID)).Sort().Check( + testkit.Rows("0 1 0 0 0 0", // column a is not analyzed + "0 2 5 1 2 1", + "0 3 0 0 0 0", // column c is not analyzed + "1 1 5 1 2 0")) + tk.MustQuery("show stats_buckets where db_name = 'test' and table_name = 't'").Sort().Check( + // db, tbl, part, col, is_index, bucket_id, count, repeats, lower, upper, ndv + testkit.Rows("test t b 0 0 2 1 1 2 0", + "test t b 0 1 3 1 3 3 0", + "test t idx 1 0 2 1 2 3 0", + "test t idx 1 1 3 1 4 4 0")) + }(val) + } +} + +func TestAnalyzeColumnsAfterAnalyzeAll(t *testing.T) { + for _, val := range []model.ColumnChoice{model.ColumnList, model.PredicateColumns} { + func(choice model.ColumnChoice) { + store, dom, clean := testkit.CreateMockStoreAndDomain(t) + defer clean() + + tk := testkit.NewTestKit(t, store) + h := dom.StatsHandle() + tk.MustExec("use test") + tk.MustExec("drop table if exists t") + tk.MustExec("set @@tidb_analyze_version = 2") + tk.MustExec("create table t (a int, b int)") + tk.MustExec("insert into t (a,b) values (1,1), (1,1), (2,2), (2,2), (3,3), (4,4)") + require.NoError(t, h.DumpStatsDeltaToKV(handle.DumpAll)) + + is := dom.InfoSchema() + tbl, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) + require.NoError(t, err) + tblID := tbl.Meta().ID + + tk.MustExec("analyze table t with 2 topn, 2 buckets") + tk.MustQuery(fmt.Sprintf("select modify_count, count from mysql.stats_meta where table_id = %d", tblID)).Sort().Check( + testkit.Rows("0 6")) + tk.MustQuery("show stats_topn where db_name = 'test' and table_name = 't'").Sort().Check( + // db, tbl, part, col, is_idx, value, count + testkit.Rows("test t a 0 1 2", + "test t a 0 2 2", + "test t b 0 1 2", + "test t b 0 2 2")) + tk.MustQuery(fmt.Sprintf("select is_index, hist_id, distinct_count, null_count, tot_col_size, stats_ver, truncate(correlation,2) from mysql.stats_histograms where table_id = %d", tblID)).Sort().Check( + testkit.Rows("0 1 4 0 6 2 1", + "0 2 4 0 6 2 1")) + tk.MustQuery("show stats_buckets where db_name = 'test' and table_name = 't'").Sort().Check( + // db, tbl, part, col, is_index, bucket_id, count, repeats, lower, upper, ndv + testkit.Rows("test t a 0 0 2 1 3 4 0", + "test t b 0 0 2 1 3 4 0")) + + tk.MustExec("insert into t (a,b) values (1,1), (6,6)") + require.NoError(t, h.DumpStatsDeltaToKV(handle.DumpAll)) + + switch choice { + case model.ColumnList: + tk.MustExec("analyze table t columns b with 2 topn, 2 buckets") + case model.PredicateColumns: + originalVal := tk.MustQuery("select @@tidb_enable_column_tracking").Rows()[0][0].(string) + defer func() { + tk.MustExec(fmt.Sprintf("set global tidb_enable_column_tracking = %v", originalVal)) + }() + tk.MustExec("set global tidb_enable_column_tracking = 1") + tk.MustExec("select * from t where b > 1") + require.NoError(t, h.DumpColStatsUsageToKV()) + rows := tk.MustQuery("show column_stats_usage where db_name = 'test' and table_name = 't' and last_used_at is not null").Rows() + require.Equal(t, 1, len(rows)) + require.Equal(t, "b", rows[0][3]) + tk.MustExec("analyze table t predicate columns with 2 topn, 2 buckets") + } + + // Column a is not analyzed in second ANALYZE. We keep the outdated stats of column a rather than delete them. + tk.MustQuery(fmt.Sprintf("select modify_count, count from mysql.stats_meta where table_id = %d", tblID)).Sort().Check( + testkit.Rows("0 8")) + tk.MustQuery("show stats_topn where db_name = 'test' and table_name = 't'").Sort().Check( + // db, tbl, part, col, is_idx, value, count + testkit.Rows("test t a 0 1 2", + "test t a 0 2 2", + "test t b 0 1 3", + "test t b 0 2 2")) + tk.MustQuery(fmt.Sprintf("select is_index, hist_id, distinct_count, null_count, tot_col_size, stats_ver, truncate(correlation,2) from mysql.stats_histograms where table_id = %d", tblID)).Sort().Check( + testkit.Rows("0 1 4 0 8 2 1", // tot_col_size of column a is updated to 8 by DumpStatsDeltaToKV + "0 2 5 0 8 2 0.76")) + tk.MustQuery("show stats_buckets where db_name = 'test' and table_name = 't'").Sort().Check( + // db, tbl, part, col, is_index, bucket_id, count, repeats, lower, upper, ndv + testkit.Rows("test t a 0 0 2 1 3 4 0", + "test t b 0 0 2 1 3 4 0", + "test t b 0 1 3 1 6 6 0")) + tk.MustQuery(fmt.Sprintf("select hist_id from mysql.stats_histograms where version = (select version from mysql.stats_meta where table_id = %d)", tblID)).Check(testkit.Rows("2")) + }(val) + } +} + +func TestAnalyzeColumnsErrorAndWarning(t *testing.T) { + store, dom, clean := testkit.CreateMockStoreAndDomain(t) + defer clean() + + 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)") + + // analyze version 1 doesn't support `ANALYZE COLUMNS c1, ..., cn`/`ANALYZE PREDICATE COLUMNS` currently + tk.MustExec("set @@tidb_analyze_version = 1") + err := tk.ExecToErr("analyze table t columns a") + require.Equal(t, "Only the analyze version 2 supports analyzing the specified columns", err.Error()) + err = tk.ExecToErr("analyze table t predicate columns") + require.Equal(t, "Only the analyze version 2 supports analyzing predicate columns", err.Error()) + + tk.MustExec("set @@tidb_analyze_version = 2") + // invalid column + err = tk.ExecToErr("analyze table t columns c") + terr := errors.Cause(err).(*terror.Error) + require.Equal(t, errors.ErrCode(errno.ErrAnalyzeMissColumn), terr.Code()) + + // If no predicate column is collected, analyze predicate columns gives a warning and falls back to analyze all columns. + tk.MustExec("analyze table t predicate columns") + tk.MustQuery("show warnings").Sort().Check(testkit.Rows( + "Note 1105 Analyze use auto adjusted sample rate 1.000000 for table test.t", + "Warning 1105 No predicate column has been collected yet for table test.t so all columns are analyzed", + )) + rows := tk.MustQuery("show column_stats_usage where db_name = 'test' and table_name = 't' and last_analyzed_at is not null").Rows() + require.Equal(t, 2, len(rows)) + + for _, val := range []model.ColumnChoice{model.ColumnList, model.PredicateColumns} { + func(choice model.ColumnChoice) { + tk.MustExec("set @@tidb_analyze_version = 1") + tk.MustExec("analyze table t") + tk.MustExec("set @@tidb_analyze_version = 2") + switch choice { + case model.ColumnList: + tk.MustExec("analyze table t columns b") + case model.PredicateColumns: + originalVal := tk.MustQuery("select @@tidb_enable_column_tracking").Rows()[0][0].(string) + defer func() { + tk.MustExec(fmt.Sprintf("set global tidb_enable_column_tracking = %v", originalVal)) + }() + tk.MustExec("set global tidb_enable_column_tracking = 1") + tk.MustExec("select * from t where b > 1") + require.NoError(t, dom.StatsHandle().DumpColStatsUsageToKV()) + tk.MustExec("analyze table t predicate columns") + } + tk.MustQuery("show warnings").Sort().Check(testkit.Rows( + "Note 1105 Analyze use auto adjusted sample rate 1.000000 for table test.t", + "Warning 1105 Table test.t has version 1 statistics so all the columns must be analyzed to overwrite the current statistics", + )) + }(val) + } +} + +func TestRecordHistoryStatsAfterAnalyze(t *testing.T) { + store, dom, clean := testkit.CreateMockStoreAndDomain(t) + defer clean() + + tk := testkit.NewTestKit(t, store) + tk.MustExec("set @@tidb_analyze_version = 2") + tk.MustExec("set global tidb_enable_historical_stats = 0") + tk.MustExec("use test") + tk.MustExec("drop table if exists t") + tk.MustExec("create table t(a int, b varchar(10))") + + h := dom.StatsHandle() + is := dom.InfoSchema() + tableInfo, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) + require.NoError(t, err) + + // 1. switch off the tidb_enable_historical_stats, and there is no records in table `mysql.stats_history` + rows := tk.MustQuery(fmt.Sprintf("select count(*) from mysql.stats_history where table_id = '%d'", tableInfo.Meta().ID)).Rows() + num, _ := strconv.Atoi(rows[0][0].(string)) + require.Equal(t, num, 0) + + tk.MustExec("analyze table t with 2 topn") + rows = tk.MustQuery(fmt.Sprintf("select count(*) from mysql.stats_history where table_id = '%d'", tableInfo.Meta().ID)).Rows() + num, _ = strconv.Atoi(rows[0][0].(string)) + require.Equal(t, num, 0) + + // 2. switch on the tidb_enable_historical_stats and do analyze + tk.MustExec("set global tidb_enable_historical_stats = 1") + defer tk.MustExec("set global tidb_enable_historical_stats = 0") + tk.MustExec("analyze table t with 2 topn") + rows = tk.MustQuery(fmt.Sprintf("select count(*) from mysql.stats_history where table_id = '%d'", tableInfo.Meta().ID)).Rows() + num, _ = strconv.Atoi(rows[0][0].(string)) + require.GreaterOrEqual(t, num, 1) + + // 3. dump current stats json + dumpJSONTable, err := h.DumpStatsToJSON("test", tableInfo.Meta(), nil) + require.NoError(t, err) + jsOrigin, _ := json.Marshal(dumpJSONTable) + + // 4. get the historical stats json + rows = tk.MustQuery(fmt.Sprintf("select * from mysql.stats_history where table_id = '%d' and create_time = ("+ + "select create_time from mysql.stats_history where table_id = '%d' order by create_time desc limit 1) "+ + "order by seq_no", tableInfo.Meta().ID, tableInfo.Meta().ID)).Rows() + num = len(rows) + require.GreaterOrEqual(t, num, 1) + data := make([][]byte, num) + for i, row := range rows { + data[i] = []byte(row[1].(string)) + } + jsonTbl, err := handle.BlocksToJSONTable(data) + require.NoError(t, err) + jsCur, err := json.Marshal(jsonTbl) + require.NoError(t, err) + // 5. historical stats must be equal to the current stats + require.JSONEq(t, string(jsOrigin), string(jsCur)) +} + +func TestRecordHistoryStatsMetaAfterAnalyze(t *testing.T) { + store, dom, clean := testkit.CreateMockStoreAndDomain(t) + defer clean() + + tk := testkit.NewTestKit(t, store) + tk.MustExec("set @@tidb_analyze_version = 2") + tk.MustExec("set global tidb_enable_historical_stats = 0") + tk.MustExec("use test") + tk.MustExec("drop table if exists t") + tk.MustExec("create table t(a int, b int)") + tk.MustExec("analyze table test.t") + + h := dom.StatsHandle() + is := dom.InfoSchema() + tableInfo, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) + require.NoError(t, err) + + // 1. switch off the tidb_enable_historical_stats, and there is no record in table `mysql.stats_meta_history` + tk.MustQuery(fmt.Sprintf("select count(*) from mysql.stats_meta_history where table_id = '%d'", tableInfo.Meta().ID)).Check(testkit.Rows("0")) + // insert demo tuples, and there is no record either. + insertNums := 5 + for i := 0; i < insertNums; i++ { + tk.MustExec("insert into test.t (a,b) values (1,1), (2,2), (3,3)") + err := h.DumpStatsDeltaToKV(handle.DumpDelta) + require.NoError(t, err) + } + tk.MustQuery(fmt.Sprintf("select count(*) from mysql.stats_meta_history where table_id = '%d'", tableInfo.Meta().ID)).Check(testkit.Rows("0")) + + // 2. switch on the tidb_enable_historical_stats and insert tuples to produce count/modifyCount delta change. + tk.MustExec("set global tidb_enable_historical_stats = 1") + defer tk.MustExec("set global tidb_enable_historical_stats = 0") + + for i := 0; i < insertNums; i++ { + tk.MustExec("insert into test.t (a,b) values (1,1), (2,2), (3,3)") + err := h.DumpStatsDeltaToKV(handle.DumpDelta) + require.NoError(t, err) + } + tk.MustQuery(fmt.Sprintf("select modify_count, count from mysql.stats_meta_history where table_id = '%d' order by create_time", tableInfo.Meta().ID)).Sort().Check( + testkit.Rows("18 18", "21 21", "24 24", "27 27", "30 30")) +} + +func checkAnalyzeStatus(t *testing.T, tk *testkit.TestKit, jobInfo, status, failReason, comment string, timeLimit int64) { + rows := tk.MustQuery("show analyze status where table_schema = 'test' and table_name = 't' and partition_name = ''").Rows() + require.Equal(t, 1, len(rows), comment) + require.Equal(t, jobInfo, rows[0][3], comment) + require.Equal(t, status, rows[0][7], comment) + require.Equal(t, failReason, rows[0][8], comment) + if timeLimit <= 0 { + return + } + const layout = "2006-01-02 15:04:05" + startTime, err := time.Parse(layout, rows[0][5].(string)) + require.NoError(t, err, comment) + endTime, err := time.Parse(layout, rows[0][6].(string)) + require.NoError(t, err, comment) + require.Less(t, endTime.Sub(startTime), time.Duration(timeLimit)*time.Second, comment) +} + +func testKillAutoAnalyze(t *testing.T, ver int) { + store, dom, clean := testkit.CreateMockStoreAndDomain(t) + defer clean() + tk := testkit.NewTestKit(t, store) + oriStart := tk.MustQuery("select @@tidb_auto_analyze_start_time").Rows()[0][0].(string) + oriEnd := tk.MustQuery("select @@tidb_auto_analyze_end_time").Rows()[0][0].(string) + handle.AutoAnalyzeMinCnt = 0 + defer func() { + handle.AutoAnalyzeMinCnt = 1000 + tk.MustExec(fmt.Sprintf("set global tidb_auto_analyze_start_time='%v'", oriStart)) + tk.MustExec(fmt.Sprintf("set global tidb_auto_analyze_end_time='%v'", oriEnd)) + }() + tk.MustExec(fmt.Sprintf("set @@tidb_analyze_version = %v", ver)) + tk.MustExec("use test") + tk.MustExec("drop table if exists t") + tk.MustExec("create table t (a int, b int)") + tk.MustExec("insert into t values (1,2), (3,4)") + is := dom.InfoSchema() + h := dom.StatsHandle() + require.NoError(t, h.DumpStatsDeltaToKV(handle.DumpAll)) + tk.MustExec("analyze table t") + tk.MustExec("insert into t values (5,6), (7,8), (9, 10)") + require.NoError(t, h.DumpStatsDeltaToKV(handle.DumpAll)) + require.NoError(t, h.Update(is)) + table, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) + require.NoError(t, err) + tableInfo := table.Meta() + lastVersion := h.GetTableStats(tableInfo).Version + tk.MustExec("set global tidb_auto_analyze_start_time='00:00 +0000'") + tk.MustExec("set global tidb_auto_analyze_end_time='23:59 +0000'") + jobInfo := "auto analyze " + if ver == 1 { + jobInfo += "columns" + } else { + jobInfo += "table all columns with 256 buckets, 500 topn, 1 samplerate" + } + // kill auto analyze when it is pending/running/finished + for _, status := range []string{"pending", "running", "finished"} { + func() { + comment := fmt.Sprintf("kill %v analyze job", status) + tk.MustExec("delete from mysql.analyze_jobs") + mockAnalyzeStatus := "github.com/pingcap/tidb/executor/mockKill" + strings.Title(status) + if status == "running" { + mockAnalyzeStatus += "V" + strconv.Itoa(ver) + } + mockAnalyzeStatus += "AnalyzeJob" + require.NoError(t, failpoint.Enable(mockAnalyzeStatus, "return")) + defer func() { + require.NoError(t, failpoint.Disable(mockAnalyzeStatus)) + }() + if status == "pending" || status == "running" { + mockSlowAnalyze := "github.com/pingcap/tidb/executor/mockSlowAnalyzeV" + strconv.Itoa(ver) + require.NoError(t, failpoint.Enable(mockSlowAnalyze, "return")) + defer func() { + require.NoError(t, failpoint.Disable(mockSlowAnalyze)) + }() + } + require.True(t, h.HandleAutoAnalyze(is), comment) + currentVersion := h.GetTableStats(tableInfo).Version + if status == "finished" { + // If we kill a finished job, after kill command the status is still finished and the table stats are updated. + checkAnalyzeStatus(t, tk, jobInfo, "finished", "", comment, -1) + require.Greater(t, currentVersion, lastVersion, comment) + } else { + // If we kill a pending/running job, after kill command the status is failed and the table stats are not updated. + // We expect the killed analyze stops quickly. Specifically, end_time - start_time < 10s. + checkAnalyzeStatus(t, tk, jobInfo, "failed", executor.ErrQueryInterrupted.Error(), comment, 10) + require.Equal(t, currentVersion, lastVersion, comment) + } + }() + } +} + +func TestKillAutoAnalyzeV1(t *testing.T) { + testKillAutoAnalyze(t, 1) +} + +func TestKillAutoAnalyzeV2(t *testing.T) { + testKillAutoAnalyze(t, 2) +} + +func TestKillAutoAnalyzeIndex(t *testing.T) { + store, dom, clean := testkit.CreateMockStoreAndDomain(t) + defer clean() + tk := testkit.NewTestKit(t, store) + oriStart := tk.MustQuery("select @@tidb_auto_analyze_start_time").Rows()[0][0].(string) + oriEnd := tk.MustQuery("select @@tidb_auto_analyze_end_time").Rows()[0][0].(string) + handle.AutoAnalyzeMinCnt = 0 + defer func() { + handle.AutoAnalyzeMinCnt = 1000 + tk.MustExec(fmt.Sprintf("set global tidb_auto_analyze_start_time='%v'", oriStart)) + tk.MustExec(fmt.Sprintf("set global tidb_auto_analyze_end_time='%v'", oriEnd)) + }() + tk.MustExec("set @@tidb_analyze_version = 1") + tk.MustExec("use test") + tk.MustExec("drop table if exists t") + tk.MustExec("create table t (a int, b int)") + tk.MustExec("insert into t values (1,2), (3,4)") + is := dom.InfoSchema() + h := dom.StatsHandle() + require.NoError(t, h.DumpStatsDeltaToKV(handle.DumpAll)) + tk.MustExec("analyze table t") + tk.MustExec("alter table t add index idx(b)") + tbl, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) + require.NoError(t, err) + tblInfo := tbl.Meta() + lastVersion := h.GetTableStats(tblInfo).Version + tk.MustExec("set global tidb_auto_analyze_start_time='00:00 +0000'") + tk.MustExec("set global tidb_auto_analyze_end_time='23:59 +0000'") + const jobInfo = "auto analyze index idx" + // kill auto analyze when it is pending/running/finished + for _, status := range []string{"pending", "running", "finished"} { + func() { + comment := fmt.Sprintf("kill %v analyze job", status) + tk.MustExec("delete from mysql.analyze_jobs") + mockAnalyzeStatus := "github.com/pingcap/tidb/executor/mockKill" + strings.Title(status) + if status == "running" { + mockAnalyzeStatus += "AnalyzeIndexJob" + } else { + mockAnalyzeStatus += "AnalyzeJob" + } + require.NoError(t, failpoint.Enable(mockAnalyzeStatus, "return")) + defer func() { + require.NoError(t, failpoint.Disable(mockAnalyzeStatus)) + }() + if status == "pending" || status == "running" { + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/executor/mockSlowAnalyzeIndex", "return")) + defer func() { + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/executor/mockSlowAnalyzeIndex")) + }() + } + require.True(t, h.HandleAutoAnalyze(dom.InfoSchema()), comment) + currentVersion := h.GetTableStats(tblInfo).Version + if status == "finished" { + // If we kill a finished job, after kill command the status is still finished and the index stats are updated. + checkAnalyzeStatus(t, tk, jobInfo, "finished", "", comment, -1) + require.Greater(t, currentVersion, lastVersion, comment) + } else { + // If we kill a pending/running job, after kill command the status is failed and the index stats are not updated. + // We expect the killed analyze stops quickly. Specifically, end_time - start_time < 10s. + checkAnalyzeStatus(t, tk, jobInfo, "failed", executor.ErrQueryInterrupted.Error(), comment, 10) + require.Equal(t, currentVersion, lastVersion, comment) + } + }() + } +} + +func TestAnalyzeJob(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + for _, result := range []string{statistics.AnalyzeFinished, statistics.AnalyzeFailed} { + tk := testkit.NewTestKit(t, store) + tk.MustExec("delete from mysql.analyze_jobs") + se := tk.Session() + job := &statistics.AnalyzeJob{ + DBName: "test", + TableName: "t", + PartitionName: "", + JobInfo: "table all columns with 256 buckets, 500 topn, 1 samplerate", + } + executor.AddNewAnalyzeJob(se, job) + require.NotNil(t, job.ID) + rows := tk.MustQuery("show analyze status").Rows() + require.Len(t, rows, 1) + require.Equal(t, job.DBName, rows[0][0]) + require.Equal(t, job.TableName, rows[0][1]) + require.Equal(t, job.PartitionName, rows[0][2]) + require.Equal(t, job.JobInfo, rows[0][3]) + require.Equal(t, "0", rows[0][4]) + require.Equal(t, "", rows[0][5]) + require.Equal(t, "", rows[0][6]) + require.Equal(t, statistics.AnalyzePending, rows[0][7]) + require.Equal(t, "", rows[0][8]) + serverInfo, err := infosync.GetServerInfo() + require.NoError(t, err) + addr := fmt.Sprintf("%s:%d", serverInfo.IP, serverInfo.Port) + require.Equal(t, addr, rows[0][9]) + connID := strconv.FormatUint(tk.Session().GetSessionVars().ConnectionID, 10) + require.Equal(t, connID, rows[0][10]) + + executor.StartAnalyzeJob(se, job) + rows = tk.MustQuery("show analyze status").Rows() + checkTime := func(val interface{}) { + str, ok := val.(string) + require.True(t, ok) + _, err := time.Parse("2006-01-02 15:04:05", str) + require.NoError(t, err) + } + checkTime(rows[0][5]) + require.Equal(t, statistics.AnalyzeRunning, rows[0][7]) + + // UpdateAnalyzeJob requires the interval between two updates to mysql.analyze_jobs is more than 5 second. + // Hence we fake last dump time as 10 second ago in order to make update to mysql.analyze_jobs happen. + lastDumpTime := time.Now().Add(-10 * time.Second) + job.Progress.SetLastDumpTime(lastDumpTime) + const smallCount int64 = 100 + executor.UpdateAnalyzeJob(se, job, smallCount) + // Delta count doesn't reach threshold so we don't dump it to mysql.analyze_jobs + require.Equal(t, smallCount, job.Progress.GetDeltaCount()) + require.Equal(t, lastDumpTime, job.Progress.GetLastDumpTime()) + rows = tk.MustQuery("show analyze status").Rows() + require.Equal(t, "0", rows[0][4]) + + const largeCount int64 = 15000000 + executor.UpdateAnalyzeJob(se, job, largeCount) + // Delta count reaches threshold so we dump it to mysql.analyze_jobs and update last dump time. + require.Equal(t, int64(0), job.Progress.GetDeltaCount()) + require.True(t, job.Progress.GetLastDumpTime().After(lastDumpTime)) + lastDumpTime = job.Progress.GetLastDumpTime() + rows = tk.MustQuery("show analyze status").Rows() + require.Equal(t, strconv.FormatInt(smallCount+largeCount, 10), rows[0][4]) + + executor.UpdateAnalyzeJob(se, job, largeCount) + // We have just updated mysql.analyze_jobs in the previous step so we don't update it until 5 second passes or the analyze job is over. + require.Equal(t, largeCount, job.Progress.GetDeltaCount()) + require.Equal(t, lastDumpTime, job.Progress.GetLastDumpTime()) + rows = tk.MustQuery("show analyze status").Rows() + require.Equal(t, strconv.FormatInt(smallCount+largeCount, 10), rows[0][4]) + + var analyzeErr error + if result == statistics.AnalyzeFailed { + analyzeErr = errors.Errorf("analyze meets error") + } + executor.FinishAnalyzeJob(se, job, analyzeErr) + rows = tk.MustQuery("show analyze status").Rows() + require.Equal(t, strconv.FormatInt(smallCount+2*largeCount, 10), rows[0][4]) + checkTime(rows[0][6]) + require.Equal(t, result, rows[0][7]) + if result == statistics.AnalyzeFailed { + require.Equal(t, analyzeErr.Error(), rows[0][8]) + } else { + require.Equal(t, "", rows[0][8]) + } + // process_id is set to NULL after the analyze job is finished/failed. + require.Equal(t, "", rows[0][10]) + } +} + +func TestInsertAnalyzeJobWithLongInstance(t *testing.T) { + store, dom, clean := testkit.CreateMockStoreAndDomain(t) + defer clean() + tk := testkit.NewTestKit(t, store) + tk.MustExec("delete from mysql.analyze_jobs") + job := &statistics.AnalyzeJob{ + DBName: "test", + TableName: "t", + PartitionName: "", + JobInfo: "table all columns with 256 buckets, 500 topn, 1 samplerate", + } + h := dom.StatsHandle() + instance := "xxxtidb-tidb-0.xxxtidb-tidb-peer.xxxx-xx-1234-xxx-123456-1-321.xyz:4000" + require.NoError(t, h.InsertAnalyzeJob(job, instance, 1)) + rows := tk.MustQuery("show analyze status").Rows() + require.Len(t, rows, 1) + require.Equal(t, instance, rows[0][9]) +} + +func TestShowAanalyzeStatusJobInfo(t *testing.T) { + store, dom, clean := testkit.CreateMockStoreAndDomain(t) + defer clean() + tk := testkit.NewTestKit(t, store) + originalVal1 := tk.MustQuery("select @@tidb_persist_analyze_options").Rows()[0][0].(string) + originalVal2 := tk.MustQuery("select @@tidb_enable_column_tracking").Rows()[0][0].(string) + defer func() { + tk.MustExec(fmt.Sprintf("set global tidb_persist_analyze_options = %v", originalVal1)) + tk.MustExec(fmt.Sprintf("set global tidb_enable_column_tracking = %v", originalVal2)) + }() + tk.MustExec("set @@tidb_analyze_version = 2") + tk.MustExec("set global tidb_persist_analyze_options = 0") + tk.MustExec("use test") + tk.MustExec("drop table if exists t") + tk.MustExec("create table t (a int, b int, c int, d int, index idx_b_d(b, d))") + tk.MustExec("insert into t values (1,1,null,1), (2,1,9,1), (1,1,8,1), (2,2,7,2), (1,3,7,3), (2,4,6,4), (1,4,6,5), (2,4,6,5), (1,5,6,5)") + tk.MustExec("analyze table t columns c with 2 topn, 2 buckets") + checkJobInfo := func(expected string) { + rows := tk.MustQuery("show analyze status where table_schema = 'test' and table_name = 't'").Rows() + require.Equal(t, 1, len(rows)) + require.Equal(t, expected, rows[0][3]) + tk.MustExec("delete from mysql.analyze_jobs") + } + checkJobInfo("analyze table columns b, c, d with 2 buckets, 2 topn, 1 samplerate") + tk.MustExec("set global tidb_enable_column_tracking = 1") + tk.MustExec("select * from t where c > 1") + h := dom.StatsHandle() + require.NoError(t, h.DumpColStatsUsageToKV()) + tk.MustExec("analyze table t predicate columns with 2 topn, 2 buckets") + checkJobInfo("analyze table columns b, c, d with 2 buckets, 2 topn, 1 samplerate") + tk.MustExec("analyze table t") + checkJobInfo("analyze table all columns with 256 buckets, 500 topn, 1 samplerate") + tk.MustExec("set global tidb_persist_analyze_options = 1") + tk.MustExec("analyze table t columns a with 1 topn, 3 buckets") + checkJobInfo("analyze table columns a, b, d with 3 buckets, 1 topn, 1 samplerate") + tk.MustExec("analyze table t") + checkJobInfo("analyze table columns a, b, d with 3 buckets, 1 topn, 1 samplerate") +} + +func TestAnalyzePartitionTableWithDynamicMode(t *testing.T) { + store, dom, clean := testkit.CreateMockStoreAndDomain(t) + defer clean() + tk := testkit.NewTestKit(t, store) + originalVal := tk.MustQuery("select @@tidb_persist_analyze_options").Rows()[0][0].(string) + defer func() { + tk.MustExec(fmt.Sprintf("set global tidb_persist_analyze_options = %v", originalVal)) + }() + tk.MustExec("set global tidb_persist_analyze_options = true") + + tk.MustExec("use test") + tk.MustExec("set @@session.tidb_analyze_version = 2") + tk.MustExec("set @@session.tidb_partition_prune_mode = 'dynamic'") + createTable := `CREATE TABLE t (a int, b int, c varchar(10), d int, primary key(a), index idx(b)) +PARTITION BY RANGE ( a ) ( + PARTITION p0 VALUES LESS THAN (10), + PARTITION p1 VALUES LESS THAN (20) +)` + tk.MustExec(createTable) + tk.MustExec("insert into t values (1,1,1,1),(2,1,2,2),(3,1,3,3),(4,1,4,4),(5,1,5,5),(6,1,6,6),(7,7,7,7),(8,8,8,8),(9,9,9,9)") + tk.MustExec("insert into t values (10,10,10,10),(11,11,11,11),(12,12,12,12),(13,13,13,13),(14,14,14,14)") + h := dom.StatsHandle() + oriLease := h.Lease() + h.SetLease(1) + defer func() { + h.SetLease(oriLease) + }() + is := dom.InfoSchema() + table, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) + require.NoError(t, err) + tableInfo := table.Meta() + pi := tableInfo.GetPartitionInfo() + require.NotNil(t, pi) + + // analyze table only sets table options and gen globalStats + tk.MustExec("analyze table t columns a,c with 1 topn, 3 buckets") + tk.MustQuery("select * from t where b > 1 and c > 1") + require.NoError(t, h.LoadNeededHistograms()) + tbl := h.GetTableStats(tableInfo) + lastVersion := tbl.Version + // both globalStats and partition stats generated and options saved for column a,c + require.Equal(t, 3, len(tbl.Columns[tableInfo.Columns[0].ID].Buckets)) + require.Equal(t, 1, len(tbl.Columns[tableInfo.Columns[0].ID].TopN.TopN)) + require.Equal(t, 3, len(tbl.Columns[tableInfo.Columns[2].ID].Buckets)) + require.Equal(t, 1, len(tbl.Columns[tableInfo.Columns[2].ID].TopN.TopN)) + rs := tk.MustQuery("select buckets,topn from mysql.analyze_options where table_id=" + strconv.FormatInt(pi.Definitions[0].ID, 10)) + require.Equal(t, 0, len(rs.Rows())) + rs = tk.MustQuery("select buckets,topn from mysql.analyze_options where table_id=" + strconv.FormatInt(pi.Definitions[1].ID, 10)) + require.Equal(t, 0, len(rs.Rows())) + rs = tk.MustQuery("select buckets,topn from mysql.analyze_options where table_id=" + strconv.FormatInt(tableInfo.ID, 10)) + require.Equal(t, 1, len(rs.Rows())) + require.Equal(t, "3", rs.Rows()[0][0]) + require.Equal(t, "1", rs.Rows()[0][1]) + + // analyze table with persisted table-level options + tk.MustExec("analyze table t") + tk.MustQuery("select * from t where b > 1 and c > 1") + require.NoError(t, h.LoadNeededHistograms()) + tbl = h.GetTableStats(tableInfo) + require.Greater(t, tbl.Version, lastVersion) + lastVersion = tbl.Version + require.Equal(t, 3, len(tbl.Columns[tableInfo.Columns[0].ID].Buckets)) + require.Equal(t, 1, len(tbl.Columns[tableInfo.Columns[0].ID].TopN.TopN)) + require.Equal(t, 3, len(tbl.Columns[tableInfo.Columns[2].ID].Buckets)) + require.Equal(t, 1, len(tbl.Columns[tableInfo.Columns[2].ID].TopN.TopN)) + rs = tk.MustQuery("select buckets,topn from mysql.analyze_options where table_id=" + strconv.FormatInt(pi.Definitions[0].ID, 10)) + require.Equal(t, 0, len(rs.Rows())) + rs = tk.MustQuery("select buckets,topn from mysql.analyze_options where table_id=" + strconv.FormatInt(pi.Definitions[1].ID, 10)) + require.Equal(t, 0, len(rs.Rows())) + rs = tk.MustQuery("select buckets,topn from mysql.analyze_options where table_id=" + strconv.FormatInt(tableInfo.ID, 10)) + require.Equal(t, 1, len(rs.Rows())) + require.Equal(t, "3", rs.Rows()[0][0]) + require.Equal(t, "1", rs.Rows()[0][1]) + + // analyze table with merged table-level options + tk.MustExec("analyze table t with 2 topn, 2 buckets") + tk.MustQuery("select * from t where b > 1 and c > 1") + require.NoError(t, h.LoadNeededHistograms()) + tbl = h.GetTableStats(tableInfo) + require.Greater(t, tbl.Version, lastVersion) + require.Equal(t, 2, len(tbl.Columns[tableInfo.Columns[0].ID].Buckets)) + require.Equal(t, 2, len(tbl.Columns[tableInfo.Columns[0].ID].TopN.TopN)) + require.Equal(t, 2, len(tbl.Columns[tableInfo.Columns[2].ID].Buckets)) + require.Equal(t, 2, len(tbl.Columns[tableInfo.Columns[2].ID].TopN.TopN)) + rs = tk.MustQuery("select buckets,topn from mysql.analyze_options where table_id=" + strconv.FormatInt(pi.Definitions[0].ID, 10)) + require.Equal(t, 0, len(rs.Rows())) + rs = tk.MustQuery("select buckets,topn from mysql.analyze_options where table_id=" + strconv.FormatInt(pi.Definitions[1].ID, 10)) + require.Equal(t, 0, len(rs.Rows())) + rs = tk.MustQuery("select buckets,topn from mysql.analyze_options where table_id=" + strconv.FormatInt(tableInfo.ID, 10)) + require.Equal(t, 1, len(rs.Rows())) + require.Equal(t, "2", rs.Rows()[0][0]) + require.Equal(t, "2", rs.Rows()[0][1]) +} + +func TestAnalyzePartitionTableStaticToDynamic(t *testing.T) { + store, dom, clean := testkit.CreateMockStoreAndDomain(t) + defer clean() + tk := testkit.NewTestKit(t, store) + originalVal := tk.MustQuery("select @@tidb_persist_analyze_options").Rows()[0][0].(string) + defer func() { + tk.MustExec(fmt.Sprintf("set global tidb_persist_analyze_options = %v", originalVal)) + }() + tk.MustExec("set global tidb_persist_analyze_options = true") + + tk.MustExec("use test") + tk.MustExec("set @@session.tidb_analyze_version = 2") + tk.MustExec("set @@session.tidb_partition_prune_mode = 'static'") + createTable := `CREATE TABLE t (a int, b int, c varchar(10), d int, primary key(a), index idx(b)) +PARTITION BY RANGE ( a ) ( + PARTITION p0 VALUES LESS THAN (10), + PARTITION p1 VALUES LESS THAN (20) +)` + tk.MustExec(createTable) + tk.MustExec("insert into t values (1,1,1,1),(2,1,2,2),(3,1,3,3),(4,1,4,4),(5,1,5,5),(6,1,6,6),(7,7,7,7),(8,8,8,8),(9,9,9,9)") + tk.MustExec("insert into t values (10,10,10,10),(11,11,11,11),(12,12,12,12),(13,13,13,13),(14,14,14,14)") + h := dom.StatsHandle() + oriLease := h.Lease() + h.SetLease(1) + defer func() { + h.SetLease(oriLease) + }() + is := dom.InfoSchema() + table, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) + require.NoError(t, err) + tableInfo := table.Meta() + pi := tableInfo.GetPartitionInfo() + require.NotNil(t, pi) + + // analyze partition under static mode with options + tk.MustExec("analyze table t partition p0 columns a,c with 1 topn, 3 buckets") + tk.MustQuery("select * from t where b > 1 and c > 1") + require.NoError(t, h.LoadNeededHistograms()) + tbl := h.GetTableStats(tableInfo) + p0 := h.GetPartitionStats(tableInfo, pi.Definitions[0].ID) + p1 := h.GetPartitionStats(tableInfo, pi.Definitions[1].ID) + lastVersion := tbl.Version + require.Equal(t, 3, len(p0.Columns[tableInfo.Columns[0].ID].Buckets)) + require.Equal(t, 3, len(p0.Columns[tableInfo.Columns[2].ID].Buckets)) + require.Equal(t, 0, len(p1.Columns[tableInfo.Columns[0].ID].Buckets)) + require.Equal(t, 0, len(tbl.Columns[tableInfo.Columns[0].ID].Buckets)) + rs := tk.MustQuery("select buckets,topn from mysql.analyze_options where table_id=" + strconv.FormatInt(pi.Definitions[0].ID, 10)) + require.Equal(t, 1, len(rs.Rows())) + require.Equal(t, "3", rs.Rows()[0][0]) + require.Equal(t, "1", rs.Rows()[0][1]) + rs = tk.MustQuery("select buckets,topn from mysql.analyze_options where table_id=" + strconv.FormatInt(pi.Definitions[1].ID, 10)) + require.Equal(t, 0, len(rs.Rows())) + // The columns are: table_id, sample_num, sample_rate, buckets, topn, column_choice, column_ids. + rs = tk.MustQuery("select buckets,topn from mysql.analyze_options where table_id=" + strconv.FormatInt(tableInfo.ID, 10)) + require.Equal(t, 1, len(rs.Rows())) + require.Equal(t, "0", rs.Rows()[0][0]) + + tk.MustExec("set @@session.tidb_partition_prune_mode = 'dynamic'") + + // analyze table in dynamic mode will ignore partition-level options and use default + tk.MustExec("analyze table t") + tk.MustQuery("select * from t where b > 1 and c > 1") + require.NoError(t, h.LoadNeededHistograms()) + tbl = h.GetTableStats(tableInfo) + require.Greater(t, tbl.Version, lastVersion) + lastVersion = tbl.Version + p0 = h.GetPartitionStats(tableInfo, pi.Definitions[0].ID) + p1 = h.GetPartitionStats(tableInfo, pi.Definitions[1].ID) + require.NotEqual(t, 3, len(p0.Columns[tableInfo.Columns[0].ID].Buckets)) + require.Equal(t, len(tbl.Columns[tableInfo.Columns[0].ID].Buckets), len(p0.Columns[tableInfo.Columns[0].ID].Buckets)) + require.Equal(t, len(tbl.Columns[tableInfo.Columns[0].ID].Buckets), len(p1.Columns[tableInfo.Columns[0].ID].Buckets)) + rs = tk.MustQuery("select buckets,topn from mysql.analyze_options where table_id=" + strconv.FormatInt(pi.Definitions[0].ID, 10)) + require.Equal(t, 1, len(rs.Rows())) + require.Equal(t, "3", rs.Rows()[0][0]) + require.Equal(t, "1", rs.Rows()[0][1]) + rs = tk.MustQuery("select buckets,topn from mysql.analyze_options where table_id=" + strconv.FormatInt(pi.Definitions[1].ID, 10)) + require.Equal(t, 0, len(rs.Rows())) + rs = tk.MustQuery("select buckets,topn from mysql.analyze_options where table_id=" + strconv.FormatInt(tableInfo.ID, 10)) + require.Equal(t, 1, len(rs.Rows())) + require.Equal(t, "0", rs.Rows()[0][0]) + + // analyze table under dynamic mode with specified options with old partition-level options + tk.MustExec("analyze table t columns b,d with 2 topn, 2 buckets") + tk.MustQuery("select * from t where b > 1 and d > 1") + require.NoError(t, h.LoadNeededHistograms()) + tbl = h.GetTableStats(tableInfo) + require.Greater(t, tbl.Version, lastVersion) + lastVersion = tbl.Version + require.Equal(t, 2, len(tbl.Columns[tableInfo.Columns[1].ID].Buckets)) + require.Equal(t, 2, len(tbl.Columns[tableInfo.Columns[3].ID].Buckets)) + rs = tk.MustQuery("select buckets,topn from mysql.analyze_options where table_id=" + strconv.FormatInt(pi.Definitions[0].ID, 10)) + require.Equal(t, 1, len(rs.Rows())) + require.Equal(t, "3", rs.Rows()[0][0]) + require.Equal(t, "1", rs.Rows()[0][1]) + rs = tk.MustQuery("select buckets,topn from mysql.analyze_options where table_id=" + strconv.FormatInt(pi.Definitions[1].ID, 10)) + require.Equal(t, 0, len(rs.Rows())) + rs = tk.MustQuery("select buckets,topn from mysql.analyze_options where table_id=" + strconv.FormatInt(tableInfo.ID, 10)) + require.Equal(t, 1, len(rs.Rows())) + require.Equal(t, "2", rs.Rows()[0][0]) + require.Equal(t, "2", rs.Rows()[0][1]) + + // analyze table under dynamic mode without options with old table-level & partition-level options + tk.MustExec("analyze table t") + tk.MustQuery("select * from t where b > 1 and d > 1") + require.NoError(t, h.LoadNeededHistograms()) + tbl = h.GetTableStats(tableInfo) + require.Greater(t, tbl.Version, lastVersion) + lastVersion = tbl.Version + require.Equal(t, 2, len(tbl.Columns[tableInfo.Columns[3].ID].Buckets)) + require.Equal(t, 2, len(tbl.Columns[tableInfo.Columns[3].ID].TopN.TopN)) + + // analyze table under dynamic mode with specified options with old table-level & partition-level options + tk.MustExec("analyze table t with 1 topn") + tk.MustQuery("select * from t where b > 1 and d > 1") + require.NoError(t, h.LoadNeededHistograms()) + tbl = h.GetTableStats(tableInfo) + require.Greater(t, tbl.Version, lastVersion) + require.Equal(t, 2, len(tbl.Columns[tableInfo.Columns[1].ID].Buckets)) + require.Equal(t, 2, len(tbl.Columns[tableInfo.Columns[3].ID].Buckets)) + require.Equal(t, 1, len(tbl.Columns[tableInfo.Columns[1].ID].TopN.TopN)) + require.Equal(t, 1, len(tbl.Columns[tableInfo.Columns[3].ID].TopN.TopN)) + rs = tk.MustQuery("select buckets,topn from mysql.analyze_options where table_id=" + strconv.FormatInt(pi.Definitions[0].ID, 10)) + require.Equal(t, 1, len(rs.Rows())) + require.Equal(t, "3", rs.Rows()[0][0]) + require.Equal(t, "1", rs.Rows()[0][1]) + rs = tk.MustQuery("select buckets,topn from mysql.analyze_options where table_id=" + strconv.FormatInt(pi.Definitions[1].ID, 10)) + require.Equal(t, 0, len(rs.Rows())) + rs = tk.MustQuery("select buckets,topn from mysql.analyze_options where table_id=" + strconv.FormatInt(tableInfo.ID, 10)) + require.Equal(t, 1, len(rs.Rows())) + require.Equal(t, "2", rs.Rows()[0][0]) + require.Equal(t, "1", rs.Rows()[0][1]) +} + +func TestAnalyzePartitionUnderDynamic(t *testing.T) { + store, dom, clean := testkit.CreateMockStoreAndDomain(t) + defer clean() + tk := testkit.NewTestKit(t, store) + originalVal := tk.MustQuery("select @@tidb_persist_analyze_options").Rows()[0][0].(string) + defer func() { + tk.MustExec(fmt.Sprintf("set global tidb_persist_analyze_options = %v", originalVal)) + }() + tk.MustExec("set global tidb_persist_analyze_options = true") + + tk.MustExec("use test") + tk.MustExec("set @@session.tidb_analyze_version = 2") + tk.MustExec("set @@session.tidb_partition_prune_mode = 'dynamic'") + createTable := `CREATE TABLE t (a int, b int, c varchar(10), d int, primary key(a), index idx(b)) +PARTITION BY RANGE ( a ) ( + PARTITION p0 VALUES LESS THAN (10), + PARTITION p1 VALUES LESS THAN (20) +)` + tk.MustExec(createTable) + tk.MustExec("insert into t values (1,1,1,1),(2,1,2,2),(3,1,3,3),(4,1,4,4),(5,1,5,5),(6,1,6,6),(7,7,7,7),(8,8,8,8),(9,9,9,9)") + tk.MustExec("insert into t values (10,10,10,10),(11,11,11,11),(12,12,12,12),(13,13,13,13),(14,14,14,14)") + h := dom.StatsHandle() + oriLease := h.Lease() + h.SetLease(1) + defer func() { + h.SetLease(oriLease) + }() + is := dom.InfoSchema() + table, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) + require.NoError(t, err) + tableInfo := table.Meta() + pi := tableInfo.GetPartitionInfo() + require.NotNil(t, pi) + + // analyze partition with options under dynamic mode + tk.MustExec("analyze table t partition p0 columns a,b,c with 1 topn, 3 buckets") + tk.MustQuery("show warnings").Sort().Check(testkit.Rows( + "Note 1105 Analyze use auto adjusted sample rate 1.000000 for table test.t's partition p0", + "Warning 1105 Ignore columns and options when analyze partition in dynamic mode", + "Warning 8131 Build table: `t` global-level stats failed due to missing partition-level stats", + "Warning 8131 Build table: `t` index: `idx` global-level stats failed due to missing partition-level stats", + )) + tk.MustQuery("select * from t where a > 1 and b > 1 and c > 1 and d > 1") + require.NoError(t, h.LoadNeededHistograms()) + tbl := h.GetTableStats(tableInfo) + lastVersion := tbl.Version + require.NotEqual(t, 3, len(tbl.Columns[tableInfo.Columns[2].ID].Buckets)) + require.NotEqual(t, 3, len(tbl.Columns[tableInfo.Columns[3].ID].Buckets)) + + tk.MustExec("analyze table t partition p0") + tk.MustQuery("show warnings").Sort().Check(testkit.Rows( + "Note 1105 Analyze use auto adjusted sample rate 1.000000 for table test.t's partition p0", + "Warning 8131 Build table: `t` global-level stats failed due to missing partition-level stats", + "Warning 8131 Build table: `t` index: `idx` global-level stats failed due to missing partition-level stats", + )) + tbl = h.GetTableStats(tableInfo) + require.Equal(t, tbl.Version, lastVersion) // global stats not updated +} + +func TestAnalyzePartitionStaticToDynamic(t *testing.T) { + store, dom, clean := testkit.CreateMockStoreAndDomain(t) + defer clean() + tk := testkit.NewTestKit(t, store) + originalVal := tk.MustQuery("select @@tidb_persist_analyze_options").Rows()[0][0].(string) + defer func() { + tk.MustExec(fmt.Sprintf("set global tidb_persist_analyze_options = %v", originalVal)) + }() + + tk.MustExec("use test") + tk.MustExec("set @@session.tidb_analyze_version = 2") + createTable := `CREATE TABLE t (a int, b int, c varchar(10), d int, primary key(a), index idx(b)) +PARTITION BY RANGE ( a ) ( + PARTITION p0 VALUES LESS THAN (10), + PARTITION p1 VALUES LESS THAN (20) +)` + tk.MustExec(createTable) + tk.MustExec("insert into t values (1,1,1,1),(2,1,2,2),(3,1,3,3),(4,1,4,4),(5,1,5,5),(6,1,6,6),(7,7,7,7),(8,8,8,8),(9,9,9,9)") + tk.MustExec("insert into t values (10,10,10,10),(11,11,11,11),(12,12,12,12),(13,13,13,13),(14,14,14,14)") + h := dom.StatsHandle() + oriLease := h.Lease() + h.SetLease(1) + defer func() { + h.SetLease(oriLease) + }() + is := dom.InfoSchema() + table, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) + require.NoError(t, err) + tableInfo := table.Meta() + pi := tableInfo.GetPartitionInfo() + require.NotNil(t, pi) + + // generate old partition stats + tk.MustExec("set global tidb_persist_analyze_options = false") + tk.MustExec("set @@session.tidb_partition_prune_mode = 'static'") + tk.MustExec("analyze table t partition p0 columns a,c with 1 topn, 3 buckets") + tk.MustQuery("select * from t where a > 1 and b > 1 and c > 1 and d > 1") + require.NoError(t, h.LoadNeededHistograms()) + p0 := h.GetPartitionStats(tableInfo, pi.Definitions[0].ID) + require.Equal(t, 3, len(p0.Columns[tableInfo.Columns[2].ID].Buckets)) + + // analyze partition with existing stats of other partitions under dynamic + tk.MustExec("set @@session.tidb_partition_prune_mode = 'dynamic'") + tk.MustExec("analyze table t partition p1 columns a,b,d with 1 topn, 3 buckets") + tk.MustQuery("show warnings").Sort().Check(testkit.Rows( + "Note 1105 Analyze use auto adjusted sample rate 1.000000 for table test.t's partition p1", + "Warning 8244 Build table: `t` column: `d` global-level stats failed due to missing partition-level column stats, please run analyze table to refresh columns of all partitions", + )) + + // analyze partition with existing table-level options and existing partition stats under dynamic + tk.MustExec("insert into mysql.analyze_options values (?,?,?,?,?,?,?)", tableInfo.ID, 0, 0, 2, 2, "DEFAULT", "") + tk.MustExec("set global tidb_persist_analyze_options = true") + tk.MustExec("analyze table t partition p1 columns a,b,d with 1 topn, 3 buckets") + tk.MustQuery("show warnings").Sort().Check(testkit.Rows( + "Note 1105 Analyze use auto adjusted sample rate 1.000000 for table test.t's partition p1", + "Warning 1105 Ignore columns and options when analyze partition in dynamic mode", + "Warning 8244 Build table: `t` column: `d` global-level stats failed due to missing partition-level column stats, please run analyze table to refresh columns of all partitions", + )) + + // analyze partition with existing table-level & partition-level options and existing partition stats under dynamic + tk.MustExec("insert into mysql.analyze_options values (?,?,?,?,?,?,?)", pi.Definitions[1].ID, 0, 0, 1, 1, "DEFAULT", "") + tk.MustExec("analyze table t partition p1 columns a,b,d with 1 topn, 3 buckets") + tk.MustQuery("show warnings").Sort().Check(testkit.Rows( + "Note 1105 Analyze use auto adjusted sample rate 1.000000 for table test.t's partition p1", + "Warning 1105 Ignore columns and options when analyze partition in dynamic mode", + "Warning 8244 Build table: `t` column: `d` global-level stats failed due to missing partition-level column stats, please run analyze table to refresh columns of all partitions", + )) + tk.MustQuery("select * from t where a > 1 and b > 1 and c > 1 and d > 1") + require.NoError(t, h.LoadNeededHistograms()) + tbl := h.GetTableStats(tableInfo) + require.Equal(t, 0, len(tbl.Columns)) + + // ignore both p0's 3 buckets, persisted-partition-options' 1 bucket, just use table-level 2 buckets + tk.MustExec("analyze table t partition p0") + tk.MustQuery("select * from t where a > 1 and b > 1 and c > 1 and d > 1") + require.NoError(t, h.LoadNeededHistograms()) + tbl = h.GetTableStats(tableInfo) + require.Equal(t, 2, len(tbl.Columns[tableInfo.Columns[2].ID].Buckets)) +} + +func TestAnalyzePartitionUnderV1Dynamic(t *testing.T) { + store, dom, clean := testkit.CreateMockStoreAndDomain(t) + defer clean() + tk := testkit.NewTestKit(t, store) + originalVal := tk.MustQuery("select @@tidb_persist_analyze_options").Rows()[0][0].(string) + defer func() { + tk.MustExec(fmt.Sprintf("set global tidb_persist_analyze_options = %v", originalVal)) + }() + + tk.MustExec("use test") + tk.MustExec("set @@session.tidb_analyze_version = 1") + tk.MustExec("set @@session.tidb_partition_prune_mode = 'dynamic'") + createTable := `CREATE TABLE t (a int, b int, c varchar(10), d int, primary key(a), index idx(b)) +PARTITION BY RANGE ( a ) ( + PARTITION p0 VALUES LESS THAN (10), + PARTITION p1 VALUES LESS THAN (20) +)` + tk.MustExec(createTable) + tk.MustExec("insert into t values (1,1,1,1),(2,1,2,2),(3,1,3,3),(4,1,4,4),(5,1,5,5),(6,1,6,6),(7,7,7,7),(8,8,8,8),(9,9,9,9)") + tk.MustExec("insert into t values (10,10,10,10),(11,11,11,11),(12,12,12,12),(13,13,13,13),(14,14,14,14)") + h := dom.StatsHandle() + oriLease := h.Lease() + h.SetLease(1) + defer func() { + h.SetLease(oriLease) + }() + is := dom.InfoSchema() + table, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) + require.NoError(t, err) + tableInfo := table.Meta() + pi := tableInfo.GetPartitionInfo() + require.NotNil(t, pi) + + // analyze partition with index and with options are allowed under dynamic V1 + tk.MustExec("analyze table t partition p0 with 1 topn, 3 buckets") + tk.MustQuery("show warnings").Sort().Check(testkit.Rows( + "Warning 8131 Build table: `t` global-level stats failed due to missing partition-level stats", + "Warning 8131 Build table: `t` index: `idx` global-level stats failed due to missing partition-level stats", + )) + tk.MustExec("analyze table t partition p1 with 1 topn, 3 buckets") + tk.MustQuery("show warnings").Sort().Check(testkit.Rows()) + tk.MustQuery("select * from t where a > 1 and b > 1 and c > 1 and d > 1") + require.NoError(t, h.LoadNeededHistograms()) + tbl := h.GetTableStats(tableInfo) + lastVersion := tbl.Version + require.Equal(t, 3, len(tbl.Columns[tableInfo.Columns[2].ID].Buckets)) + require.Equal(t, 3, len(tbl.Columns[tableInfo.Columns[3].ID].Buckets)) + + tk.MustExec("analyze table t partition p1 index idx with 1 topn, 2 buckets") + tk.MustQuery("show warnings").Sort().Check(testkit.Rows()) + tbl = h.GetTableStats(tableInfo) + require.Greater(t, tbl.Version, lastVersion) + require.Equal(t, 2, len(tbl.Indices[tableInfo.Indices[0].ID].Buckets)) +} + +func TestIssue35056(t *testing.T) { + store, dom, clean := testkit.CreateMockStoreAndDomain(t) + defer clean() + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("set @@session.tidb_analyze_version = 1") + createTable := `CREATE TABLE t (id int, a int, b varchar(10)) +PARTITION BY RANGE ( id ) ( + PARTITION p0 VALUES LESS THAN (10), + PARTITION p1 VALUES LESS THAN (20) +)` + tk.MustExec(createTable) + tk.MustExec("set @@session.tidb_partition_prune_mode = 'static'") + tk.MustExec("insert into t values (1,1,1),(2,2,2),(3,3,3),(4,4,4),(7,7,7),(9,9,9)") + tk.MustExec("insert into t values (11,11,11),(12,12,12),(14,14,14)") + h := dom.StatsHandle() + oriLease := h.Lease() + h.SetLease(1) + defer func() { + h.SetLease(oriLease) + }() + is := dom.InfoSchema() + h.HandleAutoAnalyze(is) + tk.MustExec("create index idxa on t (a)") + tk.MustExec("create index idxb on t (b)") + table, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) + require.NoError(t, err) + tableInfo := table.Meta() + pi := tableInfo.GetPartitionInfo() + require.NotNil(t, pi) + tk.MustExec("analyze table t partition p0 index idxa") + tk.MustExec("analyze table t partition p1 index idxb") + tk.MustExec("set @@session.tidb_partition_prune_mode = 'dynamic'") + tk.MustExec("analyze table t partition p0") // no panic +} + +func TestIssue35056Related(t *testing.T) { + store, dom, clean := testkit.CreateMockStoreAndDomain(t) + defer clean() + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("set @@session.tidb_analyze_version = 2") + createTable := `CREATE TABLE t (id int) +PARTITION BY RANGE ( id ) ( + PARTITION p0 VALUES LESS THAN (10), + PARTITION p1 VALUES LESS THAN (20) +)` + tk.MustExec(createTable) + tk.MustExec("set @@session.tidb_partition_prune_mode = 'static'") + tk.MustExec("insert into t values (1),(2),(3),(4),(7),(9)") + tk.MustExec("insert into t values (11),(12),(14)") + h := dom.StatsHandle() + oriLease := h.Lease() + h.SetLease(1) + defer func() { + h.SetLease(oriLease) + }() + is := dom.InfoSchema() + h.HandleAutoAnalyze(is) + tk.MustExec("alter table t add column a int") + tk.MustExec("alter table t add column b int") + table, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) + require.NoError(t, err) + tableInfo := table.Meta() + pi := tableInfo.GetPartitionInfo() + require.NotNil(t, pi) + tk.MustExec("analyze table t partition p0 columns id,a") + tk.MustExec("analyze table t partition p1 columns id,b") + tk.MustExec("set @@session.tidb_partition_prune_mode = 'dynamic'") + tk.MustExec("analyze table t partition p0") // no panic +} + +func TestIssue35044(t *testing.T) { + store, dom, clean := testkit.CreateMockStoreAndDomain(t) + defer clean() + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("set @@session.tidb_analyze_version = 2") + tk.MustExec("set @@session.tidb_partition_prune_mode = 'static'") + createTable := `CREATE TABLE t (a int) +PARTITION BY RANGE ( a ) ( + PARTITION p0 VALUES LESS THAN (10), + PARTITION p1 VALUES LESS THAN (20) +)` + tk.MustExec(createTable) + tk.MustExec("insert into t values (1),(2),(3)") + tk.MustExec("insert into t values (11),(12),(14)") + h := dom.StatsHandle() + oriLease := h.Lease() + h.SetLease(1) + defer func() { + h.SetLease(oriLease) + }() + is := dom.InfoSchema() + table, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) + require.NoError(t, err) + tableInfo := table.Meta() + pi := tableInfo.GetPartitionInfo() + require.NotNil(t, pi) + tk.MustExec("analyze table t partition p0 columns a") + tk.MustExec("analyze table t partition p1 columns a") + tk.MustExec("set @@session.tidb_partition_prune_mode = 'dynamic'") + tk.MustExec("analyze table t partition p0") + tbl := h.GetTableStats(tableInfo) + require.Equal(t, int64(6), tbl.Columns[tableInfo.Columns[0].ID].Histogram.NDV) +} diff --git a/executor/analyzetest/main_test.go b/executor/analyzetest/main_test.go new file mode 100644 index 0000000000000..386cd07da7beb --- /dev/null +++ b/executor/analyzetest/main_test.go @@ -0,0 +1,29 @@ +// 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 analyzetest + +import ( + "testing" + + "go.uber.org/goleak" +) + +func TestMain(m *testing.M) { + opts := []goleak.Option{ + goleak.IgnoreTopFunction("github.com/golang/glog.(*loggingT).flushDaemon"), + goleak.IgnoreTopFunction("go.opencensus.io/stats/view.(*worker).start"), + } + goleak.VerifyTestMain(m, opts...) +} diff --git a/executor/builder.go b/executor/builder.go index 2973693b2c1f6..8a44c09aaf033 100644 --- a/executor/builder.go +++ b/executor/builder.go @@ -1768,7 +1768,9 @@ func (b *executorBuilder) buildMemTable(v *plannercore.PhysicalMemTable) Executo strings.ToLower(infoschema.TableClientErrorsSummaryByUser), strings.ToLower(infoschema.TableClientErrorsSummaryByHost), strings.ToLower(infoschema.TableAttributes), - strings.ToLower(infoschema.TablePlacementPolicies): + strings.ToLower(infoschema.TablePlacementPolicies), + strings.ToLower(infoschema.TableTrxSummary), + strings.ToLower(infoschema.ClusterTableTrxSummary): return &MemTableReaderExec{ baseExecutor: newBaseExecutor(b.ctx, v.Schema(), v.ID()), table: v.Table, @@ -2213,13 +2215,9 @@ func (b *executorBuilder) updateForUpdateTSIfNeeded(selectPlan plannercore.Physi } return nil } - // The Repeatable Read transaction use Read Committed level to read data for writing (insert, update, delete, select for update), - // We should always update/refresh the for-update-ts no matter the isolation level is RR or RC. - if b.ctx.GetSessionVars().IsPessimisticReadConsistency() { - _, err = sessiontxn.GetTxnManager(b.ctx).GetStmtForUpdateTS() - return err - } - return UpdateForUpdateTS(b.ctx, 0) + // GetStmtForUpdateTS will auto update the for update ts if necessary + _, err = sessiontxn.GetTxnManager(b.ctx).GetStmtForUpdateTS() + return err } func (b *executorBuilder) buildAnalyzeIndexPushdown(task plannercore.AnalyzeIndexTask, opts map[ast.AnalyzeOptionType]uint64, autoAnalyze string) *analyzeTask { @@ -2439,6 +2437,15 @@ func (b *executorBuilder) buildAnalyzeSamplingPushdown(task plannercore.AnalyzeC } // getAdjustedSampleRate calculate the sample rate by the table size. If we cannot get the table size. We use the 0.001 as the default sample rate. +// From the paper "Random sampling for histogram construction: how much is enough?"'s Corollary 1 to Theorem 5, +// for a table size n, histogram size k, maximum relative error in bin size f, and error probability gamma, +// the minimum random sample size is +// r = 4 * k * ln(2*n/gamma) / f^2 +// If we take f = 0.5, gamma = 0.01, n =1e6, we would got r = 305.82* k. +// Since the there's log function over the table size n, the r grows slowly when the n increases. +// If we take n = 1e12, a 300*k sample still gives <= 0.66 bin size error with probability 0.99. +// So if we don't consider the top-n values, we can keep the sample size at 300*256. +// But we may take some top-n before building the histogram, so we increase the sample a little. func (b *executorBuilder) getAdjustedSampleRate(sctx sessionctx.Context, task plannercore.AnalyzeColumnsTask) float64 { statsHandle := domain.GetDomain(sctx).StatsHandle() defaultRate := 0.001 @@ -2791,20 +2798,16 @@ func (b *executorBuilder) buildAnalyze(v *plannercore.Analyze) Executor { return e } -func constructDistExec(sctx sessionctx.Context, plans []plannercore.PhysicalPlan) ([]*tipb.Executor, bool, error) { - streaming := true +func constructDistExec(sctx sessionctx.Context, plans []plannercore.PhysicalPlan) ([]*tipb.Executor, error) { executors := make([]*tipb.Executor, 0, len(plans)) for _, p := range plans { execPB, err := p.ToPB(sctx, kv.TiKV) if err != nil { - return nil, false, err - } - if !plannercore.SupportStreaming(p) { - streaming = false + return nil, err } executors = append(executors, execPB) } - return executors, streaming, nil + return executors, nil } // markChildrenUsedCols compares each child with the output schema, and mark @@ -2817,13 +2820,13 @@ func markChildrenUsedCols(outputSchema *expression.Schema, childSchema ...*expre return } -func constructDistExecForTiFlash(sctx sessionctx.Context, p plannercore.PhysicalPlan) ([]*tipb.Executor, bool, error) { +func constructDistExecForTiFlash(sctx sessionctx.Context, p plannercore.PhysicalPlan) ([]*tipb.Executor, error) { execPB, err := p.ToPB(sctx, kv.TiFlash) - return []*tipb.Executor{execPB}, false, err + return []*tipb.Executor{execPB}, err } -func constructDAGReq(ctx sessionctx.Context, plans []plannercore.PhysicalPlan, storeType kv.StoreType) (dagReq *tipb.DAGRequest, streaming bool, err error) { +func constructDAGReq(ctx sessionctx.Context, plans []plannercore.PhysicalPlan, storeType kv.StoreType) (dagReq *tipb.DAGRequest, err error) { dagReq = &tipb.DAGRequest{} dagReq.TimeZoneName, dagReq.TimeZoneOffset = timeutil.Zone(ctx.GetSessionVars().Location()) sc := ctx.GetSessionVars().StmtCtx @@ -2834,14 +2837,14 @@ func constructDAGReq(ctx sessionctx.Context, plans []plannercore.PhysicalPlan, s dagReq.Flags = sc.PushDownFlags() if storeType == kv.TiFlash { var executors []*tipb.Executor - executors, streaming, err = constructDistExecForTiFlash(ctx, plans[0]) + executors, err = constructDistExecForTiFlash(ctx, plans[0]) dagReq.RootExecutor = executors[0] } else { - dagReq.Executors, streaming, err = constructDistExec(ctx, plans) + dagReq.Executors, err = constructDistExec(ctx, plans) } distsql.SetEncodeType(ctx, dagReq) - return dagReq, streaming, err + return dagReq, err } func (b *executorBuilder) corColInDistPlan(plans []plannercore.PhysicalPlan) bool { @@ -3152,7 +3155,7 @@ func buildNoRangeTableReader(b *executorBuilder, v *plannercore.PhysicalTableRea if v.StoreType == kv.TiFlash { tablePlans = []plannercore.PhysicalPlan{v.GetTablePlan()} } - dagReq, streaming, err := constructDAGReq(b.ctx, tablePlans, v.StoreType) + dagReq, err := constructDAGReq(b.ctx, tablePlans, v.StoreType) if err != nil { return nil, err } @@ -3185,7 +3188,6 @@ func buildNoRangeTableReader(b *executorBuilder, v *plannercore.PhysicalTableRea keepOrder: ts.KeepOrder, desc: ts.Desc, columns: ts.Columns, - streaming: streaming, paging: paging, corColInFilter: b.corColInDistPlan(v.TablePlans), corColInAccess: b.corColInAccess(v.TablePlans[0]), @@ -3309,6 +3311,9 @@ func (b *executorBuilder) buildTableReader(v *plannercore.PhysicalTableReader) E if len(partitions) == 0 { return &TableDualExec{baseExecutor: *ret.base()} } + + // Sort the partition is necessary to make the final multiple partition key ranges ordered. + sort.Sort(partitionSlice(partitions)) ret.kvRangeBuilder = kvRangeBuilderFromRangeAndPartition{ sctx: b.ctx, partitions: partitions, @@ -3428,11 +3433,14 @@ func (builder *dataReaderBuilder) prunePartitionForInnerExecutor(tbl table.Table usedPartition = append(usedPartition, p) } } + + // To make the final key ranges involving multiple partitions ordered. + sort.Sort(partitionSlice(usedPartition)) return usedPartition, true, contentPos, nil } func buildNoRangeIndexReader(b *executorBuilder, v *plannercore.PhysicalIndexReader) (*IndexReaderExecutor, error) { - dagReq, streaming, err := constructDAGReq(b.ctx, v.IndexPlans, kv.TiKV) + dagReq, err := constructDAGReq(b.ctx, v.IndexPlans, kv.TiKV) if err != nil { return nil, err } @@ -3462,7 +3470,6 @@ func buildNoRangeIndexReader(b *executorBuilder, v *plannercore.PhysicalIndexRea keepOrder: is.KeepOrder, desc: is.Desc, columns: is.Columns, - streaming: streaming, paging: paging, corColInFilter: b.corColInDistPlan(v.IndexPlans), corColInAccess: b.corColInAccess(v.IndexPlans[0]), @@ -3546,10 +3553,10 @@ func (b *executorBuilder) buildIndexReader(v *plannercore.PhysicalIndexReader) E return ret } -func buildTableReq(b *executorBuilder, schemaLen int, plans []plannercore.PhysicalPlan) (dagReq *tipb.DAGRequest, streaming bool, val table.Table, err error) { - tableReq, tableStreaming, err := constructDAGReq(b.ctx, plans, kv.TiKV) +func buildTableReq(b *executorBuilder, schemaLen int, plans []plannercore.PhysicalPlan) (dagReq *tipb.DAGRequest, val table.Table, err error) { + tableReq, err := constructDAGReq(b.ctx, plans, kv.TiKV) if err != nil { - return nil, false, nil, err + return nil, nil, err } for i := 0; i < schemaLen; i++ { tableReq.OutputOffsets = append(tableReq.OutputOffsets, uint32(i)) @@ -3561,13 +3568,13 @@ func buildTableReq(b *executorBuilder, schemaLen int, plans []plannercore.Physic pt := tbl.(table.PartitionedTable) tbl = pt.GetPartition(physicalTableID) } - return tableReq, tableStreaming, tbl, err + return tableReq, tbl, err } -func buildIndexReq(ctx sessionctx.Context, schemaLen, handleLen int, plans []plannercore.PhysicalPlan) (dagReq *tipb.DAGRequest, streaming bool, err error) { - indexReq, indexStreaming, err := constructDAGReq(ctx, plans, kv.TiKV) +func buildIndexReq(ctx sessionctx.Context, schemaLen, handleLen int, plans []plannercore.PhysicalPlan) (dagReq *tipb.DAGRequest, err error) { + indexReq, err := constructDAGReq(ctx, plans, kv.TiKV) if err != nil { - return nil, false, err + return nil, err } indexReq.OutputOffsets = []uint32{} for i := 0; i < handleLen; i++ { @@ -3576,7 +3583,7 @@ func buildIndexReq(ctx sessionctx.Context, schemaLen, handleLen int, plans []pla if len(indexReq.OutputOffsets) == 0 { indexReq.OutputOffsets = []uint32{uint32(schemaLen)} } - return indexReq, indexStreaming, err + return indexReq, err } func buildNoRangeIndexLookUpReader(b *executorBuilder, v *plannercore.PhysicalIndexLookUpReader) (*IndexLookUpExecutor, error) { @@ -3591,16 +3598,15 @@ func buildNoRangeIndexLookUpReader(b *executorBuilder, v *plannercore.PhysicalIn // Should output pid col. handleLen++ } - indexReq, indexStreaming, err := buildIndexReq(b.ctx, len(is.Index.Columns), handleLen, v.IndexPlans) + indexReq, err := buildIndexReq(b.ctx, len(is.Index.Columns), handleLen, v.IndexPlans) if err != nil { return nil, err } indexPaging := false if v.Paging { indexPaging = true - indexStreaming = false } - tableReq, tableStreaming, tbl, err := buildTableReq(b, v.Schema().Len(), v.TablePlans) + tableReq, tbl, err := buildTableReq(b, v.Schema().Len(), v.TablePlans) if err != nil { return nil, err } @@ -3625,8 +3631,6 @@ func buildNoRangeIndexLookUpReader(b *executorBuilder, v *plannercore.PhysicalIn desc: is.Desc, tableRequest: tableReq, columns: ts.Columns, - indexStreaming: indexStreaming, - tableStreaming: tableStreaming, indexPaging: indexPaging, dataReaderBuilder: readerBuilder, corColInIdxSide: b.corColInDistPlan(v.IndexPlans), @@ -3726,7 +3730,6 @@ func (b *executorBuilder) buildIndexLookUpReader(v *plannercore.PhysicalIndexLoo func buildNoRangeIndexMergeReader(b *executorBuilder, v *plannercore.PhysicalIndexMergeReader) (*IndexMergeReaderExecutor, error) { partialPlanCount := len(v.PartialPlans) partialReqs := make([]*tipb.DAGRequest, 0, partialPlanCount) - partialStreamings := make([]bool, 0, partialPlanCount) indexes := make([]*model.IndexInfo, 0, partialPlanCount) descs := make([]bool, 0, partialPlanCount) feedbacks := make([]*statistics.QueryFeedback, 0, partialPlanCount) @@ -3735,7 +3738,6 @@ func buildNoRangeIndexMergeReader(b *executorBuilder, v *plannercore.PhysicalInd isCorColInPartialAccess := make([]bool, 0, partialPlanCount) for i := 0; i < partialPlanCount; i++ { var tempReq *tipb.DAGRequest - var tempStreaming bool var err error feedback := statistics.NewQueryFeedback(0, nil, 0, ts.Desc) @@ -3743,12 +3745,12 @@ func buildNoRangeIndexMergeReader(b *executorBuilder, v *plannercore.PhysicalInd feedbacks = append(feedbacks, feedback) if is, ok := v.PartialPlans[i][0].(*plannercore.PhysicalIndexScan); ok { - tempReq, tempStreaming, err = buildIndexReq(b.ctx, len(is.Index.Columns), ts.HandleCols.NumCols(), v.PartialPlans[i]) + tempReq, err = buildIndexReq(b.ctx, len(is.Index.Columns), ts.HandleCols.NumCols(), v.PartialPlans[i]) descs = append(descs, is.Desc) indexes = append(indexes, is.Index) } else { ts := v.PartialPlans[i][0].(*plannercore.PhysicalTableScan) - tempReq, tempStreaming, _, err = buildTableReq(b, len(ts.Columns), v.PartialPlans[i]) + tempReq, _, err = buildTableReq(b, len(ts.Columns), v.PartialPlans[i]) descs = append(descs, ts.Desc) indexes = append(indexes, nil) } @@ -3758,11 +3760,10 @@ func buildNoRangeIndexMergeReader(b *executorBuilder, v *plannercore.PhysicalInd collect := false tempReq.CollectRangeCounts = &collect partialReqs = append(partialReqs, tempReq) - partialStreamings = append(partialStreamings, tempStreaming) isCorColInPartialFilters = append(isCorColInPartialFilters, b.corColInDistPlan(v.PartialPlans[i])) isCorColInPartialAccess = append(isCorColInPartialAccess, b.corColInAccess(v.PartialPlans[i][0])) } - tableReq, tableStreaming, tblInfo, err := buildTableReq(b, v.Schema().Len(), v.TablePlans) + tableReq, tblInfo, err := buildTableReq(b, v.Schema().Len(), v.TablePlans) isCorColInTableFilter := b.corColInDistPlan(v.TablePlans) if err != nil { return nil, err @@ -3787,8 +3788,6 @@ func buildNoRangeIndexMergeReader(b *executorBuilder, v *plannercore.PhysicalInd descs: descs, tableRequest: tableReq, columns: ts.Columns, - partialStreamings: partialStreamings, - tableStreaming: tableStreaming, partialPlans: v.PartialPlans, tblPlans: v.TablePlans, dataReaderBuilder: readerBuilder, @@ -4012,6 +4011,10 @@ func (builder *dataReaderBuilder) buildTableReaderForIndexJoin(ctx context.Conte kvRanges = append(tmp, kvRanges...) } } + // The key ranges should be ordered. + sort.Slice(kvRanges, func(i, j int) bool { + return bytes.Compare(kvRanges[i].StartKey, kvRanges[j].StartKey) < 0 + }) return builder.buildTableReaderFromKvRanges(ctx, e, kvRanges) } @@ -4042,6 +4045,11 @@ func (builder *dataReaderBuilder) buildTableReaderForIndexJoin(ctx context.Conte kvRanges = append(kvRanges, tmp...) } } + + // The key ranges should be ordered. + sort.Slice(kvRanges, func(i, j int) bool { + return bytes.Compare(kvRanges[i].StartKey, kvRanges[j].StartKey) < 0 + }) return builder.buildTableReaderFromKvRanges(ctx, e, kvRanges) } @@ -4070,6 +4078,21 @@ type kvRangeBuilderFromRangeAndPartition struct { partitions []table.PhysicalTable } +// partitionSlice implement the sort interface. +type partitionSlice []table.PhysicalTable + +func (s partitionSlice) Len() int { + return len(s) +} + +func (s partitionSlice) Less(i, j int) bool { + return s[i].GetPhysicalID() < s[j].GetPhysicalID() +} + +func (s partitionSlice) Swap(i, j int) { + s[i], s[j] = s[j], s[i] +} + func (h kvRangeBuilderFromRangeAndPartition) buildKeyRangeSeparately(ranges []*ranger.Range) ([]int64, [][]kv.KeyRange, error) { ret := make([][]kv.KeyRange, 0, len(h.partitions)) pids := make([]int64, 0, len(h.partitions)) @@ -4087,6 +4110,7 @@ func (h kvRangeBuilderFromRangeAndPartition) buildKeyRangeSeparately(ranges []*r } func (h kvRangeBuilderFromRangeAndPartition) buildKeyRange(ranges []*ranger.Range) ([]kv.KeyRange, error) { + //nolint: prealloc var ret []kv.KeyRange for _, p := range h.partitions { pid := p.GetPhysicalID() @@ -4110,7 +4134,6 @@ func (builder *dataReaderBuilder) buildTableReaderBase(ctx context.Context, e *T SetStartTS(startTS). SetDesc(e.desc). SetKeepOrder(e.keepOrder). - SetStreaming(e.streaming). SetReadReplicaScope(e.readReplicaScope). SetIsStaleness(e.isStaleness). SetFromSessionVars(e.ctx.GetSessionVars()). @@ -4498,6 +4521,7 @@ func (b *executorBuilder) buildShuffle(v *plannercore.PhysicalShuffle) *ShuffleE concurrency: v.Concurrency, } + // 1. initialize the splitters splitters := make([]partitionSplitter, len(v.ByItemArrays)) switch v.SplitterType { case plannercore.PartitionHashSplitterType: @@ -4513,6 +4537,7 @@ func (b *executorBuilder) buildShuffle(v *plannercore.PhysicalShuffle) *ShuffleE } shuffle.splitters = splitters + // 2. initialize the data sources (build the data sources from physical plan to executors) shuffle.dataSources = make([]Executor, len(v.DataSources)) for i, dataSource := range v.DataSources { shuffle.dataSources[i] = b.build(dataSource) @@ -4521,13 +4546,24 @@ func (b *executorBuilder) buildShuffle(v *plannercore.PhysicalShuffle) *ShuffleE } } + // 3. initialize the workers head := v.Children()[0] + // A `PhysicalShuffleReceiverStub` for every worker have the same `DataSource` but different `Receiver`. + // We preallocate `PhysicalShuffleReceiverStub`s here and reuse them below. + stubs := make([]*plannercore.PhysicalShuffleReceiverStub, 0, len(v.DataSources)) + for _, dataSource := range v.DataSources { + stub := plannercore.PhysicalShuffleReceiverStub{ + DataSource: dataSource, + }.Init(b.ctx, dataSource.Stats(), dataSource.SelectBlockOffset(), nil) + stub.SetSchema(dataSource.Schema()) + stubs = append(stubs, stub) + } shuffle.workers = make([]*shuffleWorker, shuffle.concurrency) for i := range shuffle.workers { receivers := make([]*shuffleReceiver, len(v.DataSources)) for j, dataSource := range v.DataSources { receivers[j] = &shuffleReceiver{ - baseExecutor: newBaseExecutor(b.ctx, dataSource.Schema(), dataSource.ID()), + baseExecutor: newBaseExecutor(b.ctx, dataSource.Schema(), stubs[j].ID()), } } @@ -4535,12 +4571,9 @@ func (b *executorBuilder) buildShuffle(v *plannercore.PhysicalShuffle) *ShuffleE receivers: receivers, } - for j, dataSource := range v.DataSources { - stub := plannercore.PhysicalShuffleReceiverStub{ - Receiver: (unsafe.Pointer)(receivers[j]), - DataSource: dataSource, - }.Init(b.ctx, dataSource.Stats(), dataSource.SelectBlockOffset(), nil) - stub.SetSchema(dataSource.Schema()) + for j := range v.DataSources { + stub := stubs[j] + stub.Receiver = (unsafe.Pointer)(receivers[j]) v.Tails[j].SetChildren(stub) } diff --git a/executor/compact_table_test.go b/executor/compact_table_test.go index 648c631e44a6e..f5e22b56b6e5d 100644 --- a/executor/compact_table_test.go +++ b/executor/compact_table_test.go @@ -24,14 +24,37 @@ import ( "github.com/pingcap/errors" "github.com/pingcap/kvproto/pkg/kvrpcpb" + "github.com/pingcap/kvproto/pkg/metapb" "github.com/pingcap/tidb/store/mockstore" + "github.com/pingcap/tidb/store/mockstore/unistore" "github.com/pingcap/tidb/testkit" "github.com/stretchr/testify/require" + "github.com/tikv/client-go/v2/testutils" "github.com/tikv/client-go/v2/tikv" "github.com/tikv/client-go/v2/tikvrpc" "go.uber.org/atomic" ) +// withMockTiFlash sets the mockStore to have N TiFlash stores (naming as tiflash0, tiflash1, ...). +func withMockTiFlash(nodes int) mockstore.MockTiKVStoreOption { + return mockstore.WithMultipleOptions( + mockstore.WithClusterInspector(func(c testutils.Cluster) { + mockCluster := c.(*unistore.Cluster) + _, _, region1 := mockstore.BootstrapWithSingleStore(c) + tiflashIdx := 0 + for tiflashIdx < nodes { + store2 := c.AllocID() + peer2 := c.AllocID() + addr2 := fmt.Sprintf("tiflash%d", tiflashIdx) + mockCluster.AddStore(store2, addr2, &metapb.StoreLabel{Key: "engine", Value: "tiflash"}) + mockCluster.AddPeer(region1, store2, peer2) + tiflashIdx++ + } + }), + mockstore.WithStoreType(mockstore.EmbedUnistore), + ) +} + func TestCompactTableNoTiFlashReplica(t *testing.T) { store, clean := testkit.CreateMockStore(t) defer clean() diff --git a/executor/copr_cache_test.go b/executor/copr_cache_test.go index 3d9e73f7cd212..78bef9bed05cd 100644 --- a/executor/copr_cache_test.go +++ b/executor/copr_cache_test.go @@ -35,7 +35,7 @@ func TestIntegrationCopCache(t *testing.T) { config.StoreGlobalConfig(config.NewConfig()) defer config.StoreGlobalConfig(originConfig) - cli := ®ionProperityClient{} + cli := &testkit.RegionProperityClient{} hijackClient := func(c tikv.Client) tikv.Client { cli.Client = c return cli @@ -53,6 +53,9 @@ func TestIntegrationCopCache(t *testing.T) { tk.MustExec("use test") tk.MustExec("create table t (a int primary key)") + // TODO(tiancaiamao) update the test and support cop cache for paging. + tk.MustExec("set @@tidb_enable_paging = off") + tblInfo, err := dom.InfoSchema().TableByName(model.NewCIStr("test"), model.NewCIStr("t")) require.NoError(t, err) tid := tblInfo.Meta().ID diff --git a/executor/ddl_test.go b/executor/ddl_test.go index eedc8f212147a..bf9da41257e04 100644 --- a/executor/ddl_test.go +++ b/executor/ddl_test.go @@ -102,14 +102,11 @@ func TestCreateTable(t *testing.T) { tk := testkit.NewTestKit(t, store) tk.MustExec("use test") // Test create an exist database - _, err := tk.Exec("CREATE database test") - require.Error(t, err) + tk.MustExecToErr("CREATE database test") // Test create an exist table tk.MustExec("CREATE TABLE create_test (id INT NOT NULL DEFAULT 1, name varchar(255), PRIMARY KEY(id));") - - _, err = tk.Exec("CREATE TABLE create_test (id INT NOT NULL DEFAULT 1, name varchar(255), PRIMARY KEY(id));") - require.Error(t, err) + tk.MustExecToErr("CREATE TABLE create_test (id INT NOT NULL DEFAULT 1, name varchar(255), PRIMARY KEY(id));") // Test "if not exist" tk.MustExec("CREATE TABLE if not exists test(id INT NOT NULL DEFAULT 1, name varchar(255), PRIMARY KEY(id));") @@ -169,14 +166,12 @@ func TestCreateTable(t *testing.T) { // test Err case for multiple collate specified in column when create. tk.MustExec("drop table if exists test_err_multiple_collate;") - _, err = tk.Exec("create table test_err_multiple_collate (a char(1) charset utf8mb4 collate utf8_unicode_ci collate utf8_general_ci) charset utf8mb4 collate utf8mb4_bin") - require.Error(t, err) - require.Equal(t, dbterror.ErrCollationCharsetMismatch.GenWithStackByArgs("utf8_unicode_ci", "utf8mb4").Error(), err.Error()) + tk.MustGetErrMsg("create table test_err_multiple_collate (a char(1) charset utf8mb4 collate utf8_unicode_ci collate utf8_general_ci) charset utf8mb4 collate utf8mb4_bin", + dbterror.ErrCollationCharsetMismatch.GenWithStackByArgs("utf8_unicode_ci", "utf8mb4").Error()) tk.MustExec("drop table if exists test_err_multiple_collate;") - _, err = tk.Exec("create table test_err_multiple_collate (a char(1) collate utf8_unicode_ci collate utf8mb4_general_ci) charset utf8mb4 collate utf8mb4_bin") - require.Error(t, err) - require.Equal(t, dbterror.ErrCollationCharsetMismatch.GenWithStackByArgs("utf8mb4_general_ci", "utf8").Error(), err.Error()) + tk.MustGetErrMsg("create table test_err_multiple_collate (a char(1) collate utf8_unicode_ci collate utf8mb4_general_ci) charset utf8mb4 collate utf8mb4_bin", + dbterror.ErrCollationCharsetMismatch.GenWithStackByArgs("utf8mb4_general_ci", "utf8").Error()) // table option is auto-increment tk.MustExec("drop table if exists create_auto_increment_test;") @@ -390,11 +385,9 @@ func TestTruncateSequence(t *testing.T) { tk := testkit.NewTestKit(t, store) tk.MustExec("use test") tk.MustExec("create sequence if not exists seq") - _, err := tk.Exec("truncate table seq") - require.EqualError(t, err, "[schema:1146]Table 'test.seq' doesn't exist") + tk.MustGetErrMsg("truncate table seq", "[schema:1146]Table 'test.seq' doesn't exist") tk.MustExec("create sequence if not exists seq1 start 10 increment 2 maxvalue 10000 cycle") - _, err = tk.Exec("truncate table seq1") - require.EqualError(t, err, "[schema:1146]Table 'test.seq1' doesn't exist") + tk.MustGetErrMsg("truncate table seq1", "[schema:1146]Table 'test.seq1' doesn't exist") tk.MustExec("drop sequence if exists seq") tk.MustExec("drop sequence if exists seq1") } @@ -457,13 +450,10 @@ func TestCreateDropDatabase(t *testing.T) { tk.MustExec("create database drop_test;") tk.MustExec("use drop_test;") tk.MustExec("drop database drop_test;") - _, err := tk.Exec("drop table t;") - require.Equal(t, plannercore.ErrNoDB.Error(), err.Error()) - err = tk.ExecToErr("select * from t;") - require.Equal(t, plannercore.ErrNoDB.Error(), err.Error()) + tk.MustGetDBError("drop table t;", plannercore.ErrNoDB) + tk.MustGetDBError("select * from t;", plannercore.ErrNoDB) - _, err = tk.Exec("drop database mysql") - require.Error(t, err) + tk.MustExecToErr("drop database mysql") tk.MustExec("create database charset_test charset ascii;") tk.MustQuery("show create database charset_test;").Check(testkit.RowsWithSep("|", @@ -517,9 +507,7 @@ func TestCreateDropTable(t *testing.T) { tk.MustExec("drop table if exists drop_test") tk.MustExec("create table drop_test (a int)") tk.MustExec("drop table drop_test") - - _, err := tk.Exec("drop table mysql.gc_delete_range") - require.Error(t, err) + tk.MustExecToErr("drop table mysql.gc_delete_range") } func TestCreateDropView(t *testing.T) { @@ -528,21 +516,14 @@ func TestCreateDropView(t *testing.T) { tk := testkit.NewTestKit(t, store) tk.MustExec("use test") tk.MustExec("create or replace view drop_test as select 1,2") - - _, err := tk.Exec("drop table drop_test") - require.EqualError(t, err, "[schema:1051]Unknown table 'test.drop_test'") + tk.MustGetErrMsg("drop table drop_test", "[schema:1051]Unknown table 'test.drop_test'") tk.MustExec("drop view if exists drop_test") - _, err = tk.Exec("drop view mysql.gc_delete_range") - require.EqualError(t, err, "Drop tidb system table 'mysql.gc_delete_range' is forbidden") - - _, err = tk.Exec("drop view drop_test") - require.EqualError(t, err, "[schema:1051]Unknown table 'test.drop_test'") - + tk.MustGetErrMsg("drop view mysql.gc_delete_range", "Drop tidb system table 'mysql.gc_delete_range' is forbidden") + tk.MustGetErrMsg("drop view drop_test", "[schema:1051]Unknown table 'test.drop_test'") tk.MustExec("create table t_v(a int)") - _, err = tk.Exec("drop view t_v") - require.EqualError(t, err, "[ddl:1347]'test.t_v' is not VIEW") + tk.MustGetErrMsg("drop view t_v", "[ddl:1347]'test.t_v' is not VIEW") tk.MustExec("create table t_v1(a int, b int);") tk.MustExec("create table t_v2(a int, b int);") @@ -638,8 +619,7 @@ func TestAddNotNullColumnNoDefault(t *testing.T) { require.Equal(t, "0", col2.OriginDefaultValue) tk.MustQuery("select * from nn").Check(testkit.Rows("1 0", "2 0")) - _, err = tk.Exec("insert nn (c1) values (3)") - require.Error(t, err) + tk.MustExecToErr("insert nn (c1) values (3)") tk.MustExec("set sql_mode=''") tk.MustExec("insert nn (c1) values (3)") tk.MustQuery("select * from nn").Check(testkit.Rows("1 0", "2 0", "3 0")) @@ -652,15 +632,11 @@ func TestAlterTableModifyColumn(t *testing.T) { tk.MustExec("use test") tk.MustExec("drop table if exists mc") tk.MustExec("create table mc(c1 int, c2 varchar(10), c3 bit)") - _, err := tk.Exec("alter table mc modify column c1 short") - require.Error(t, err) + tk.MustExecToErr("alter table mc modify column c1 short") tk.MustExec("alter table mc modify column c1 bigint") - _, err = tk.Exec("alter table mc modify column c2 blob") - require.Error(t, err) - - _, err = tk.Exec("alter table mc modify column c2 varchar(8)") - require.NoError(t, err) + tk.MustExecToErr("alter table mc modify column c2 blob") + tk.MustExec("alter table mc modify column c2 varchar(8)") tk.MustExec("alter table mc modify column c2 varchar(11)") tk.MustExec("alter table mc modify column c2 text(13)") tk.MustExec("alter table mc modify column c2 text") @@ -670,19 +646,18 @@ func TestAlterTableModifyColumn(t *testing.T) { expected := "CREATE TABLE `mc` (\n `c1` bigint(20) DEFAULT NULL,\n `c2` text DEFAULT NULL,\n `c3` bit(1) DEFAULT NULL\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin" require.Equal(t, expected, createSQL) tk.MustExec("create or replace view alter_view as select c1,c2 from mc") - _, err = tk.Exec("alter table alter_view modify column c2 text") - require.Equal(t, dbterror.ErrWrongObject.GenWithStackByArgs("test", "alter_view", "BASE TABLE").Error(), err.Error()) + tk.MustGetErrMsg("alter table alter_view modify column c2 text", + dbterror.ErrWrongObject.GenWithStackByArgs("test", "alter_view", "BASE TABLE").Error()) tk.MustExec("drop view alter_view") tk.MustExec("create sequence alter_seq") - _, err = tk.Exec("alter table alter_seq modify column c int") - require.Equal(t, dbterror.ErrWrongObject.GenWithStackByArgs("test", "alter_seq", "BASE TABLE").Error(), err.Error()) + tk.MustGetErrMsg("alter table alter_seq modify column c int", + dbterror.ErrWrongObject.GenWithStackByArgs("test", "alter_seq", "BASE TABLE").Error()) tk.MustExec("drop sequence alter_seq") // test multiple collate modification in column. tk.MustExec("drop table if exists modify_column_multiple_collate") tk.MustExec("create table modify_column_multiple_collate (a char(1) collate utf8_bin collate utf8_general_ci) charset utf8mb4 collate utf8mb4_bin") - _, err = tk.Exec("alter table modify_column_multiple_collate modify column a char(1) collate utf8mb4_bin;") - require.NoError(t, err) + tk.MustExec("alter table modify_column_multiple_collate modify column a char(1) collate utf8mb4_bin;") tt, err := domain.GetDomain(tk.Session()).InfoSchema().TableByName(model.NewCIStr("test"), model.NewCIStr("modify_column_multiple_collate")) require.NoError(t, err) require.Equal(t, "utf8mb4", tt.Cols()[0].GetCharset()) @@ -704,15 +679,11 @@ func TestAlterTableModifyColumn(t *testing.T) { // test Err case for multiple collate modification in column. tk.MustExec("drop table if exists err_modify_multiple_collate;") tk.MustExec("create table err_modify_multiple_collate (a char(1) collate utf8_bin collate utf8_general_ci) charset utf8mb4 collate utf8mb4_bin") - _, err = tk.Exec("alter table err_modify_multiple_collate modify column a char(1) charset utf8mb4 collate utf8_bin;") - require.Error(t, err) - require.Equal(t, dbterror.ErrCollationCharsetMismatch.GenWithStackByArgs("utf8_bin", "utf8mb4").Error(), err.Error()) + tk.MustGetErrMsg("alter table err_modify_multiple_collate modify column a char(1) charset utf8mb4 collate utf8_bin;", dbterror.ErrCollationCharsetMismatch.GenWithStackByArgs("utf8_bin", "utf8mb4").Error()) tk.MustExec("drop table if exists err_modify_multiple_collate;") tk.MustExec("create table err_modify_multiple_collate (a char(1) collate utf8_bin collate utf8_general_ci) charset utf8mb4 collate utf8mb4_bin") - _, err = tk.Exec("alter table err_modify_multiple_collate modify column a char(1) collate utf8_bin collate utf8mb4_bin;") - require.Error(t, err) - require.Equal(t, dbterror.ErrCollationCharsetMismatch.GenWithStackByArgs("utf8mb4_bin", "utf8").Error(), err.Error()) + tk.MustGetErrMsg("alter table err_modify_multiple_collate modify column a char(1) collate utf8_bin collate utf8mb4_bin;", dbterror.ErrCollationCharsetMismatch.GenWithStackByArgs("utf8mb4_bin", "utf8").Error()) } @@ -795,7 +766,7 @@ func TestColumnCharsetAndCollate(t *testing.T) { require.Equalf(t, tt.exptCharset, tb.Meta().Columns[0].GetCharset(), sql) require.Equalf(t, tt.exptCollate, tb.Meta().Columns[0].GetCollate(), sql) } else { - _, err := tk.Exec(sql) + err := tk.ExecToErr(sql) require.Errorf(t, err, sql) } } @@ -811,37 +782,32 @@ func TestTooLargeIdentifierLength(t *testing.T) { dbName1, dbName2 := strings.Repeat("a", mysql.MaxDatabaseNameLength), strings.Repeat("a", mysql.MaxDatabaseNameLength+1) tk.MustExec(fmt.Sprintf("create database %s", dbName1)) tk.MustExec(fmt.Sprintf("drop database %s", dbName1)) - _, err := tk.Exec(fmt.Sprintf("create database %s", dbName2)) - require.Equal(t, fmt.Sprintf("[ddl:1059]Identifier name '%s' is too long", dbName2), err.Error()) + tk.MustGetErrMsg(fmt.Sprintf("create database %s", dbName2), fmt.Sprintf("[ddl:1059]Identifier name '%s' is too long", dbName2)) // for table. tk.MustExec("use test") tableName1, tableName2 := strings.Repeat("b", mysql.MaxTableNameLength), strings.Repeat("b", mysql.MaxTableNameLength+1) tk.MustExec(fmt.Sprintf("create table %s(c int)", tableName1)) tk.MustExec(fmt.Sprintf("drop table %s", tableName1)) - _, err = tk.Exec(fmt.Sprintf("create table %s(c int)", tableName2)) - require.Equal(t, fmt.Sprintf("[ddl:1059]Identifier name '%s' is too long", tableName2), err.Error()) + tk.MustGetErrMsg(fmt.Sprintf("create table %s(c int)", tableName2), fmt.Sprintf("[ddl:1059]Identifier name '%s' is too long", tableName2)) // for column. tk.MustExec("drop table if exists t;") columnName1, columnName2 := strings.Repeat("c", mysql.MaxColumnNameLength), strings.Repeat("c", mysql.MaxColumnNameLength+1) tk.MustExec(fmt.Sprintf("create table t(%s int)", columnName1)) tk.MustExec("drop table t") - _, err = tk.Exec(fmt.Sprintf("create table t(%s int)", columnName2)) - require.Equal(t, fmt.Sprintf("[ddl:1059]Identifier name '%s' is too long", columnName2), err.Error()) + tk.MustGetErrMsg(fmt.Sprintf("create table t(%s int)", columnName2), fmt.Sprintf("[ddl:1059]Identifier name '%s' is too long", columnName2)) // for index. tk.MustExec("create table t(c int);") indexName1, indexName2 := strings.Repeat("d", mysql.MaxIndexIdentifierLen), strings.Repeat("d", mysql.MaxIndexIdentifierLen+1) tk.MustExec(fmt.Sprintf("create index %s on t(c)", indexName1)) tk.MustExec(fmt.Sprintf("drop index %s on t", indexName1)) - _, err = tk.Exec(fmt.Sprintf("create index %s on t(c)", indexName2)) - require.Equal(t, fmt.Sprintf("[ddl:1059]Identifier name '%s' is too long", indexName2), err.Error()) + tk.MustGetErrMsg(fmt.Sprintf("create index %s on t(c)", indexName2), fmt.Sprintf("[ddl:1059]Identifier name '%s' is too long", indexName2)) // for create table with index. tk.MustExec("drop table t;") - _, err = tk.Exec(fmt.Sprintf("create table t(c int, index %s(c));", indexName2)) - require.Equal(t, fmt.Sprintf("[ddl:1059]Identifier name '%s' is too long", indexName2), err.Error()) + tk.MustGetErrMsg(fmt.Sprintf("create table t(c int, index %s(c));", indexName2), fmt.Sprintf("[ddl:1059]Identifier name '%s' is too long", indexName2)) } func TestShardRowIDBits(t *testing.T) { @@ -1013,9 +979,7 @@ func TestAutoRandomBitsData(t *testing.T) { for i := -10; i < 10; i++ { tk.MustExec(fmt.Sprintf("insert into t values(%d, %d)", i+autoRandBitsUpperBound, i)) } - _, err := tk.Exec("insert into t (b) values (0)") - require.Error(t, err) - require.Equal(t, autoid.ErrAutoRandReadFailed.GenWithStackByArgs().Error(), err.Error()) + tk.MustGetErrMsg("insert into t (b) values (0)", autoid.ErrAutoRandReadFailed.GenWithStackByArgs().Error()) tk.MustExec("drop table t") // Test overflow. @@ -1023,17 +987,13 @@ func TestAutoRandomBitsData(t *testing.T) { // Here we cannot fill the all values for a `bigint` column, // so firstly we rebase auto_rand to the position before overflow. tk.MustExec(fmt.Sprintf("insert into t values (%d, %d)", autoRandBitsUpperBound, 1)) - _, err = tk.Exec("insert into t (b) values (0)") - require.Error(t, err) - require.Equal(t, autoid.ErrAutoRandReadFailed.GenWithStackByArgs().Error(), err.Error()) + tk.MustGetErrMsg("insert into t (b) values (0)", autoid.ErrAutoRandReadFailed.GenWithStackByArgs().Error()) tk.MustExec("drop table t") tk.MustExec("create table t (a bigint primary key auto_random(15), b int)") tk.MustExec("insert into t values (1, 2)") tk.MustExec(fmt.Sprintf("update t set a = %d where a = 1", autoRandBitsUpperBound)) - _, err = tk.Exec("insert into t (b) values (0)") - require.Error(t, err) - require.Equal(t, autoid.ErrAutoRandReadFailed.GenWithStackByArgs().Error(), err.Error()) + tk.MustGetErrMsg("insert into t (b) values (0)", autoid.ErrAutoRandReadFailed.GenWithStackByArgs().Error()) tk.MustExec("drop table t") // Test insert negative integers explicitly won't trigger rebase. @@ -1157,7 +1117,7 @@ func TestAutoRandomTableOption(t *testing.T) { // Alter auto_random_base on non auto_random table. tk.MustExec("create table alter_auto_random_normal (a int)") - _, err = tk.Exec("alter table alter_auto_random_normal auto_random_base = 100") + err = tk.ExecToErr("alter table alter_auto_random_normal auto_random_base = 100") require.Error(t, err) require.Contains(t, err.Error(), autoid.AutoRandomRebaseNotApplicable) } @@ -1327,45 +1287,36 @@ func TestIllegalFunctionCall4GeneratedColumns(t *testing.T) { tk := testkit.NewTestKit(t, store) tk.MustExec("use test") // Test create an exist database - _, err := tk.Exec("CREATE database test") - require.Error(t, err) - - _, err = tk.Exec("create table t1 (b double generated always as (rand()) virtual);") - require.Equal(t, dbterror.ErrGeneratedColumnFunctionIsNotAllowed.GenWithStackByArgs("b").Error(), err.Error()) - - _, err = tk.Exec("create table t1 (a varchar(64), b varchar(1024) generated always as (load_file(a)) virtual);") - require.Equal(t, dbterror.ErrGeneratedColumnFunctionIsNotAllowed.GenWithStackByArgs("b").Error(), err.Error()) - - _, err = tk.Exec("create table t1 (a datetime generated always as (curdate()) virtual);") - require.Equal(t, dbterror.ErrGeneratedColumnFunctionIsNotAllowed.GenWithStackByArgs("a").Error(), err.Error()) - - _, err = tk.Exec("create table t1 (a datetime generated always as (current_time()) virtual);") - require.Equal(t, dbterror.ErrGeneratedColumnFunctionIsNotAllowed.GenWithStackByArgs("a").Error(), err.Error()) - - _, err = tk.Exec("create table t1 (a datetime generated always as (current_timestamp()) virtual);") - require.Equal(t, dbterror.ErrGeneratedColumnFunctionIsNotAllowed.GenWithStackByArgs("a").Error(), err.Error()) - - _, err = tk.Exec("create table t1 (a datetime, b varchar(10) generated always as (localtime()) virtual);") - require.Equal(t, dbterror.ErrGeneratedColumnFunctionIsNotAllowed.GenWithStackByArgs("b").Error(), err.Error()) - - _, err = tk.Exec("create table t1 (a varchar(1024) generated always as (uuid()) virtual);") - require.Equal(t, dbterror.ErrGeneratedColumnFunctionIsNotAllowed.GenWithStackByArgs("a").Error(), err.Error()) - - _, err = tk.Exec("create table t1 (a varchar(1024), b varchar(1024) generated always as (is_free_lock(a)) virtual);") - require.Equal(t, dbterror.ErrGeneratedColumnFunctionIsNotAllowed.GenWithStackByArgs("b").Error(), err.Error()) + tk.MustExecToErr("CREATE database test") + + tk.MustGetErrMsg("create table t1 (b double generated always as (rand()) virtual);", + dbterror.ErrGeneratedColumnFunctionIsNotAllowed.GenWithStackByArgs("b").Error()) + tk.MustGetErrMsg("create table t1 (a varchar(64), b varchar(1024) generated always as (load_file(a)) virtual);", + dbterror.ErrGeneratedColumnFunctionIsNotAllowed.GenWithStackByArgs("b").Error()) + tk.MustGetErrMsg("create table t1 (a datetime generated always as (curdate()) virtual);", + dbterror.ErrGeneratedColumnFunctionIsNotAllowed.GenWithStackByArgs("a").Error()) + tk.MustGetErrMsg("create table t1 (a datetime generated always as (current_time()) virtual);", + dbterror.ErrGeneratedColumnFunctionIsNotAllowed.GenWithStackByArgs("a").Error()) + tk.MustGetErrMsg("create table t1 (a datetime generated always as (current_timestamp()) virtual);", + dbterror.ErrGeneratedColumnFunctionIsNotAllowed.GenWithStackByArgs("a").Error()) + tk.MustGetErrMsg("create table t1 (a datetime, b varchar(10) generated always as (localtime()) virtual);", + dbterror.ErrGeneratedColumnFunctionIsNotAllowed.GenWithStackByArgs("b").Error()) + tk.MustGetErrMsg("create table t1 (a varchar(1024) generated always as (uuid()) virtual);", + dbterror.ErrGeneratedColumnFunctionIsNotAllowed.GenWithStackByArgs("a").Error()) + tk.MustGetErrMsg("create table t1 (a varchar(1024), b varchar(1024) generated always as (is_free_lock(a)) virtual);", + dbterror.ErrGeneratedColumnFunctionIsNotAllowed.GenWithStackByArgs("b").Error()) tk.MustExec("create table t1 (a bigint not null primary key auto_increment, b bigint, c bigint as (b + 1));") - _, err = tk.Exec("alter table t1 add column d varchar(1024) generated always as (database());") - require.Equal(t, dbterror.ErrGeneratedColumnFunctionIsNotAllowed.GenWithStackByArgs("d").Error(), err.Error()) + tk.MustGetErrMsg("alter table t1 add column d varchar(1024) generated always as (database());", + dbterror.ErrGeneratedColumnFunctionIsNotAllowed.GenWithStackByArgs("d").Error()) tk.MustExec("alter table t1 add column d bigint generated always as (b + 1); ") - _, err = tk.Exec("alter table t1 modify column d bigint generated always as (connection_id());") - require.Equal(t, dbterror.ErrGeneratedColumnFunctionIsNotAllowed.GenWithStackByArgs("d").Error(), err.Error()) - - _, err = tk.Exec("alter table t1 change column c cc bigint generated always as (connection_id());") - require.Equal(t, dbterror.ErrGeneratedColumnFunctionIsNotAllowed.GenWithStackByArgs("cc").Error(), err.Error()) + tk.MustGetErrMsg("alter table t1 modify column d bigint generated always as (connection_id());", + dbterror.ErrGeneratedColumnFunctionIsNotAllowed.GenWithStackByArgs("d").Error()) + tk.MustGetErrMsg("alter table t1 change column c cc bigint generated always as (connection_id());", + dbterror.ErrGeneratedColumnFunctionIsNotAllowed.GenWithStackByArgs("cc").Error()) } func TestGeneratedColumnRelatedDDL(t *testing.T) { @@ -1377,25 +1328,21 @@ func TestGeneratedColumnRelatedDDL(t *testing.T) { _, err := tk.Exec("CREATE database test") require.Error(t, err) - _, err = tk.Exec("create table t1 (a bigint not null primary key auto_increment, b bigint as (a + 1));") - require.Equal(t, dbterror.ErrGeneratedColumnRefAutoInc.GenWithStackByArgs("b").Error(), err.Error()) - + tk.MustGetErrMsg("create table t1 (a bigint not null primary key auto_increment, b bigint as (a + 1));", + dbterror.ErrGeneratedColumnRefAutoInc.GenWithStackByArgs("b").Error()) tk.MustExec("create table t1 (a bigint not null primary key auto_increment, b bigint, c bigint as (b + 1));") - - _, err = tk.Exec("alter table t1 add column d bigint generated always as (a + 1);") - require.Equal(t, dbterror.ErrGeneratedColumnRefAutoInc.GenWithStackByArgs("d").Error(), err.Error()) - + tk.MustGetErrMsg("alter table t1 add column d bigint generated always as (a + 1);", + dbterror.ErrGeneratedColumnRefAutoInc.GenWithStackByArgs("d").Error()) tk.MustExec("alter table t1 add column d bigint generated always as (b + 1);") - - _, err = tk.Exec("alter table t1 modify column d bigint generated always as (a + 1);") - require.Equal(t, dbterror.ErrGeneratedColumnRefAutoInc.GenWithStackByArgs("d").Error(), err.Error()) + tk.MustGetErrMsg("alter table t1 modify column d bigint generated always as (a + 1);", + dbterror.ErrGeneratedColumnRefAutoInc.GenWithStackByArgs("d").Error()) // This mysql compatibility check can be disabled using tidb_enable_auto_increment_in_generated tk.MustExec("set session tidb_enable_auto_increment_in_generated = 1;") tk.MustExec("alter table t1 modify column d bigint generated always as (a + 1);") - _, err = tk.Exec("alter table t1 add column e bigint as (z + 1);") - require.Equal(t, dbterror.ErrBadField.GenWithStackByArgs("z", "generated column function").Error(), err.Error()) + tk.MustGetErrMsg("alter table t1 add column e bigint as (z + 1);", + dbterror.ErrBadField.GenWithStackByArgs("z", "generated column function").Error()) tk.MustExec("drop table t1;") @@ -1591,8 +1538,7 @@ func TestRenameTable(t *testing.T) { tk.MustExec("insert rename2.t1 values ()") result = tk.MustQuery("select * from rename2.t1") result.Check(testkit.Rows("1", "100000", "100001")) - _, err := tk.Exec("insert rename1.t values ()") - require.Error(t, err) + tk.MustExecToErr("insert rename1.t values ()") tk.MustExec("drop database rename1") tk.MustExec("drop database rename2") } @@ -1603,13 +1549,12 @@ func TestAutoIncrementColumnErrorMessage(t *testing.T) { tk := testkit.NewTestKit(t, store) tk.MustExec("use test") // Test create an exist database - _, err := tk.Exec("CREATE database test") - require.Error(t, err) + tk.MustExecToErr("CREATE database test") tk.MustExec("CREATE TABLE t1 (t1_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY);") - _, err = tk.Exec("CREATE INDEX idx1 ON t1 ((t1_id + t1_id));") - require.Equal(t, dbterror.ErrExpressionIndexCanNotRefer.GenWithStackByArgs("idx1").Error(), err.Error()) + tk.MustGetErrMsg("CREATE INDEX idx1 ON t1 ((t1_id + t1_id));", + dbterror.ErrExpressionIndexCanNotRefer.GenWithStackByArgs("idx1").Error()) // This mysql compatibility check can be disabled using tidb_enable_auto_increment_in_generated tk.MustExec("SET SESSION tidb_enable_auto_increment_in_generated = 1;") diff --git a/executor/delete.go b/executor/delete.go index d72eae827d9e2..5e759e12db25c 100644 --- a/executor/delete.go +++ b/executor/delete.go @@ -158,20 +158,26 @@ func (e *DeleteExec) doBatchDelete(ctx context.Context) error { } func (e *DeleteExec) composeTblRowMap(tblRowMap tableRowMapType, colPosInfos []plannercore.TblColPosInfo, joinedRow []types.Datum) error { - // iterate all the joined tables, and got the copresonding rows in joinedRow. + // iterate all the joined tables, and got the corresponding rows in joinedRow. for _, info := range colPosInfos { if unmatchedOuterRow(info, joinedRow) { continue } if tblRowMap[info.TblID] == nil { - tblRowMap[info.TblID] = kv.NewHandleMap() + tblRowMap[info.TblID] = kv.NewMemAwareHandleMap[[]types.Datum]() } handle, err := info.HandleCols.BuildHandleByDatums(joinedRow) if err != nil { return err } // tblRowMap[info.TblID][handle] hold the row datas binding to this table and this handle. - tblRowMap[info.TblID].Set(handle, joinedRow[info.Start:info.End]) + _, exist := tblRowMap[info.TblID].Get(handle) + memDelta := tblRowMap[info.TblID].Set(handle, joinedRow[info.Start:info.End]) + if !exist { + memDelta += types.EstimatedMemUsage(joinedRow, 1) + memDelta += int64(handle.ExtraMemSize()) + } + e.memTracker.Consume(memDelta) } return nil } @@ -240,6 +246,7 @@ func (e *DeleteExec) removeRow(ctx sessionctx.Context, t table.Table, h kv.Handl // Close implements the Executor Close interface. func (e *DeleteExec) Close() error { + defer e.memTracker.ReplaceBytesUsed(0) return e.children[0].Close() } @@ -254,4 +261,4 @@ func (e *DeleteExec) Open(ctx context.Context) error { // tableRowMapType is a map for unique (Table, Row) pair. key is the tableID. // the key in map[int64]Row is the joined table handle, which represent a unique reference row. // the value in map[int64]Row is the deleting row. -type tableRowMapType map[int64]*kv.HandleMap +type tableRowMapType map[int64]*kv.MemAwareHandleMap[[]types.Datum] diff --git a/executor/distsql.go b/executor/distsql.go index bf7484a094656..d20e11ae65df4 100644 --- a/executor/distsql.go +++ b/executor/distsql.go @@ -180,9 +180,8 @@ type IndexReaderExecutor struct { // outputColumns are only required by union scan. outputColumns []*expression.Column - feedback *statistics.QueryFeedback - streaming bool - paging bool + feedback *statistics.QueryFeedback + paging bool keepOrder bool desc bool @@ -283,7 +282,7 @@ func (e *IndexReaderExecutor) Open(ctx context.Context) error { func (e *IndexReaderExecutor) open(ctx context.Context, kvRanges []kv.KeyRange) error { var err error if e.corColInFilter { - e.dagPB.Executors, _, err = constructDistExec(e.ctx, e.plans) + e.dagPB.Executors, err = constructDistExec(e.ctx, e.plans) if err != nil { return err } @@ -309,7 +308,6 @@ func (e *IndexReaderExecutor) open(ctx context.Context, kvRanges []kv.KeyRange) SetStartTS(e.startTS). SetDesc(e.desc). SetKeepOrder(e.keepOrder). - SetStreaming(e.streaming). SetReadReplicaScope(e.readReplicaScope). SetIsStaleness(e.isStaleness). SetFromSessionVars(e.ctx.GetSessionVars()). @@ -374,9 +372,7 @@ type IndexLookUpExecutor struct { keepOrder bool desc bool - indexStreaming bool - tableStreaming bool - indexPaging bool + indexPaging bool corColInIdxSide bool corColInTblSide bool @@ -500,14 +496,14 @@ func (e *IndexLookUpExecutor) open(ctx context.Context) error { var err error if e.corColInIdxSide { - e.dagPB.Executors, _, err = constructDistExec(e.ctx, e.idxPlans) + e.dagPB.Executors, err = constructDistExec(e.ctx, e.idxPlans) if err != nil { return err } } if e.corColInTblSide { - e.tableRequest.Executors, _, err = constructDistExec(e.ctx, e.tblPlans) + e.tableRequest.Executors, err = constructDistExec(e.ctx, e.tblPlans) if err != nil { return err } @@ -585,7 +581,6 @@ func (e *IndexLookUpExecutor) startIndexWorker(ctx context.Context, workCh chan< SetStartTS(e.startTS). SetDesc(e.desc). SetKeepOrder(e.keepOrder). - SetStreaming(e.indexStreaming). SetPaging(e.indexPaging). SetReadReplicaScope(e.readReplicaScope). SetIsStaleness(e.isStaleness). @@ -688,7 +683,6 @@ func (e *IndexLookUpExecutor) buildTableReader(ctx context.Context, task *lookup readReplicaScope: e.readReplicaScope, isStaleness: e.isStaleness, columns: e.columns, - streaming: e.tableStreaming, feedback: statistics.NewQueryFeedback(0, nil, 0, false), corColInFilter: e.corColInTblSide, plans: e.tblPlans, diff --git a/executor/errors.go b/executor/errors.go index e593bdf31c82a..c65962f490f9c 100644 --- a/executor/errors.go +++ b/executor/errors.go @@ -32,6 +32,7 @@ var ( ErrUnsupportedPs = dbterror.ClassExecutor.NewStd(mysql.ErrUnsupportedPs) ErrSubqueryMoreThan1Row = dbterror.ClassExecutor.NewStd(mysql.ErrSubqueryNo1Row) ErrIllegalGrantForTable = dbterror.ClassExecutor.NewStd(mysql.ErrIllegalGrantForTable) + ErrColumnsNotMatched = dbterror.ClassExecutor.NewStd(mysql.ErrColumnNotMatched) ErrCantCreateUserWithGrant = dbterror.ClassExecutor.NewStd(mysql.ErrCantCreateUserWithGrant) ErrPasswordNoMatch = dbterror.ClassExecutor.NewStd(mysql.ErrPasswordNoMatch) @@ -54,6 +55,7 @@ var ( ErrInvalidSplitRegionRanges = dbterror.ClassExecutor.NewStd(mysql.ErrInvalidSplitRegionRanges) ErrViewInvalid = dbterror.ClassExecutor.NewStd(mysql.ErrViewInvalid) ErrInstanceScope = dbterror.ClassExecutor.NewStd(mysql.ErrInstanceScope) + ErrSettingNoopVariable = dbterror.ClassExecutor.NewStd(mysql.ErrSettingNoopVariable) ErrBRIEBackupFailed = dbterror.ClassExecutor.NewStd(mysql.ErrBRIEBackupFailed) ErrBRIERestoreFailed = dbterror.ClassExecutor.NewStd(mysql.ErrBRIERestoreFailed) diff --git a/executor/executor_failpoint_test.go b/executor/executor_failpoint_test.go index 7a091ebec126a..bac18b706717b 100644 --- a/executor/executor_failpoint_test.go +++ b/executor/executor_failpoint_test.go @@ -188,6 +188,11 @@ func TestSplitRegionTimeout(t *testing.T) { store, clean := testkit.CreateMockStore(t) defer clean() + require.NoError(t, failpoint.Enable("tikvclient/injectLiveness", `return("reachable")`)) + defer func() { + require.NoError(t, failpoint.Disable("tikvclient/injectLiveness")) + }() + require.NoError(t, failpoint.Enable("tikvclient/mockSplitRegionTimeout", `return(true)`)) tk := testkit.NewTestKit(t, store) tk.MustExec("use test") diff --git a/executor/executor_test.go b/executor/executor_test.go index 59bbdd3291744..c8e4304f1c22c 100644 --- a/executor/executor_test.go +++ b/executor/executor_test.go @@ -2069,42 +2069,6 @@ func TestCheckTableClusterIndex(t *testing.T) { tk.MustExec("admin check table admin_test;") } -func TestCoprocessorStreamingFlag(t *testing.T) { - store, clean := testkit.CreateMockStore(t) - defer clean() - - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("create table t (id int, value int, index idx(id))") - // Add some data to make statistics work. - for i := 0; i < 100; i++ { - tk.MustExec(fmt.Sprintf("insert into t values (%d, %d)", i, i)) - } - - tests := []struct { - sql string - expect bool - }{ - {"select * from t", true}, // TableReader - {"select * from t where id = 5", true}, // IndexLookup - {"select * from t where id > 5", true}, // Filter - {"select * from t limit 3", false}, // Limit - {"select avg(id) from t", false}, // Aggregate - {"select * from t order by value limit 3", false}, // TopN - } - - ctx := context.Background() - for _, test := range tests { - ctx1 := context.WithValue(ctx, "CheckSelectRequestHook", func(req *kv.Request) { - comment := fmt.Sprintf("sql=%s, expect=%v, get=%v", test.sql, test.expect, req.Streaming) - require.Equal(t, test.expect, req.Streaming, comment) - }) - rs, err := tk.Session().Execute(ctx1, test.sql) - require.NoError(t, err) - tk.ResultSetToResult(rs[0], fmt.Sprintf("sql: %v", test.sql)) - } -} - func TestIncorrectLimitArg(t *testing.T) { store, clean := testkit.CreateMockStore(t) defer clean() diff --git a/executor/explain_test.go b/executor/explain_test.go index 6c5d28a4cad02..9d0545fb5a6b0 100644 --- a/executor/explain_test.go +++ b/executor/explain_test.go @@ -310,6 +310,7 @@ func TestCheckActRowsWithUnistore(t *testing.T) { tk.MustExec("create table t_unistore_act_rows(a int, b int, index(a, b))") tk.MustExec("insert into t_unistore_act_rows values (1, 0), (1, 0), (2, 0), (2, 1)") tk.MustExec("analyze table t_unistore_act_rows") + tk.MustExec("set @@tidb_merge_join_concurrency= 5;") type testStruct struct { sql string @@ -353,8 +354,19 @@ func TestCheckActRowsWithUnistore(t *testing.T) { sql: "with cte(a) as (select a from t_unistore_act_rows) select (select 1 from cte limit 1) from cte;", expected: []string{"4", "4", "4", "4", "4"}, }, + { + sql: "select a, row_number() over (partition by b) from t_unistore_act_rows;", + expected: []string{"4", "4", "4", "4", "4", "4", "4"}, + }, + { + sql: "select /*+ merge_join(t1, t2) */ * from t_unistore_act_rows t1 join t_unistore_act_rows t2 on t1.b = t2.b;", + expected: []string{"10", "10", "4", "4", "4", "4", "4", "4", "4", "4", "4", "4"}, + }, } + // Default RPC encoding may cause statistics explain result differ and then the test unstable. + tk.MustExec("set @@tidb_enable_chunk_rpc = on") + for _, test := range tests { checkActRows(t, tk, test.sql, test.expected) } @@ -421,3 +433,21 @@ func TestFix29401(t *testing.T) { ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;`) tk.MustExec(" explain select /*+ inl_hash_join(t1) */ * from tt123 t1 join tt123 t2 on t1.b=t2.e;") } + +func TestIssue35296(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + 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, d int, e int,index ia(a), index ib(b), index ic(c), index idd(d), index ie(e));") + + rows := tk.MustQuery("explain analyze select * from t where a = 10 or b = 30 or c = 10 or d = 1 or e = 90;").Rows() + + require.Contains(t, rows[0][0], "IndexMerge") + require.NotRegexp(t, "^time:0s", rows[1][5]) + require.NotRegexp(t, "^time:0s", rows[2][5]) + require.NotRegexp(t, "^time:0s", rows[3][5]) + require.NotRegexp(t, "^time:0s", rows[4][5]) + require.NotRegexp(t, "^time:0s", rows[5][5]) +} diff --git a/executor/grant.go b/executor/grant.go index da10998845f94..99db32abe79d1 100644 --- a/executor/grant.go +++ b/executor/grant.go @@ -163,7 +163,7 @@ func (e *GrantExec) Next(ctx context.Context, req *chunk.Chunk) error { return errors.Trace(ErrPasswordFormat) } authPlugin := mysql.AuthNativePassword - if user.AuthOpt.AuthPlugin != "" { + if user.AuthOpt != nil && user.AuthOpt.AuthPlugin != "" { authPlugin = user.AuthOpt.AuthPlugin } _, err := internalSession.(sqlexec.SQLExecutor).ExecuteInternal(ctx, @@ -511,13 +511,6 @@ func (e *GrantExec) grantDBLevel(priv *ast.PrivElem, user *ast.UserSpec, interna dbName = e.ctx.GetSessionVars().CurrentDB } - // Some privilege can not be granted to performance_schema.* in MySQL. - // As TiDB ignores the privilege management part for this system database, - // check is performed here - if strings.EqualFold(dbName, "performance_schema") && e.checkPerformanceSchemaPriv(priv.Priv) { - return e.dbAccessDenied(dbName) - } - sql := new(strings.Builder) sqlexec.MustFormatSQL(sql, "UPDATE %n.%n SET ", mysql.SystemDB, mysql.DBTable) err := composeDBPrivUpdate(sql, priv.Priv, "Y") @@ -582,28 +575,6 @@ func (e *GrantExec) grantColumnLevel(priv *ast.PrivElem, user *ast.UserSpec, int return nil } -func (e *GrantExec) dbAccessDenied(dbName string) error { - user := e.ctx.GetSessionVars().User - u := user.Username - h := user.Hostname - if len(user.AuthUsername) > 0 && len(user.AuthHostname) > 0 { - u = user.AuthUsername - h = user.AuthHostname - } - return ErrDBaccessDenied.GenWithStackByArgs(u, h, dbName) -} - -// If the privilege can not be granted, return true -func (e *GrantExec) checkPerformanceSchemaPriv(privType mysql.PrivilegeType) bool { - // Attempts to use GRANT ALL as shorthand for granting privileges - // at the database leval fail with an error - // See https://dev.mysql.com/doc/refman/8.0/en/performance-schema-table-characteristics.html for more detail - // Others are rejected in MySQL 8.0 - return privType == mysql.AllPriv || privType == mysql.CreatePriv || - privType == mysql.ReferencesPriv || privType == mysql.AlterPriv || privType == mysql.ExecutePriv || - privType == mysql.IndexPriv || privType == mysql.CreateViewPriv || privType == mysql.ShowViewPriv -} - // composeGlobalPrivUpdate composes update stmt assignment list string for global scope privilege update. func composeGlobalPrivUpdate(sql *strings.Builder, priv mysql.PrivilegeType, value string) error { if priv != mysql.AllPriv { diff --git a/executor/grant_test.go b/executor/grant_test.go index 05d64b0d7b698..9ea2f943071ea 100644 --- a/executor/grant_test.go +++ b/executor/grant_test.go @@ -19,6 +19,7 @@ import ( "strings" "testing" + "github.com/pingcap/tidb/errno" "github.com/pingcap/tidb/executor" "github.com/pingcap/tidb/infoschema" "github.com/pingcap/tidb/parser/auth" @@ -259,6 +260,13 @@ func TestCreateUserWhenGrant(t *testing.T) { testkit.Rows("test"), ) tk.MustExec(`DROP USER IF EXISTS 'test'@'%'`) + // Grant without a password. + tk.MustExec(`GRANT ALL PRIVILEGES ON *.* to 'test'@'%'`) + // Make sure user is created automatically when grant to a non-exists one. + tk.MustQuery(`SELECT user, plugin FROM mysql.user WHERE user='test' and host='%'`).Check( + testkit.Rows("test mysql_native_password"), + ) + tk.MustExec(`DROP USER IF EXISTS 'test'@'%'`) } func TestCreateUserWithTooLongName(t *testing.T) { @@ -522,41 +530,23 @@ func TestPerformanceSchemaPrivGrant(t *testing.T) { tk.MustExec("drop user issue27867;") }() require.True(t, tk.Session().Auth(&auth.UserIdentity{Username: "root", Hostname: "localhost"}, nil, nil)) - err := tk.ExecToErr("grant all on performance_schema.* to issue27867;") - require.Error(t, err) - require.EqualError(t, err, "[executor:1044]Access denied for user 'root'@'%' to database 'performance_schema'") + tk.MustGetErrCode("grant all on performance_schema.* to issue27867;", errno.ErrDBaccessDenied) // Check case insensitivity - err = tk.ExecToErr("grant all on PERFormanCE_scHemA.* to issue27867;") - require.Error(t, err) - require.EqualError(t, err, "[executor:1044]Access denied for user 'root'@'%' to database 'PERFormanCE_scHemA'") + tk.MustGetErrCode("grant all on PERFormanCE_scHemA.* to issue27867;", errno.ErrDBaccessDenied) // Check other database privileges tk.MustExec("grant select on performance_schema.* to issue27867;") - tk.MustExec("grant insert on performance_schema.* to issue27867;") - tk.MustExec("grant update on performance_schema.* to issue27867;") - tk.MustExec("grant delete on performance_schema.* to issue27867;") - tk.MustExec("grant drop on performance_schema.* to issue27867;") - tk.MustExec("grant lock tables on performance_schema.* to issue27867;") - err = tk.ExecToErr("grant create on performance_schema.* to issue27867;") - require.Error(t, err) - require.EqualError(t, err, "[executor:1044]Access denied for user 'root'@'%' to database 'performance_schema'") - err = tk.ExecToErr("grant references on performance_schema.* to issue27867;") - require.Error(t, err) - require.EqualError(t, err, "[executor:1044]Access denied for user 'root'@'%' to database 'performance_schema'") - err = tk.ExecToErr("grant alter on PERFormAnCE_scHemA.* to issue27867;") - require.Error(t, err) - require.EqualError(t, err, "[executor:1044]Access denied for user 'root'@'%' to database 'PERFormAnCE_scHemA'") - err = tk.ExecToErr("grant execute on performance_schema.* to issue27867;") - require.Error(t, err) - require.EqualError(t, err, "[executor:1044]Access denied for user 'root'@'%' to database 'performance_schema'") - err = tk.ExecToErr("grant index on PERFormanCE_scHemA.* to issue27867;") - require.Error(t, err) - require.EqualError(t, err, "[executor:1044]Access denied for user 'root'@'%' to database 'PERFormanCE_scHemA'") - err = tk.ExecToErr("grant create view on performance_schema.* to issue27867;") - require.Error(t, err) - require.EqualError(t, err, "[executor:1044]Access denied for user 'root'@'%' to database 'performance_schema'") - err = tk.ExecToErr("grant show view on performance_schema.* to issue27867;") - require.Error(t, err) - require.EqualError(t, err, "[executor:1044]Access denied for user 'root'@'%' to database 'performance_schema'") + tk.MustGetErrCode("grant insert on performance_schema.* to issue27867;", errno.ErrDBaccessDenied) + tk.MustGetErrCode("grant update on performance_schema.* to issue27867;", errno.ErrDBaccessDenied) + tk.MustGetErrCode("grant delete on performance_schema.* to issue27867;", errno.ErrDBaccessDenied) + tk.MustGetErrCode("grant drop on performance_schema.* to issue27867;", errno.ErrDBaccessDenied) + tk.MustGetErrCode("grant lock tables on performance_schema.* to issue27867;", errno.ErrDBaccessDenied) + tk.MustGetErrCode("grant create on performance_schema.* to issue27867;", errno.ErrDBaccessDenied) + tk.MustGetErrCode("grant references on performance_schema.* to issue27867;", errno.ErrDBaccessDenied) + tk.MustGetErrCode("grant alter on PERFormAnCE_scHemA.* to issue27867;", errno.ErrDBaccessDenied) + tk.MustGetErrCode("grant execute on performance_schema.* to issue27867;", errno.ErrDBaccessDenied) + tk.MustGetErrCode("grant index on PERFormanCE_scHemA.* to issue27867;", errno.ErrDBaccessDenied) + tk.MustGetErrCode("grant create view on performance_schema.* to issue27867;", errno.ErrDBaccessDenied) + tk.MustGetErrCode("grant show view on performance_schema.* to issue27867;", errno.ErrDBaccessDenied) } func TestGrantDynamicPrivs(t *testing.T) { diff --git a/executor/hash_table.go b/executor/hash_table.go index adf6f65832770..2794b3f2c2d83 100644 --- a/executor/hash_table.go +++ b/executor/hash_table.go @@ -86,6 +86,9 @@ type hashRowContainer struct { rowContainer *chunk.RowContainer memTracker *memory.Tracker + + // chkBuf buffer the data reads from the disk if rowContainer is spilled. + chkBuf *chunk.Chunk } func newHashRowContainer(sCtx sessionctx.Context, estCount int, hCtx *hashContext, allTypes []*types.FieldType) *hashRowContainer { @@ -112,23 +115,24 @@ func (c *hashRowContainer) ShallowCopy() *hashRowContainer { // GetMatchedRowsAndPtrs get matched rows and Ptrs from probeRow. It can be called // in multiple goroutines while each goroutine should keep its own // h and buf. -func (c *hashRowContainer) GetMatchedRowsAndPtrs(probeKey uint64, probeRow chunk.Row, hCtx *hashContext) (matched []chunk.Row, matchedPtrs []chunk.RowPtr, err error) { +func (c *hashRowContainer) GetMatchedRowsAndPtrs(probeKey uint64, probeRow chunk.Row, hCtx *hashContext, matched []chunk.Row, matchedPtrs []chunk.RowPtr) ([]chunk.Row, []chunk.RowPtr, error) { + var err error innerPtrs := c.hashTable.Get(probeKey) if len(innerPtrs) == 0 { - return + return nil, nil, err } - matched = make([]chunk.Row, 0, len(innerPtrs)) + matched = matched[:0] var matchedRow chunk.Row - matchedPtrs = make([]chunk.RowPtr, 0, len(innerPtrs)) + matchedPtrs = matchedPtrs[:0] for _, ptr := range innerPtrs { - matchedRow, err = c.rowContainer.GetRow(ptr) + matchedRow, c.chkBuf, err = c.rowContainer.GetRowAndAppendToChunk(ptr, c.chkBuf) if err != nil { - return + return nil, nil, err } var ok bool ok, err = c.matchJoinKey(matchedRow, probeRow, hCtx) if err != nil { - return + return nil, nil, err } if !ok { atomic.AddInt64(&c.stat.probeCollision, 1) @@ -137,7 +141,7 @@ func (c *hashRowContainer) GetMatchedRowsAndPtrs(probeKey uint64, probeRow chunk matched = append(matched, matchedRow) matchedPtrs = append(matchedPtrs, ptr) } - return + return matched, matchedPtrs, err } // matchJoinKey checks if join keys of buildRow and probeRow are logically equal. @@ -222,6 +226,7 @@ func (c *hashRowContainer) Len() uint64 { func (c *hashRowContainer) Close() error { defer c.memTracker.Detach() + c.chkBuf = nil return c.rowContainer.Close() } diff --git a/executor/hash_table_test.go b/executor/hash_table_test.go index e365f0165b84a..f5e70291efee3 100644 --- a/executor/hash_table_test.go +++ b/executor/hash_table_test.go @@ -158,7 +158,7 @@ func testHashRowContainer(t *testing.T, hashFunc func() hash.Hash64, spill bool) } probeCtx.hasNull = make([]bool, 1) probeCtx.hashVals = append(hCtx.hashVals, hashFunc()) - matched, _, err := rowContainer.GetMatchedRowsAndPtrs(hCtx.hashVals[1].Sum64(), probeRow, probeCtx) + matched, _, err := rowContainer.GetMatchedRowsAndPtrs(hCtx.hashVals[1].Sum64(), probeRow, probeCtx, nil, nil) require.NoError(t, err) require.Equal(t, 2, len(matched)) require.Equal(t, chk0.GetRow(1).GetDatumRow(colTypes), matched[0].GetDatumRow(colTypes)) diff --git a/executor/index_merge_reader.go b/executor/index_merge_reader.go index 4ce7f4f24a888..e3b8e6391f2f5 100644 --- a/executor/index_merge_reader.go +++ b/executor/index_merge_reader.go @@ -75,9 +75,7 @@ type IndexMergeReaderExecutor struct { startTS uint64 tableRequest *tipb.DAGRequest // columns are only required by union scan. - columns []*model.ColumnInfo - partialStreamings []bool - tableStreaming bool + columns []*model.ColumnInfo *dataReaderBuilder // fields about accessing partition tables @@ -295,7 +293,7 @@ func (e *IndexMergeReaderExecutor) startPartialIndexWorker(ctx context.Context, if e.isCorColInPartialFilters[workID] { // We got correlated column, so need to refresh Selection operator. var err error - if e.dagPBs[workID].Executors, _, err = constructDistExec(e.ctx, e.partialPlans[workID]); err != nil { + if e.dagPBs[workID].Executors, err = constructDistExec(e.ctx, e.partialPlans[workID]); err != nil { worker.syncErr(e.resultCh, err) return } @@ -306,7 +304,6 @@ func (e *IndexMergeReaderExecutor) startPartialIndexWorker(ctx context.Context, SetStartTS(e.startTS). SetDesc(e.descs[workID]). SetKeepOrder(false). - SetStreaming(e.partialStreamings[workID]). SetReadReplicaScope(e.readReplicaScope). SetIsStaleness(e.isStaleness). SetFromSessionVars(e.ctx.GetSessionVars()). @@ -388,7 +385,6 @@ func (e *IndexMergeReaderExecutor) startPartialTableWorker(ctx context.Context, startTS: e.startTS, readReplicaScope: e.readReplicaScope, isStaleness: e.isStaleness, - streaming: e.partialStreamings[workID], feedback: statistics.NewQueryFeedback(0, nil, 0, false), plans: e.partialPlans[workID], ranges: e.ranges[workID], @@ -404,7 +400,7 @@ func (e *IndexMergeReaderExecutor) startPartialTableWorker(ctx context.Context, } if e.isCorColInPartialFilters[workID] { - if e.dagPBs[workID].Executors, _, err = constructDistExec(e.ctx, e.partialPlans[workID]); err != nil { + if e.dagPBs[workID].Executors, err = constructDistExec(e.ctx, e.partialPlans[workID]); err != nil { worker.syncErr(e.resultCh, err) return } @@ -609,13 +605,12 @@ func (e *IndexMergeReaderExecutor) buildFinalTableReader(ctx context.Context, tb startTS: e.startTS, readReplicaScope: e.readReplicaScope, isStaleness: e.isStaleness, - streaming: e.tableStreaming, columns: e.columns, feedback: statistics.NewQueryFeedback(0, nil, 0, false), plans: e.tblPlans, } if e.isCorColInTableFilter { - if tableReaderExec.dagPB.Executors, _, err = constructDistExec(e.ctx, e.tblPlans); err != nil { + if tableReaderExec.dagPB.Executors, err = constructDistExec(e.ctx, e.tblPlans); err != nil { return nil, err } } @@ -825,6 +820,9 @@ func (w *partialIndexWorker) fetchHandles( return count, err } if len(handles) == 0 { + if basicStats != nil { + basicStats.Record(time.Since(start), chk.NumRows()) + } return count, nil } count += int64(len(handles)) diff --git a/executor/infoschema_reader.go b/executor/infoschema_reader.go index b26687757942a..7f7766eda2b23 100644 --- a/executor/infoschema_reader.go +++ b/executor/infoschema_reader.go @@ -168,6 +168,10 @@ func (e *memtableRetriever) retrieve(ctx context.Context, sctx sessionctx.Contex err = e.setDataForAttributes(sctx, is) case infoschema.TablePlacementPolicies: err = e.setDataFromPlacementPolicies(sctx) + case infoschema.TableTrxSummary: + err = e.setDataForTrxSummary(sctx) + case infoschema.ClusterTableTrxSummary: + err = e.setDataForClusterTrxSummary(sctx) } if err != nil { return nil, err @@ -2181,6 +2185,29 @@ func (e *memtableRetriever) setDataForClientErrorsSummary(ctx sessionctx.Context return nil } +func (e *memtableRetriever) setDataForTrxSummary(ctx sessionctx.Context) error { + hasProcessPriv := hasPriv(ctx, mysql.ProcessPriv) + if !hasProcessPriv { + return nil + } + rows := txninfo.Recorder.DumpTrxSummary() + e.rows = rows + return nil +} + +func (e *memtableRetriever) setDataForClusterTrxSummary(ctx sessionctx.Context) error { + err := e.setDataForTrxSummary(ctx) + if err != nil { + return err + } + rows, err := infoschema.AppendHostInfoToRows(ctx, e.rows) + if err != nil { + return err + } + e.rows = rows + return nil +} + type stmtSummaryTableRetriever struct { dummyCloser table *model.TableInfo @@ -2844,7 +2871,7 @@ func (e *TiFlashSystemTableRetriever) initialize(sctx sessionctx.Context, tiflas } func (e *TiFlashSystemTableRetriever) dataForTiFlashSystemTables(ctx sessionctx.Context, tidbDatabases string, tidbTables string) ([][]types.Datum, error) { - var columnNames []string // nolint: prealloc + var columnNames []string //nolint: prealloc for _, c := range e.outputCols { if c.Name.O == "TIFLASH_INSTANCE" { continue diff --git a/executor/insert.go b/executor/insert.go index 7c8c3e1f4b7cc..abb3aa5efc7b5 100644 --- a/executor/insert.go +++ b/executor/insert.go @@ -193,13 +193,13 @@ func (e *InsertExec) updateDupRow(ctx context.Context, idxInBatch int, txn kv.Tr if err != nil { return err } - // get the extra columns from the SELECT clause and get the final `oldRow`. + // get the extra columns from the SELECT clause. + var extraCols []types.Datum if len(e.ctx.GetSessionVars().CurrInsertBatchExtraCols) > 0 { - extraCols := e.ctx.GetSessionVars().CurrInsertBatchExtraCols[idxInBatch] - oldRow = append(oldRow, extraCols...) + extraCols = e.ctx.GetSessionVars().CurrInsertBatchExtraCols[idxInBatch] } - err = e.doDupRowUpdate(ctx, handle, oldRow, row.row, e.OnDuplicate) + err = e.doDupRowUpdate(ctx, handle, oldRow, row.row, extraCols, e.OnDuplicate) if e.ctx.GetSessionVars().StmtCtx.DupKeyAsWarning && kv.ErrKeyExists.Equal(err) { e.ctx.GetSessionVars().StmtCtx.AppendWarning(err) return nil @@ -374,16 +374,18 @@ func (e *InsertExec) initEvalBuffer4Dup() { // doDupRowUpdate updates the duplicate row. func (e *InsertExec) doDupRowUpdate(ctx context.Context, handle kv.Handle, oldRow []types.Datum, newRow []types.Datum, - cols []*expression.Assignment) error { + extraCols []types.Datum, cols []*expression.Assignment) error { assignFlag := make([]bool, len(e.Table.WritableCols())) // See http://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html#function_values e.curInsertVals.SetDatums(newRow...) e.ctx.GetSessionVars().CurrInsertValues = e.curInsertVals.ToRow() // NOTE: In order to execute the expression inside the column assignment, - // we have to put the value of "oldRow" before "newRow" in "row4Update" to - // be consistent with "Schema4OnDuplicate" in the "Insert" PhysicalPlan. + // we have to put the value of "oldRow" and "extraCols" before "newRow" in + // "row4Update" to be consistent with "Schema4OnDuplicate" in the "Insert" + // PhysicalPlan. e.row4Update = e.row4Update[:0] e.row4Update = append(e.row4Update, oldRow...) + e.row4Update = append(e.row4Update, extraCols...) e.row4Update = append(e.row4Update, newRow...) // Update old row when the key is duplicated. diff --git a/executor/insert_common.go b/executor/insert_common.go index 3c6b812f9c00a..9d31cf44f030f 100644 --- a/executor/insert_common.go +++ b/executor/insert_common.go @@ -561,6 +561,16 @@ func (e *InsertValues) getColDefaultValue(idx int, col *table.Column) (d types.D func (e *InsertValues) fillColValue(ctx context.Context, datum types.Datum, idx int, column *table.Column, hasValue bool) (types.Datum, error) { if mysql.HasAutoIncrementFlag(column.GetFlag()) { + if !hasValue && mysql.HasNoDefaultValueFlag(column.ToInfo().GetFlag()) { + vars := e.ctx.GetSessionVars() + sc := vars.StmtCtx + if !vars.StrictSQLMode { + sc.AppendWarning(table.ErrNoDefaultValue.FastGenByArgs(column.ToInfo().Name)) + } else { + return datum, table.ErrNoDefaultValue.FastGenByArgs(column.ToInfo().Name) + } + } + if e.lazyFillAutoID { // Handle hasValue info in autoIncrement column previously for lazy handle. if !hasValue { diff --git a/executor/insert_test.go b/executor/insert_test.go index ce91449f5fe49..4540ff711915f 100644 --- a/executor/insert_test.go +++ b/executor/insert_test.go @@ -22,6 +22,7 @@ import ( "testing" "time" + "github.com/pingcap/failpoint" "github.com/pingcap/tidb/errno" "github.com/pingcap/tidb/executor" "github.com/pingcap/tidb/meta/autoid" @@ -39,6 +40,19 @@ func TestInsertOnDuplicateKey(t *testing.T) { store, clean := testkit.CreateMockStore(t) defer clean() tk := testkit.NewTestKit(t, store) + testInsertOnDuplicateKey(t, tk) +} + +func TestInsertOnDuplicateKeyWithBinlog(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + tk := testkit.NewTestKit(t, store) + failpoint.Enable("github.com/pingcap/tidb/table/tables/forceWriteBinlog", "return") + defer failpoint.Disable("github.com/pingcap/tidb/table/tables/forceWriteBinlog") + testInsertOnDuplicateKey(t, tk) +} + +func testInsertOnDuplicateKey(t *testing.T, tk *testkit.TestKit) { tk.MustExec("use test") tk.MustExec(`drop table if exists t1, t2;`) diff --git a/executor/inspection_result.go b/executor/inspection_result.go index debcf723a3e64..741508c5cf88f 100644 --- a/executor/inspection_result.go +++ b/executor/inspection_result.go @@ -727,6 +727,7 @@ func (c thresholdCheckInspection) inspect(ctx context.Context, sctx sessionctx.C c.inspectThreshold3, c.inspectForLeaderDrop, } + //nolint: prealloc var results []inspectionResult for _, inspect := range inspects { re := inspect(ctx, sctx, filter) diff --git a/executor/join.go b/executor/join.go index 702a5cf23632c..b2076d459d82c 100644 --- a/executor/join.go +++ b/executor/join.go @@ -94,6 +94,10 @@ type HashJoinExec struct { finished atomic.Value stats *hashJoinRuntimeStats + + // We pre-alloc and reuse the Rows and RowPtrs for each probe goroutine, to avoid allocation frequently + buildSideRows [][]chunk.Row + buildSideRowPtrs [][]chunk.RowPtr } // probeChkResource stores the result of the join probe side fetch worker, @@ -148,7 +152,8 @@ func (e *HashJoinExec) Close() error { terror.Call(e.rowContainer.Close) } e.outerMatchedStatus = e.outerMatchedStatus[:0] - + e.buildSideRows = nil + e.buildSideRowPtrs = nil if e.stats != nil && e.rowContainer != nil { e.stats.hashStat = *e.rowContainer.stat } @@ -328,6 +333,9 @@ func (e *HashJoinExec) initializeForProbe() { // e.joinResultCh is for transmitting the join result chunks to the main // thread. e.joinResultCh = make(chan *hashjoinWorkerResult, e.concurrency+1) + + e.buildSideRows = make([][]chunk.Row, e.concurrency) + e.buildSideRowPtrs = make([][]chunk.RowPtr, e.concurrency) } func (e *HashJoinExec) fetchAndProbeHashTable(ctx context.Context) { @@ -487,7 +495,9 @@ func (e *HashJoinExec) runJoinWorker(workerID uint, probeKeyColIdx []int) { } func (e *HashJoinExec) joinMatchedProbeSideRow2ChunkForOuterHashJoin(workerID uint, probeKey uint64, probeSideRow chunk.Row, hCtx *hashContext, rowContainer *hashRowContainer, joinResult *hashjoinWorkerResult) (bool, *hashjoinWorkerResult) { - buildSideRows, rowsPtrs, err := rowContainer.GetMatchedRowsAndPtrs(probeKey, probeSideRow, hCtx) + var err error + e.buildSideRows[workerID], e.buildSideRowPtrs[workerID], err = rowContainer.GetMatchedRowsAndPtrs(probeKey, probeSideRow, hCtx, e.buildSideRows[workerID], e.buildSideRowPtrs[workerID]) + buildSideRows, rowsPtrs := e.buildSideRows[workerID], e.buildSideRowPtrs[workerID] if err != nil { joinResult.err = err return false, joinResult @@ -497,6 +507,7 @@ func (e *HashJoinExec) joinMatchedProbeSideRow2ChunkForOuterHashJoin(workerID ui } iter := chunk.NewIterator4Slice(buildSideRows) + defer chunk.FreeIterator(iter) var outerMatchStatus []outerRowStatusFlag rowIdx, ok := 0, false for iter.Begin(); iter.Current() != iter.End(); { @@ -523,7 +534,9 @@ func (e *HashJoinExec) joinMatchedProbeSideRow2ChunkForOuterHashJoin(workerID ui } func (e *HashJoinExec) joinMatchedProbeSideRow2Chunk(workerID uint, probeKey uint64, probeSideRow chunk.Row, hCtx *hashContext, rowContainer *hashRowContainer, joinResult *hashjoinWorkerResult) (bool, *hashjoinWorkerResult) { - buildSideRows, _, err := rowContainer.GetMatchedRowsAndPtrs(probeKey, probeSideRow, hCtx) + var err error + e.buildSideRows[workerID], e.buildSideRowPtrs[workerID], err = rowContainer.GetMatchedRowsAndPtrs(probeKey, probeSideRow, hCtx, e.buildSideRows[workerID], e.buildSideRowPtrs[workerID]) + buildSideRows := e.buildSideRows[workerID] if err != nil { joinResult.err = err return false, joinResult @@ -533,6 +546,7 @@ func (e *HashJoinExec) joinMatchedProbeSideRow2Chunk(workerID uint, probeKey uin return true, joinResult } iter := chunk.NewIterator4Slice(buildSideRows) + defer chunk.FreeIterator(iter) hasMatch, hasNull, ok := false, false, false for iter.Begin(); iter.Current() != iter.End(); { matched, isNull, err := e.joiners[workerID].tryToMatchInners(probeSideRow, iter, joinResult.chk) diff --git a/executor/kvtest/BUILD.bazel b/executor/kvtest/BUILD.bazel new file mode 100644 index 0000000000000..afa7203ffef9e --- /dev/null +++ b/executor/kvtest/BUILD.bazel @@ -0,0 +1,17 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_test") + +go_test( + name = "kvtest_test", + srcs = [ + "kv_test.go", + "main_test.go", + ], + deps = [ + "//config", + "//meta/autoid", + "//testkit", + "@com_github_stretchr_testify//require", + "@com_github_tikv_client_go_v2//tikv", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/executor/kvtest/kv_test.go b/executor/kvtest/kv_test.go new file mode 100644 index 0000000000000..bbd665d6f7b98 --- /dev/null +++ b/executor/kvtest/kv_test.go @@ -0,0 +1,53 @@ +// 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 kvtest + +import ( + "testing" + + "github.com/pingcap/tidb/testkit" + "github.com/stretchr/testify/require" +) + +func TestDropStatsFromKV(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (c1 varchar(20), c2 varchar(20))") + tk.MustExec(`insert into t values("1","1"),("2","2"),("3","3"),("4","4")`) + tk.MustExec("insert into t select * from t") + tk.MustExec("insert into t select * from t") + tk.MustExec("analyze table t with 2 topn") + tblID := tk.MustQuery(`select tidb_table_id from information_schema.tables where table_name = "t" and table_schema = "test"`).Rows()[0][0].(string) + tk.MustQuery("select modify_count, count from mysql.stats_meta where table_id = " + tblID).Check( + testkit.Rows("0 16")) + tk.MustQuery("select hist_id from mysql.stats_histograms where table_id = " + tblID).Check( + testkit.Rows("1", "2")) + ret := tk.MustQuery("select hist_id, bucket_id from mysql.stats_buckets where table_id = " + tblID) + require.True(t, len(ret.Rows()) > 0) + ret = tk.MustQuery("select hist_id from mysql.stats_top_n where table_id = " + tblID) + require.True(t, len(ret.Rows()) > 0) + + tk.MustExec("drop stats t") + tk.MustQuery("select modify_count, count from mysql.stats_meta where table_id = " + tblID).Check( + testkit.Rows("0 16")) + tk.MustQuery("select hist_id from mysql.stats_histograms where table_id = " + tblID).Check( + testkit.Rows()) + tk.MustQuery("select hist_id, bucket_id from mysql.stats_buckets where table_id = " + tblID).Check( + testkit.Rows()) + tk.MustQuery("select hist_id from mysql.stats_top_n where table_id = " + tblID).Check( + testkit.Rows()) +} diff --git a/executor/kvtest/main_test.go b/executor/kvtest/main_test.go new file mode 100644 index 0000000000000..4ca44232f2973 --- /dev/null +++ b/executor/kvtest/main_test.go @@ -0,0 +1,44 @@ +// 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 kvtest + +import ( + "testing" + + "github.com/pingcap/tidb/config" + "github.com/pingcap/tidb/meta/autoid" + "github.com/tikv/client-go/v2/tikv" + "go.uber.org/goleak" +) + +func TestMain(m *testing.M) { + autoid.SetStep(5000) + config.UpdateGlobal(func(conf *config.Config) { + conf.Log.SlowThreshold = 30000 // 30s + conf.TiKVClient.AsyncCommit.SafeWindow = 0 + conf.TiKVClient.AsyncCommit.AllowedClockDrift = 0 + conf.Experimental.AllowsExpressionIndex = true + }) + tikv.EnableFailpoints() + + opts := []goleak.Option{ + goleak.IgnoreTopFunction("github.com/golang/glog.(*loggingT).flushDaemon"), + goleak.IgnoreTopFunction("go.etcd.io/etcd/client/pkg/v3/logutil.(*MergeLogger).outputLoop"), + goleak.IgnoreTopFunction("go.opencensus.io/stats/view.(*worker).start"), + goleak.IgnoreTopFunction("gopkg.in/natefinch/lumberjack%2ev2.(*Logger).millRun"), + goleak.IgnoreTopFunction("github.com/tikv/client-go/v2/txnkv/transaction.keepAlive"), + } + goleak.VerifyTestMain(m, opts...) +} diff --git a/executor/load_data.go b/executor/load_data.go index 87ceb964f7e03..fdaf58222f463 100644 --- a/executor/load_data.go +++ b/executor/load_data.go @@ -129,6 +129,36 @@ type FieldMapping struct { UserVar *ast.VariableExpr } +// reorderColumns reorder the e.insertColumns according to the order of columnNames +// Note: We must ensure there must be one-to-one mapping between e.insertColumns and columnNames in terms of column name. +func (e *LoadDataInfo) reorderColumns(columnNames []string) error { + cols := e.insertColumns + + if len(cols) != len(columnNames) { + return ErrColumnsNotMatched + } + + reorderedColumns := make([]*table.Column, len(cols)) + + if columnNames == nil { + return nil + } + + mapping := make(map[string]int) + for idx, colName := range columnNames { + mapping[strings.ToLower(colName)] = idx + } + + for _, col := range cols { + idx := mapping[col.Name.L] + reorderedColumns[idx] = col + } + + e.insertColumns = reorderedColumns + + return nil +} + // initLoadColumns sets columns which the input fields loaded to. func (e *LoadDataInfo) initLoadColumns(columnNames []string) error { var cols []*table.Column @@ -161,6 +191,13 @@ func (e *LoadDataInfo) initLoadColumns(columnNames []string) error { break } } + + // e.insertColumns is appended according to the original tables' column sequence. + // We have to reorder it to follow the use-specified column order which is shown in the columnNames. + if err = e.reorderColumns(columnNames); err != nil { + return err + } + e.rowLen = len(e.insertColumns) // Check column whether is specified only once. err = table.CheckOnce(cols) diff --git a/executor/memtable_reader.go b/executor/memtable_reader.go index 64729e3705dcb..080a7d5d83a4d 100644 --- a/executor/memtable_reader.go +++ b/executor/memtable_reader.go @@ -178,7 +178,7 @@ func fetchClusterConfig(sctx sessionctx.Context, nodeTypes, nodeAddrs set.String return nil, err } serversInfo = filterClusterServerInfo(serversInfo, nodeTypes, nodeAddrs) - + //nolint: prealloc var finalRows [][]types.Datum wg := sync.WaitGroup{} ch := make(chan result, len(serversInfo)) @@ -271,7 +271,7 @@ func fetchClusterConfig(sctx sessionctx.Context, nodeTypes, nodeAddrs set.String close(ch) // Keep the original order to make the result more stable - var results []result // nolint: prealloc + var results []result //nolint: prealloc for result := range ch { if result.err != nil { sctx.GetSessionVars().StmtCtx.AppendWarning(result.err) @@ -349,7 +349,7 @@ func (e *clusterServerInfoRetriever) retrieve(ctx context.Context, sctx sessionc wg.Wait() close(ch) // Keep the original order to make the result more stable - var results []result // nolint: prealloc + var results []result //nolint: prealloc for result := range ch { if result.err != nil { sctx.GetSessionVars().StmtCtx.AppendWarning(result.err) @@ -565,7 +565,7 @@ func (e *clusterLogRetriever) startRetrieving( // The retrieve progress may be abort ctx, e.cancel = context.WithCancel(ctx) - var results []chan logStreamResult // nolint: prealloc + var results []chan logStreamResult //nolint: prealloc for _, srv := range serversInfo { typ := srv.ServerType address := srv.Address @@ -1070,6 +1070,7 @@ func (e *tikvRegionPeersRetriever) isUnexpectedStoreID(storeID int64, storeMap m func (e *tikvRegionPeersRetriever) packTiKVRegionPeersRows( regionsInfo []helper.RegionInfo, storeMap map[int64]struct{}) ([][]types.Datum, error) { + //nolint: prealloc var rows [][]types.Datum for _, region := range regionsInfo { records := make([][]types.Datum, 0, len(region.Peers)) diff --git a/executor/mpp_gather.go b/executor/mpp_gather.go index 3a8ce366742b6..a9a6032d1f779 100644 --- a/executor/mpp_gather.go +++ b/executor/mpp_gather.go @@ -52,7 +52,7 @@ type MPPGather struct { } func (e *MPPGather) appendMPPDispatchReq(pf *plannercore.Fragment) error { - dagReq, _, err := constructDAGReq(e.ctx, []plannercore.PhysicalPlan{pf.ExchangeSender}, kv.TiFlash) + dagReq, err := constructDAGReq(e.ctx, []plannercore.PhysicalPlan{pf.ExchangeSender}, kv.TiFlash) if err != nil { return errors.Trace(err) } diff --git a/executor/oomtest/BUILD.bazel b/executor/oomtest/BUILD.bazel new file mode 100644 index 0000000000000..b360eca28459b --- /dev/null +++ b/executor/oomtest/BUILD.bazel @@ -0,0 +1,15 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_test") + +go_test( + name = "oomtest_test", + srcs = ["oom_test.go"], + deps = [ + "//testkit", + "//testkit/testsetup", + "@com_github_pingcap_log//:log", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + "@org_uber_go_zap//:zap", + "@org_uber_go_zap//zapcore", + ], +) diff --git a/executor/partition_table_test.go b/executor/partition_table_test.go index e2d098c622f8f..3b8b50174ebc5 100644 --- a/executor/partition_table_test.go +++ b/executor/partition_table_test.go @@ -3468,8 +3468,8 @@ func TestPartitionTableExplain(t *testing.T) { "PartitionUnion 2.00 root ", "├─Batch_Point_Get 1.00 root table:t handle:[1 2], keep order:false, desc:false", "└─Batch_Point_Get 1.00 root table:t handle:[1 2], keep order:false, desc:false")) - tk.MustQuery(`explain format = 'brief' select * from t where a IN (2,3,4)`).Check(testkit.Rows("Batch_Point_Get 3.00 root table:t handle:[2 3 4], keep order:false, desc:false")) - tk.MustQuery(`explain format = 'brief' select * from t where a IN (2,3)`).Check(testkit.Rows("Batch_Point_Get 2.00 root table:t handle:[2 3], keep order:false, desc:false")) + tk.MustQuery(`explain format = 'brief' select * from t where a IN (2,3,4)`).Check(testkit.Rows("Batch_Point_Get 3.00 root table:t, partition:P0,p1,P2 handle:[2 3 4], keep order:false, desc:false")) + tk.MustQuery(`explain format = 'brief' select * from t where a IN (2,3)`).Check(testkit.Rows("Batch_Point_Get 2.00 root table:t, partition:P0,P2 handle:[2 3], keep order:false, desc:false")) // above ^^ is for completeness, the below vv is enough for Issue32719 tk.MustQuery(`explain format = 'brief' select * from t where b = 1`).Check(testkit.Rows( "PartitionUnion 1.00 root ", @@ -3553,8 +3553,8 @@ func TestPartitionTableExplain(t *testing.T) { tk.MustQuery(`explain format = 'brief' select * from t where a = 1 OR a = 2`).Check(testkit.Rows( "TableReader 2.00 root partition:p1,P2 data:TableRangeScan", "└─TableRangeScan 2.00 cop[tikv] table:t range:[1,1], [2,2], keep order:false")) - tk.MustQuery(`explain format = 'brief' select * from t where a IN (2,3,4)`).Check(testkit.Rows("Batch_Point_Get 3.00 root table:t handle:[2 3 4], keep order:false, desc:false")) - tk.MustQuery(`explain format = 'brief' select * from t where a IN (2,3)`).Check(testkit.Rows("Batch_Point_Get 2.00 root table:t handle:[2 3], keep order:false, desc:false")) + tk.MustQuery(`explain format = 'brief' select * from t where a IN (2,3,4)`).Check(testkit.Rows("Batch_Point_Get 3.00 root table:t, partition:P0,p1,P2 handle:[2 3 4], keep order:false, desc:false")) + tk.MustQuery(`explain format = 'brief' select * from t where a IN (2,3)`).Check(testkit.Rows("Batch_Point_Get 2.00 root table:t, partition:P0,P2 handle:[2 3], keep order:false, desc:false")) tk.MustQuery(`explain format = 'brief' select * from t where b = 1`).Check(testkit.Rows( "IndexReader 1.00 root partition:all index:IndexRangeScan", "└─IndexRangeScan 1.00 cop[tikv] table:t, index:b(b) range:[1,1], keep order:false")) @@ -3600,3 +3600,18 @@ func TestPartitionTableExplain(t *testing.T) { " └─Selection 1.00 cop[tikv] not(isnull(testpartitiontableexplain.t.b))", " └─TableRangeScan 1.00 cop[tikv] table:t range:[1,1], keep order:false")) } + +func TestIssue35181(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + + tk := testkit.NewTestKit(t, store) + tk.MustExec("create database TestIssue35181") + tk.MustExec("use TestIssue35181") + tk.MustExec("CREATE TABLE `t` (`a` int(11) DEFAULT NULL, `b` int(11) DEFAULT NULL) PARTITION BY RANGE (`a`) (PARTITION `p0` VALUES LESS THAN (2021), PARTITION `p1` VALUES LESS THAN (3000))") + + tk.MustExec("set @@tidb_partition_prune_mode = 'static'") + tk.MustExec(`insert into t select * from t where a=3000`) + tk.MustExec("set @@tidb_partition_prune_mode = 'dynamic'") + tk.MustExec(`insert into t select * from t where a=3000`) +} diff --git a/executor/point_get_test.go b/executor/point_get_test.go index e366c99d1e37c..95b2a4dbe9e4a 100644 --- a/executor/point_get_test.go +++ b/executor/point_get_test.go @@ -18,7 +18,6 @@ import ( "context" "fmt" "strings" - "sync" "testing" "time" @@ -783,7 +782,6 @@ func TestPointGetLockExistKey(t *testing.T) { )) } - var wg sync.WaitGroup for i, one := range []struct { rc bool key string @@ -793,14 +791,12 @@ func TestPointGetLockExistKey(t *testing.T) { {rc: true, key: "primary key"}, {rc: true, key: "unique key"}, } { - wg.Add(1) + tableName := fmt.Sprintf("t_%d", i) - go func(rc bool, key string, tableName string) { - defer wg.Done() + func(rc bool, key string, tableName string) { testLock(rc, key, tableName) }(one.rc, one.key, tableName) } - wg.Wait() } func TestWithTiDBSnapshot(t *testing.T) { diff --git a/executor/prepared.go b/executor/prepared.go index 5b8b0b0d6e395..e6395371c95d5 100644 --- a/executor/prepared.go +++ b/executor/prepared.go @@ -285,22 +285,6 @@ func (e *ExecuteExec) Next(ctx context.Context, req *chunk.Chunk) error { // Build builds a prepared statement into an executor. // After Build, e.StmtExec will be used to do the real execution. func (e *ExecuteExec) Build(b *executorBuilder) error { - if snapshotTS := e.ctx.GetSessionVars().SnapshotTS; snapshotTS != 0 { - if err := e.ctx.InitTxnWithStartTS(snapshotTS); err != nil { - return err - } - } else { - ok, err := plannercore.IsPointGetWithPKOrUniqueKeyByAutoCommit(e.ctx, e.plan) - if err != nil { - return err - } - if ok { - err = e.ctx.InitTxnWithStartTS(math.MaxUint64) - if err != nil { - return err - } - } - } stmtExec := b.build(e.plan) if b.err != nil { log.Warn("rebuild plan in EXECUTE statement failed", zap.String("labelName of PREPARE statement", e.name)) diff --git a/executor/seqtest/BUILD.bazel b/executor/seqtest/BUILD.bazel new file mode 100644 index 0000000000000..3f0a4bfd1291d --- /dev/null +++ b/executor/seqtest/BUILD.bazel @@ -0,0 +1,49 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_test") + +go_test( + name = "seqtest_test", + srcs = [ + "main_test.go", + "prepared_test.go", + "seq_executor_test.go", + ], + deps = [ + "//config", + "//ddl/testutil", + "//ddl/util", + "//errno", + "//executor", + "//infoschema", + "//kv", + "//meta/autoid", + "//metrics", + "//parser/model", + "//parser/mysql", + "//parser/terror", + "//planner/core", + "//session", + "//session/txninfo", + "//sessionctx/variable", + "//statistics/handle", + "//store/copr", + "//store/mockstore", + "//tablecodec", + "//testkit", + "//testkit/testsetup", + "//testkit/testutil", + "//types", + "//util", + "//util/gcutil", + "//util/kvcache", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_pingcap_kvproto//pkg/kvrpcpb", + "@com_github_prometheus_client_model//go", + "@com_github_stretchr_testify//require", + "@com_github_tikv_client_go_v2//config", + "@com_github_tikv_client_go_v2//testutils", + "@com_github_tikv_client_go_v2//tikv", + "@com_github_tikv_client_go_v2//tikvrpc", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/executor/seqtest/seq_executor_test.go b/executor/seqtest/seq_executor_test.go index f5663309743e1..79092acbf2958 100644 --- a/executor/seqtest/seq_executor_test.go +++ b/executor/seqtest/seq_executor_test.go @@ -169,7 +169,7 @@ func TestShow(t *testing.T) { require.Len(t, result.Rows(), 1) row = result.Rows()[0] expectedRow = []interface{}{ - "ptest", "CREATE TABLE `ptest` (\n `a` int(11) NOT NULL,\n `b` double NOT NULL DEFAULT '2.0',\n `c` varchar(10) NOT NULL,\n `d` time DEFAULT NULL,\n `e` timestamp NULL DEFAULT NULL,\n `f` timestamp NULL DEFAULT NULL,\n PRIMARY KEY (`a`) /*T![clustered_index] CLUSTERED */,\n UNIQUE KEY `d` (`d`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin"} + "ptest", "CREATE TABLE `ptest` (\n `a` int(11) NOT NULL,\n `b` double NOT NULL DEFAULT '2',\n `c` varchar(10) NOT NULL,\n `d` time DEFAULT NULL,\n `e` timestamp NULL DEFAULT NULL,\n `f` timestamp NULL DEFAULT NULL,\n PRIMARY KEY (`a`) /*T![clustered_index] CLUSTERED */,\n UNIQUE KEY `d` (`d`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin"} for i, r := range row { require.Equal(t, expectedRow[i], r) } diff --git a/executor/set.go b/executor/set.go index a79055abb5dbe..df0868e45f875 100644 --- a/executor/set.go +++ b/executor/set.go @@ -115,7 +115,12 @@ func (e *SetExecutor) setSysVariable(ctx context.Context, name string, v *expres } return variable.ErrUnknownSystemVar.GenWithStackByArgs(name) } - + if sysVar.IsNoop && !variable.EnableNoopVariables.Load() { + // The variable is a noop. For compatibility we allow it to still + // be changed, but we append a warning since users might be expecting + // something that's not going to happen. + sessionVars.StmtCtx.AppendWarning(ErrSettingNoopVariable.GenWithStackByArgs(sysVar.Name)) + } if sysVar.HasInstanceScope() && !v.IsGlobal && sessionVars.EnableLegacyInstanceScope { // For backward compatibility we will change the v.IsGlobal to true, // and append a warning saying this will not be supported in future. diff --git a/executor/set_test.go b/executor/set_test.go index e06ab579be68e..9a7213571fddc 100644 --- a/executor/set_test.go +++ b/executor/set_test.go @@ -142,6 +142,12 @@ func TestSetVar(t *testing.T) { tk.MustExec("set session ddl_slow_threshold=\"54321\"") tk.MustQuery("show variables like 'ddl_slow_threshold'").Check(testkit.Rows("ddl_slow_threshold 54321")) require.Equal(t, uint32(54321), variable.DDLSlowOprThreshold) + tk.MustExec("set @@global.ddl_slow_threshold=-1") + tk.MustQuery("select @@global.ddl_slow_threshold").Check(testkit.Rows(strconv.Itoa(variable.DefTiDBDDLSlowOprThreshold))) + require.Equal(t, uint32(variable.DefTiDBDDLSlowOprThreshold), variable.DDLSlowOprThreshold) + require.Error(t, tk.ExecToErr("set @@global.ddl_slow_threshold=abc")) + tk.MustQuery("select @@global.ddl_slow_threshold").Check(testkit.Rows(strconv.Itoa(variable.DefTiDBDDLSlowOprThreshold))) + require.Equal(t, uint32(variable.DefTiDBDDLSlowOprThreshold), variable.DDLSlowOprThreshold) // Test set transaction isolation level, which is equivalent to setting variable "tx_isolation". tk.MustExec("SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED") @@ -221,6 +227,33 @@ func TestSetVar(t *testing.T) { tk.MustExec("set @@tidb_pprof_sql_cpu = 1") tk.MustExec("set @@tidb_pprof_sql_cpu = 0") + tk.MustExec(`set @@block_encryption_mode = "aes-128-ecb"`) + tk.MustQuery(`select @@block_encryption_mode;`).Check(testkit.Rows("aes-128-ecb")) + tk.MustExec(`set @@block_encryption_mode = "aes-192-ecb"`) + tk.MustQuery(`select @@block_encryption_mode;`).Check(testkit.Rows("aes-192-ecb")) + tk.MustExec(`set @@block_encryption_mode = "aes-256-ecb"`) + tk.MustQuery(`select @@block_encryption_mode;`).Check(testkit.Rows("aes-256-ecb")) + tk.MustExec(`set @@block_encryption_mode = "aes-128-cbc"`) + tk.MustQuery(`select @@block_encryption_mode;`).Check(testkit.Rows("aes-128-cbc")) + tk.MustExec(`set @@block_encryption_mode = "aes-192-cbc"`) + tk.MustQuery(`select @@block_encryption_mode;`).Check(testkit.Rows("aes-192-cbc")) + tk.MustExec(`set @@block_encryption_mode = "aes-256-cbc"`) + tk.MustQuery(`select @@block_encryption_mode;`).Check(testkit.Rows("aes-256-cbc")) + tk.MustExec(`set @@block_encryption_mode = "aes-128-ofb"`) + tk.MustQuery(`select @@block_encryption_mode;`).Check(testkit.Rows("aes-128-ofb")) + tk.MustExec(`set @@block_encryption_mode = "aes-192-ofb"`) + tk.MustQuery(`select @@block_encryption_mode;`).Check(testkit.Rows("aes-192-ofb")) + tk.MustExec(`set @@block_encryption_mode = "aes-256-ofb"`) + tk.MustQuery(`select @@block_encryption_mode;`).Check(testkit.Rows("aes-256-ofb")) + tk.MustExec(`set @@block_encryption_mode = "aes-128-cfb"`) + tk.MustQuery(`select @@block_encryption_mode;`).Check(testkit.Rows("aes-128-cfb")) + tk.MustExec(`set @@block_encryption_mode = "aes-192-cfb"`) + tk.MustQuery(`select @@block_encryption_mode;`).Check(testkit.Rows("aes-192-cfb")) + tk.MustExec(`set @@block_encryption_mode = "aes-256-cfb"`) + tk.MustQuery(`select @@block_encryption_mode;`).Check(testkit.Rows("aes-256-cfb")) + require.Error(t, tk.ExecToErr("set @@block_encryption_mode = 'abc'")) + tk.MustQuery(`select @@block_encryption_mode;`).Check(testkit.Rows("aes-256-cfb")) + tk.MustExec(`set @@global.tidb_force_priority = "no_priority"`) tk.MustQuery(`select @@global.tidb_force_priority;`).Check(testkit.Rows("NO_PRIORITY")) tk.MustExec(`set @@global.tidb_force_priority = "low_priority"`) @@ -229,8 +262,57 @@ func TestSetVar(t *testing.T) { tk.MustQuery(`select @@global.tidb_force_priority;`).Check(testkit.Rows("HIGH_PRIORITY")) tk.MustExec(`set @@global.tidb_force_priority = "delayed"`) tk.MustQuery(`select @@global.tidb_force_priority;`).Check(testkit.Rows("DELAYED")) - tk.MustExec(`set @@global.tidb_force_priority = "abc"`) - tk.MustQuery(`select @@global.tidb_force_priority;`).Check(testkit.Rows("NO_PRIORITY")) + require.Error(t, tk.ExecToErr("set global tidb_force_priority = 'abc'")) + tk.MustQuery(`select @@global.tidb_force_priority;`).Check(testkit.Rows("DELAYED")) + + tk.MustExec(`set @@session.tidb_ddl_reorg_priority = "priority_low"`) + tk.MustQuery(`select @@session.tidb_ddl_reorg_priority;`).Check(testkit.Rows("PRIORITY_LOW")) + tk.MustExec(`set @@session.tidb_ddl_reorg_priority = "priority_normal"`) + tk.MustQuery(`select @@session.tidb_ddl_reorg_priority;`).Check(testkit.Rows("PRIORITY_NORMAL")) + tk.MustExec(`set @@session.tidb_ddl_reorg_priority = "priority_high"`) + tk.MustQuery(`select @@session.tidb_ddl_reorg_priority;`).Check(testkit.Rows("PRIORITY_HIGH")) + require.Error(t, tk.ExecToErr("set session tidb_ddl_reorg_priority = 'abc'")) + tk.MustQuery(`select @@session.tidb_ddl_reorg_priority;`).Check(testkit.Rows("PRIORITY_HIGH")) + + tk.MustExec("set tidb_opt_write_row_id = 1") + tk.MustQuery(`select @@session.tidb_opt_write_row_id;`).Check(testkit.Rows("1")) + tk.MustExec("set tidb_opt_write_row_id = 0") + tk.MustQuery(`select @@session.tidb_opt_write_row_id;`).Check(testkit.Rows("0")) + tk.MustExec("set tidb_opt_write_row_id = true") + tk.MustQuery(`select @@session.tidb_opt_write_row_id;`).Check(testkit.Rows("1")) + tk.MustExec("set tidb_opt_write_row_id = false") + tk.MustQuery(`select @@session.tidb_opt_write_row_id;`).Check(testkit.Rows("0")) + tk.MustExec("set tidb_opt_write_row_id = On") + tk.MustQuery(`select @@session.tidb_opt_write_row_id;`).Check(testkit.Rows("1")) + tk.MustExec("set tidb_opt_write_row_id = Off") + tk.MustQuery(`select @@session.tidb_opt_write_row_id;`).Check(testkit.Rows("0")) + require.Error(t, tk.ExecToErr("set tidb_opt_write_row_id = 'abc'")) + tk.MustQuery(`select @@session.tidb_opt_write_row_id;`).Check(testkit.Rows("0")) + + tk.MustExec("set tidb_checksum_table_concurrency = 42") + tk.MustQuery(`select @@tidb_checksum_table_concurrency;`).Check(testkit.Rows("42")) + require.Error(t, tk.ExecToErr("set tidb_checksum_table_concurrency = 'abc'")) + tk.MustQuery(`select @@tidb_checksum_table_concurrency;`).Check(testkit.Rows("42")) + tk.MustExec("set tidb_checksum_table_concurrency = 257") + tk.MustQuery(`select @@tidb_checksum_table_concurrency;`).Check(testkit.Rows(strconv.Itoa(variable.MaxConfigurableConcurrency))) + + tk.MustExec("set tidb_build_stats_concurrency = 42") + tk.MustQuery(`select @@tidb_build_stats_concurrency;`).Check(testkit.Rows("42")) + require.Error(t, tk.ExecToErr("set tidb_build_stats_concurrency = 'abc'")) + tk.MustQuery(`select @@tidb_build_stats_concurrency;`).Check(testkit.Rows("42")) + tk.MustExec("set tidb_build_stats_concurrency = 257") + tk.MustQuery(`select @@tidb_build_stats_concurrency;`).Check(testkit.Rows(strconv.Itoa(variable.MaxConfigurableConcurrency))) + + tk.MustExec(`set tidb_partition_prune_mode = "static"`) + tk.MustQuery(`select @@tidb_partition_prune_mode;`).Check(testkit.Rows("static")) + tk.MustExec(`set tidb_partition_prune_mode = "dynamic"`) + tk.MustQuery(`select @@tidb_partition_prune_mode;`).Check(testkit.Rows("dynamic")) + tk.MustExec(`set tidb_partition_prune_mode = "static-only"`) + tk.MustQuery(`select @@tidb_partition_prune_mode;`).Check(testkit.Rows("static")) + tk.MustExec(`set tidb_partition_prune_mode = "dynamic-only"`) + tk.MustQuery(`select @@tidb_partition_prune_mode;`).Check(testkit.Rows("dynamic")) + require.Error(t, tk.ExecToErr("set tidb_partition_prune_mode = 'abc'")) + tk.MustQuery(`select @@tidb_partition_prune_mode;`).Check(testkit.Rows("dynamic")) tk.MustExec("set tidb_constraint_check_in_place = 1") tk.MustQuery(`select @@session.tidb_constraint_check_in_place;`).Check(testkit.Rows("1")) @@ -332,8 +414,8 @@ func TestSetVar(t *testing.T) { tk.MustExec("set @@global.tidb_store_limit = 100") tk.MustQuery("select @@global.tidb_store_limit;").Check(testkit.Rows("100")) tk.MustExec("set @@global.tidb_store_limit = 0") - tk.MustExec("set global tidb_store_limit = 100") - tk.MustQuery("select @@global.tidb_store_limit;").Check(testkit.Rows("100")) + tk.MustExec("set global tidb_store_limit = 10000") + tk.MustQuery("select @@global.tidb_store_limit;").Check(testkit.Rows("10000")) tk.MustQuery("select @@global.tidb_txn_commit_batch_size;").Check(testkit.Rows("16384")) tk.MustExec("set @@global.tidb_txn_commit_batch_size = 100") @@ -643,6 +725,40 @@ func TestSetVar(t *testing.T) { tk.MustQuery("select @@tidb_max_auto_analyze_time").Check(testkit.Rows("60")) tk.MustExec("set global tidb_max_auto_analyze_time = -1") tk.MustQuery("select @@tidb_max_auto_analyze_time").Check(testkit.Rows("0")) + + // test variables for cost model ver2 + tk.MustQuery("select @@tidb_cost_model_version").Check(testkit.Rows("1")) + tk.MustExec("set tidb_cost_model_version=3") + tk.MustQuery("show warnings").Check(testkit.RowsWithSep("|", "Warning|1292|Truncated incorrect tidb_cost_model_version value: '3'")) + tk.MustExec("set tidb_cost_model_version=0") + tk.MustQuery("show warnings").Check(testkit.RowsWithSep("|", "Warning|1292|Truncated incorrect tidb_cost_model_version value: '0'")) + tk.MustExec("set tidb_cost_model_version=2") + tk.MustQuery("select @@tidb_cost_model_version").Check(testkit.Rows("2")) +} + +func TestGetSetNoopVars(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + tk := testkit.NewTestKit(t, store) + + // By default you can get/set noop sysvars without issue. + tk.MustQuery("SELECT @@query_cache_type").Check(testkit.Rows("OFF")) + tk.MustQuery("SHOW VARIABLES LIKE 'query_cache_type'").Check(testkit.Rows("query_cache_type OFF")) + tk.MustExec("SET query_cache_type=2") + tk.MustQuery("SELECT @@query_cache_type").Check(testkit.Rows("DEMAND")) + // When tidb_enable_noop_variables is OFF, you can GET in @@ context + // and always SET. But you can't see in SHOW VARIABLES. + // Warnings are also returned. + tk.MustExec("SET GLOBAL tidb_enable_noop_variables = OFF") + defer tk.MustExec("SET GLOBAL tidb_enable_noop_variables = ON") + tk.MustQuery("SELECT @@global.tidb_enable_noop_variables").Check(testkit.Rows("OFF")) + tk.MustQuery("SELECT @@query_cache_type").Check(testkit.Rows("DEMAND")) + tk.MustQuery("SHOW WARNINGS").Check(testkit.Rows("Warning 8145 variable query_cache_type has no effect in TiDB")) + tk.MustQuery("SHOW VARIABLES LIKE 'query_cache_type'").Check(testkit.Rows()) + tk.MustExec("SET query_cache_type = OFF") + tk.MustQuery("SHOW WARNINGS").Check(testkit.Rows("Warning 8144 setting query_cache_type has no effect in TiDB")) + // but the change is still effective. + tk.MustQuery("SELECT @@query_cache_type").Check(testkit.Rows("OFF")) } func TestTruncateIncorrectIntSessionVar(t *testing.T) { @@ -905,16 +1021,17 @@ func TestValidateSetVar(t *testing.T) { result.Check(testkit.Rows("SYSTEM")) // The following cases test value out of range and illegal type when setting system variables. - // See https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html for more details. + // See https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html for more details. tk.MustExec("set @@global.max_connections=100001") tk.MustQuery("show warnings").Check(testkit.RowsWithSep("|", "Warning|1292|Truncated incorrect max_connections value: '100001'")) result = tk.MustQuery("select @@global.max_connections;") result.Check(testkit.Rows("100000")) + // "max_connections == 0" means there is no limitation on the number of connections. tk.MustExec("set @@global.max_connections=-1") tk.MustQuery("show warnings").Check(testkit.RowsWithSep("|", "Warning|1292|Truncated incorrect max_connections value: '-1'")) result = tk.MustQuery("select @@global.max_connections;") - result.Check(testkit.Rows("1")) + result.Check(testkit.Rows("0")) err = tk.ExecToErr("set @@global.max_connections='hello'") require.True(t, terror.ErrorEqual(err, variable.ErrWrongTypeForVar)) @@ -961,7 +1078,7 @@ func TestValidateSetVar(t *testing.T) { tk.MustExec("set @@global.max_connections=-1") tk.MustQuery("show warnings").Check(testkit.RowsWithSep("|", "Warning|1292|Truncated incorrect max_connections value: '-1'")) result = tk.MustQuery("select @@global.max_connections;") - result.Check(testkit.Rows("1")) + result.Check(testkit.Rows("0")) err = tk.ExecToErr("set @@global.max_connections='hello'") require.True(t, terror.ErrorEqual(err, variable.ErrWrongTypeForVar)) @@ -1217,15 +1334,15 @@ func TestSelectGlobalVar(t *testing.T) { defer clean() tk := testkit.NewTestKit(t, store) - tk.MustQuery("select @@global.max_connections;").Check(testkit.Rows("151")) - tk.MustQuery("select @@max_connections;").Check(testkit.Rows("151")) + tk.MustQuery("select @@global.max_connections;").Check(testkit.Rows("0")) + tk.MustQuery("select @@max_connections;").Check(testkit.Rows("0")) tk.MustExec("set @@global.max_connections=100;") tk.MustQuery("select @@global.max_connections;").Check(testkit.Rows("100")) tk.MustQuery("select @@max_connections;").Check(testkit.Rows("100")) - tk.MustExec("set @@global.max_connections=151;") + tk.MustExec("set @@global.max_connections=0;") // test for unknown variable. err := tk.ExecToErr("select @@invalid") @@ -1702,3 +1819,19 @@ func TestInstanceScopeSwitching(t *testing.T) { tk.MustExec("set tidb_enable_legacy_instance_scope = 0") tk.MustGetErrCode("set tidb_general_log = 1", errno.ErrGlobalVariable) } + +func TestGcMaxWaitTime(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("set global tidb_gc_max_wait_time = 1000") + tk.MustExec("set global tidb_gc_life_time = \"72h\"") + tk.MustExec("set global tidb_gc_life_time = \"24h\"") + tk.MustExec("set global tidb_gc_life_time = \"10m\"") + + tk.MustExec("set global tidb_gc_max_wait_time = 86400") + tk.MustExec("set global tidb_gc_life_time = \"72h\"") + tk.MustExec("set global tidb_gc_max_wait_time = 1000") +} diff --git a/executor/show.go b/executor/show.go index 2271ee1188efe..d1424244bdb47 100644 --- a/executor/show.go +++ b/executor/show.go @@ -29,6 +29,7 @@ import ( "github.com/pingcap/tidb/config" "github.com/pingcap/tidb/ddl" "github.com/pingcap/tidb/domain" + "github.com/pingcap/tidb/domain/infosync" "github.com/pingcap/tidb/expression" "github.com/pingcap/tidb/infoschema" "github.com/pingcap/tidb/kv" @@ -45,6 +46,7 @@ import ( "github.com/pingcap/tidb/privilege" "github.com/pingcap/tidb/privilege/privileges" "github.com/pingcap/tidb/sessionctx" + "github.com/pingcap/tidb/sessionctx/sessionstates" "github.com/pingcap/tidb/sessionctx/stmtctx" "github.com/pingcap/tidb/sessionctx/variable" "github.com/pingcap/tidb/store/helper" @@ -98,6 +100,12 @@ type ShowExec struct { Extended bool // Used for `show extended columns from ...` } +type showTableRegionRowItem struct { + regionMeta + schedulingConstraints string + schedulingState string +} + // Next implements the Executor Next interface. func (e *ShowExec) Next(ctx context.Context, req *chunk.Chunk) error { req.GrowAndReset(e.maxChunkSize) @@ -218,7 +226,7 @@ func (e *ShowExec) fetchAll(ctx context.Context) error { case ast.ShowAnalyzeStatus: return e.fetchShowAnalyzeStatus() case ast.ShowRegions: - return e.fetchShowTableRegions() + return e.fetchShowTableRegions(ctx) case ast.ShowBuiltins: return e.fetchShowBuiltins() case ast.ShowBackups: @@ -235,6 +243,8 @@ func (e *ShowExec) fetchAll(ctx context.Context) error { return e.fetchShowPlacementForTable(ctx) case ast.ShowPlacementForPartition: return e.fetchShowPlacementForPartition(ctx) + case ast.ShowSessionStates: + return e.fetchShowSessionStates(ctx) } return nil } @@ -817,6 +827,9 @@ func (e *ShowExec) fetchShowVariables() (err error) { // otherwise, fetch the value from table `mysql.Global_Variables`. for _, v := range variable.GetSysVars() { if v.Scope != variable.ScopeSession { + if v.IsNoop && !variable.EnableNoopVariables.Load() { + continue + } if fieldFilter != "" && v.Name != fieldFilter { continue } else if fieldPatternsLike != nil && !fieldPatternsLike.DoMatch(v.Name) { @@ -839,6 +852,9 @@ func (e *ShowExec) fetchShowVariables() (err error) { // If it is a session only variable, use the default value defined in code, // otherwise, fetch the value from table `mysql.Global_Variables`. for _, v := range variable.GetSysVars() { + if v.IsNoop && !variable.EnableNoopVariables.Load() { + continue + } if fieldFilter != "" && v.Name != fieldFilter { continue } else if fieldPatternsLike != nil && !fieldPatternsLike.DoMatch(v.Name) { @@ -1809,7 +1825,7 @@ func (e *ShowExec) appendRow(row []interface{}) { } } -func (e *ShowExec) fetchShowTableRegions() error { +func (e *ShowExec) fetchShowTableRegions(ctx context.Context) error { store := e.ctx.GetStore() tikvStore, ok := store.(helper.Storage) if !ok { @@ -1849,22 +1865,82 @@ func (e *ShowExec) fetchShowTableRegions() error { // Get table regions from from pd, not from regionCache, because the region cache maybe outdated. var regions []regionMeta if len(e.IndexName.L) != 0 { + // show table * index * region indexInfo := tb.Meta().FindIndexByName(e.IndexName.L) if indexInfo == nil { return plannercore.ErrKeyDoesNotExist.GenWithStackByArgs(e.IndexName, tb.Meta().Name) } regions, err = getTableIndexRegions(indexInfo, physicalIDs, tikvStore, splitStore) } else { + // show table * region regions, err = getTableRegions(tb, physicalIDs, tikvStore, splitStore) } + if err != nil { + return err + } + regionRowItem, err := e.fetchSchedulingInfo(ctx, regions, tb.Meta()) if err != nil { return err } - e.fillRegionsToChunk(regions) + + e.fillRegionsToChunk(regionRowItem) return nil } +func (e *ShowExec) fetchSchedulingInfo(ctx context.Context, regions []regionMeta, tbInfo *model.TableInfo) ([]showTableRegionRowItem, error) { + scheduleState := make(map[int64]infosync.PlacementScheduleState) + schedulingConstraints := make(map[int64]*model.PlacementSettings) + regionRowItem := make([]showTableRegionRowItem, 0) + tblPlacement, err := e.getTablePlacement(tbInfo) + if err != nil { + return nil, err + } + + if tbInfo.GetPartitionInfo() != nil { + // partitioned table + for _, part := range tbInfo.GetPartitionInfo().Definitions { + _, err = fetchScheduleState(ctx, scheduleState, part.ID) + if err != nil { + return nil, err + } + placement, err := e.getPolicyPlacement(part.PlacementPolicyRef) + if err != nil { + return nil, err + } + if placement == nil { + schedulingConstraints[part.ID] = tblPlacement + } else { + schedulingConstraints[part.ID] = placement + } + } + } else { + // un-partitioned table or index + schedulingConstraints[tbInfo.ID] = tblPlacement + _, err = fetchScheduleState(ctx, scheduleState, tbInfo.ID) + if err != nil { + return nil, err + } + } + var constraintStr string + var scheduleStateStr string + for i := range regions { + if constraint, ok := schedulingConstraints[regions[i].physicalID]; ok && constraint != nil { + constraintStr = constraint.String() + scheduleStateStr = scheduleState[regions[i].physicalID].String() + } else { + constraintStr = "" + scheduleStateStr = "" + } + regionRowItem = append(regionRowItem, showTableRegionRowItem{ + regionMeta: regions[i], + schedulingConstraints: constraintStr, + schedulingState: scheduleStateStr, + }) + } + return regionRowItem, nil +} + func getTableRegions(tb table.Table, physicalIDs []int64, tikvStore helper.Storage, splitStore kv.SplittableStore) ([]regionMeta, error) { regions := make([]regionMeta, 0, len(physicalIDs)) uniqueRegionMap := make(map[uint64]struct{}) @@ -1891,7 +1967,7 @@ func getTableIndexRegions(indexInfo *model.IndexInfo, physicalIDs []int64, tikvS return regions, nil } -func (e *ShowExec) fillRegionsToChunk(regions []regionMeta) { +func (e *ShowExec) fillRegionsToChunk(regions []showTableRegionRowItem) { for i := range regions { e.result.AppendUint64(0, regions[i].region.Id) e.result.AppendString(1, regions[i].start) @@ -1917,6 +1993,8 @@ func (e *ShowExec) fillRegionsToChunk(regions []regionMeta) { e.result.AppendUint64(8, regions[i].readBytes) e.result.AppendInt64(9, regions[i].approximateSize) e.result.AppendInt64(10, regions[i].approximateKeys) + e.result.AppendString(11, regions[i].schedulingConstraints) + e.result.AppendString(12, regions[i].schedulingState) } } @@ -1927,6 +2005,33 @@ func (e *ShowExec) fetchShowBuiltins() error { return nil } +func (e *ShowExec) fetchShowSessionStates(ctx context.Context) error { + sessionStates := &sessionstates.SessionStates{} + err := e.ctx.EncodeSessionStates(ctx, e.ctx, sessionStates) + if err != nil { + return err + } + stateBytes, err := gjson.Marshal(sessionStates) + if err != nil { + return errors.Trace(err) + } + stateJSON := json.BinaryJSON{} + if err = stateJSON.UnmarshalJSON(stateBytes); err != nil { + return err + } + // This will be implemented in future PRs. + tokenBytes, err := gjson.Marshal("") + if err != nil { + return errors.Trace(err) + } + tokenJSON := json.BinaryJSON{} + if err = tokenJSON.UnmarshalJSON(tokenBytes); err != nil { + return err + } + e.appendRow([]interface{}{stateJSON, tokenJSON}) + return nil +} + // tryFillViewColumnType fill the columns type info of a view. // Because view's underlying table's column could change or recreate, so view's column type may change over time. // To avoid this situation we need to generate a logical plan and extract current column types from Schema. diff --git a/executor/show_stats_test.go b/executor/show_stats_test.go index 38ac3d46303c1..698faa5934929 100644 --- a/executor/show_stats_test.go +++ b/executor/show_stats_test.go @@ -342,18 +342,6 @@ func TestShowColumnStatsUsage(t *testing.T) { require.Equal(t, rows[1], []interface{}{"test", "t2", p0.Name.O, t1.Meta().Columns[0].Name.O, "2021-10-20 09:00:00", ""}) } -func TestShowHistogramsInFlight(t *testing.T) { - store, clean := testkit.CreateMockStore(t) - defer clean() - - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - result := tk.MustQuery("show histograms_in_flight") - rows := result.Rows() - require.Len(t, rows, 1) - require.Equal(t, rows[0][0], "0") -} - func TestShowAnalyzeStatus(t *testing.T) { store, clean := testkit.CreateMockStore(t) defer clean() diff --git a/executor/showtest/BUILD.bazel b/executor/showtest/BUILD.bazel new file mode 100644 index 0000000000000..087f6d22c9a75 --- /dev/null +++ b/executor/showtest/BUILD.bazel @@ -0,0 +1,31 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_test") + +go_test( + name = "showtest_test", + srcs = [ + "main_test.go", + "show_test.go", + ], + flaky = True, + shard_count = 45, + deps = [ + "//config", + "//executor", + "//infoschema", + "//meta/autoid", + "//parser/auth", + "//parser/model", + "//parser/mysql", + "//parser/types", + "//planner/core", + "//privilege/privileges", + "//session", + "//sessionctx/variable", + "//testkit", + "//types", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_stretchr_testify//require", + "@com_github_tikv_client_go_v2//tikv", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/executor/showtest/main_test.go b/executor/showtest/main_test.go new file mode 100644 index 0000000000000..a2adb05fae390 --- /dev/null +++ b/executor/showtest/main_test.go @@ -0,0 +1,44 @@ +// 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 showtest + +import ( + "testing" + + "github.com/pingcap/tidb/config" + "github.com/pingcap/tidb/meta/autoid" + "github.com/tikv/client-go/v2/tikv" + "go.uber.org/goleak" +) + +func TestMain(m *testing.M) { + autoid.SetStep(5000) + config.UpdateGlobal(func(conf *config.Config) { + conf.Log.SlowThreshold = 30000 // 30s + conf.TiKVClient.AsyncCommit.SafeWindow = 0 + conf.TiKVClient.AsyncCommit.AllowedClockDrift = 0 + conf.Experimental.AllowsExpressionIndex = true + }) + tikv.EnableFailpoints() + + opts := []goleak.Option{ + goleak.IgnoreTopFunction("github.com/golang/glog.(*loggingT).flushDaemon"), + goleak.IgnoreTopFunction("go.etcd.io/etcd/client/pkg/v3/logutil.(*MergeLogger).outputLoop"), + goleak.IgnoreTopFunction("go.opencensus.io/stats/view.(*worker).start"), + goleak.IgnoreTopFunction("gopkg.in/natefinch/lumberjack%2ev2.(*Logger).millRun"), + goleak.IgnoreTopFunction("github.com/tikv/client-go/v2/txnkv/transaction.keepAlive"), + } + goleak.VerifyTestMain(m, opts...) +} diff --git a/executor/show_test.go b/executor/showtest/show_test.go similarity index 97% rename from executor/show_test.go rename to executor/showtest/show_test.go index 2963022c21567..75e93d9655854 100644 --- a/executor/show_test.go +++ b/executor/showtest/show_test.go @@ -1,4 +1,4 @@ -// Copyright 2016 PingCAP, Inc. +// Copyright 2020 PingCAP, Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package executor_test +package showtest import ( "context" @@ -36,1155 +36,1181 @@ import ( "github.com/stretchr/testify/require" ) -func TestShowVisibility(t *testing.T) { +func TestShowHistogramsInFlight(t *testing.T) { store, clean := testkit.CreateMockStore(t) defer clean() - tk := testkit.NewTestKit(t, store) - tk.MustExec("create database showdatabase") - tk.MustExec("use showdatabase") - tk.MustExec("create table t1 (id int)") - tk.MustExec("create table t2 (id int)") - tk.MustExec(`create user 'show'@'%'`) - - tk1 := testkit.NewTestKit(t, store) - require.True(t, tk1.Session().Auth(&auth.UserIdentity{Username: "show", Hostname: "%"}, nil, nil)) - - // No ShowDatabases privilege, this user would see nothing except INFORMATION_SCHEMA. - tk.MustQuery("show databases").Check(testkit.Rows("INFORMATION_SCHEMA")) - - // After grant, the user can see the database. - tk.MustExec(`grant select on showdatabase.t1 to 'show'@'%'`) - tk1.MustQuery("show databases").Check(testkit.Rows("INFORMATION_SCHEMA", "showdatabase")) - - // The user can see t1 but not t2. - tk1.MustExec("use showdatabase") - tk1.MustQuery("show tables").Check(testkit.Rows("t1")) - - // After revoke, show database result should be just except INFORMATION_SCHEMA. - tk.MustExec(`revoke select on showdatabase.t1 from 'show'@'%'`) - tk1.MustQuery("show databases").Check(testkit.Rows("INFORMATION_SCHEMA")) - - // Grant any global privilege would make show databases available. - tk.MustExec(`grant CREATE on *.* to 'show'@'%'`) - rows := tk1.MustQuery("show databases").Rows() - require.GreaterOrEqual(t, len(rows), 2) - - tk.MustExec(`drop user 'show'@'%'`) - tk.MustExec("drop database showdatabase") -} -func TestShowDatabasesInfoSchemaFirst(t *testing.T) { - store, clean := testkit.CreateMockStore(t) - defer clean() tk := testkit.NewTestKit(t, store) - tk.MustQuery("show databases").Check(testkit.Rows("INFORMATION_SCHEMA")) - tk.MustExec(`create user 'show'@'%'`) - - tk.MustExec(`create database AAAA`) - tk.MustExec(`create database BBBB`) - tk.MustExec(`grant select on AAAA.* to 'show'@'%'`) - tk.MustExec(`grant select on BBBB.* to 'show'@'%'`) - - tk1 := testkit.NewTestKit(t, store) - require.True(t, tk1.Session().Auth(&auth.UserIdentity{Username: "show", Hostname: "%"}, nil, nil)) - tk1.MustQuery("show databases").Check(testkit.Rows("INFORMATION_SCHEMA", "AAAA", "BBBB")) - - tk.MustExec(`drop user 'show'@'%'`) - tk.MustExec(`drop database AAAA`) - tk.MustExec(`drop database BBBB`) + tk.MustExec("use test") + result := tk.MustQuery("show histograms_in_flight") + rows := result.Rows() + require.Len(t, rows, 1) + require.Equal(t, rows[0][0], "0") } -func TestShowWarnings(t *testing.T) { +func TestShowOpenTables(t *testing.T) { store, clean := testkit.CreateMockStore(t) defer clean() tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - testSQL := `create table if not exists show_warnings (a int)` - tk.MustExec(testSQL) - tk.MustExec("set @@sql_mode=''") - tk.MustExec("insert show_warnings values ('a')") - require.Equal(t, uint16(1), tk.Session().GetSessionVars().StmtCtx.WarningCount()) - tk.MustQuery("show warnings").Check(testkit.RowsWithSep("|", "Warning|1292|Truncated incorrect DOUBLE value: 'a'")) - require.Equal(t, uint16(0), tk.Session().GetSessionVars().StmtCtx.WarningCount()) - tk.MustQuery("show warnings").Check(testkit.RowsWithSep("|", "Warning|1292|Truncated incorrect DOUBLE value: 'a'")) - require.Equal(t, uint16(0), tk.Session().GetSessionVars().StmtCtx.WarningCount()) - - // Test Warning level 'Error' - testSQL = `create table show_warnings (a int)` - _, _ = tk.Exec(testSQL) - // FIXME: Table 'test.show_warnings' already exists - require.Equal(t, uint16(1), tk.Session().GetSessionVars().StmtCtx.WarningCount()) - tk.MustQuery("show warnings").Check(testkit.RowsWithSep("|", "Error|1050|Table 'test.show_warnings' already exists")) - tk.MustQuery("select @@error_count").Check(testkit.RowsWithSep("|", "1")) - - // Test Warning level 'Note' - testSQL = `create table show_warnings_2 (a int)` - tk.MustExec(testSQL) - testSQL = `create table if not exists show_warnings_2 like show_warnings` - _, err := tk.Exec(testSQL) - require.NoError(t, err) - require.Equal(t, uint16(1), tk.Session().GetSessionVars().StmtCtx.WarningCount()) - tk.MustQuery("show warnings").Check(testkit.RowsWithSep("|", "Note|1050|Table 'test.show_warnings_2' already exists")) - tk.MustQuery("select @@warning_count").Check(testkit.RowsWithSep("|", "1")) - tk.MustQuery("select @@warning_count").Check(testkit.RowsWithSep("|", "0")) + tk.MustQuery("show open tables") + tk.MustQuery("show open tables in test") } -func TestShowErrors(t *testing.T) { +func TestShowCreateViewDefiner(t *testing.T) { store, clean := testkit.CreateMockStore(t) defer clean() tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - testSQL := `create table if not exists show_errors (a int)` - tk.MustExec(testSQL) - testSQL = `create table show_errors (a int)` - // FIXME: 'test.show_errors' already exists - _, _ = tk.Exec(testSQL) - - tk.MustQuery("show errors").Check(testkit.RowsWithSep("|", "Error|1050|Table 'test.show_errors' already exists")) - - // eliminate previous errors - tk.MustExec("select 1") - _, _ = tk.Exec("create invalid") - tk.MustQuery("show errors").Check(testkit.RowsWithSep("|", "Error|1064|You have an error in your SQL syntax; check the manual that corresponds to your TiDB version for the right syntax to use line 1 column 14 near \"invalid\" ")) -} + require.True(t, tk.Session().Auth(&auth.UserIdentity{Username: "root", Hostname: "%", AuthUsername: "root", AuthHostname: "%"}, nil, nil)) -func TestShowWarningsForExprPushdown(t *testing.T) { - store, dom, clean := testkit.CreateMockStoreAndDomain(t) - defer clean() - tk := testkit.NewTestKit(t, store) tk.MustExec("use test") - testSQL := `create table if not exists show_warnings_expr_pushdown (a int, value date)` - tk.MustExec(testSQL) - - // create tiflash replica - { - is := dom.InfoSchema() - db, exists := is.SchemaByName(model.NewCIStr("test")) - require.True(t, exists) - for _, tblInfo := range db.Tables { - if tblInfo.Name.L == "show_warnings_expr_pushdown" { - tblInfo.TiFlashReplica = &model.TiFlashReplicaInfo{ - Count: 1, - Available: true, - } - } - } - } - tk.MustExec("set tidb_allow_mpp=0") - tk.MustExec("explain select * from show_warnings_expr_pushdown t where md5(value) = '2020-01-01'") - require.Equal(t, uint16(1), tk.Session().GetSessionVars().StmtCtx.WarningCount()) - tk.MustQuery("show warnings").Check(testkit.RowsWithSep("|", "Warning|1105|Scalar function 'md5'(signature: MD5, return type: var_string(32)) is not supported to push down to tiflash now.")) - tk.MustExec("explain select max(md5(value)) from show_warnings_expr_pushdown group by a") - require.Equal(t, uint16(2), tk.Session().GetSessionVars().StmtCtx.WarningCount()) - tk.MustQuery("show warnings").Check(testkit.RowsWithSep("|", "Warning|1105|Scalar function 'md5'(signature: MD5, return type: var_string(32)) is not supported to push down to tiflash now.", "Warning|1105|Aggregation can not be pushed to tiflash because arguments of AggFunc `max` contains unsupported exprs")) - tk.MustExec("explain select max(a) from show_warnings_expr_pushdown group by md5(value)") - require.Equal(t, uint16(2), tk.Session().GetSessionVars().StmtCtx.WarningCount()) - tk.MustQuery("show warnings").Check(testkit.RowsWithSep("|", "Warning|1105|Scalar function 'md5'(signature: MD5, return type: var_string(32)) is not supported to push down to tiflash now.", "Warning|1105|Aggregation can not be pushed to tiflash because groupByItems contain unsupported exprs")) - tk.MustExec("set tidb_opt_distinct_agg_push_down=0") - tk.MustExec("explain select max(distinct a) from show_warnings_expr_pushdown group by value") - require.Equal(t, uint16(0), tk.Session().GetSessionVars().StmtCtx.WarningCount()) - // tk.MustQuery("show warnings").Check(testkit.RowsWithSep("|", "Warning|1105|Aggregation can not be pushed to storage layer in non-mpp mode because it contains agg function with distinct")) + tk.MustExec("create or replace view v1 as select 1") + tk.MustQuery("show create view v1").Check(testkit.RowsWithSep("|", "v1|CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`%` SQL SECURITY DEFINER VIEW `v1` (`1`) AS SELECT 1 AS `1`|utf8mb4|utf8mb4_bin")) + tk.MustExec("drop view v1") } -func TestShowGrantsPrivilege(t *testing.T) { +func TestShowCreateTable(t *testing.T) { store, clean := testkit.CreateMockStore(t) defer clean() tk := testkit.NewTestKit(t, store) - tk.MustExec("create user show_grants") - tk.MustExec("show grants for show_grants") - tk1 := testkit.NewTestKit(t, store) - require.True(t, tk1.Session().Auth(&auth.UserIdentity{Username: "show_grants", Hostname: "%"}, nil, nil)) - err := tk1.QueryToErr("show grants for root") - require.EqualError(t, executor.ErrDBaccessDenied.GenWithStackByArgs("show_grants", "%", mysql.SystemDB), err.Error()) - // Test show grants for user with auth host name `%`. - tk2 := testkit.NewTestKit(t, store) - require.True(t, tk2.Session().Auth(&auth.UserIdentity{Username: "show_grants", Hostname: "127.0.0.1", AuthUsername: "show_grants", AuthHostname: "%"}, nil, nil)) - tk2.MustQuery("show grants") -} -func TestShowStatsPrivilege(t *testing.T) { - store, clean := testkit.CreateMockStore(t) - defer clean() - tk := testkit.NewTestKit(t, store) - tk.MustExec("create user show_stats") - tk1 := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("drop table if exists t1") + tk.MustExec("create table t1(a int,b int)") + tk.MustExec("drop view if exists v1") + tk.MustExec("create or replace definer=`root`@`127.0.0.1` view v1 as select * from t1") + tk.MustQuery("show create table v1").Check(testkit.RowsWithSep("|", "v1|CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`127.0.0.1` SQL SECURITY DEFINER VIEW `v1` (`a`, `b`) AS SELECT `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` FROM `test`.`t1`|utf8mb4|utf8mb4_bin")) + tk.MustQuery("show create view v1").Check(testkit.RowsWithSep("|", "v1|CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`127.0.0.1` SQL SECURITY DEFINER VIEW `v1` (`a`, `b`) AS SELECT `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` FROM `test`.`t1`|utf8mb4|utf8mb4_bin")) + tk.MustExec("drop view v1") + tk.MustExec("drop table t1") - require.True(t, tk1.Session().Auth(&auth.UserIdentity{Username: "show_stats", Hostname: "%"}, nil, nil)) - eqErr := plannercore.ErrDBaccessDenied.GenWithStackByArgs("show_stats", "%", mysql.SystemDB) - _, err := tk1.Exec("show stats_meta") - require.EqualError(t, err, eqErr.Error()) - _, err = tk1.Exec("SHOW STATS_BUCKETS") - require.EqualError(t, err, eqErr.Error()) - _, err = tk1.Exec("SHOW STATS_HEALTHY") - require.EqualError(t, err, eqErr.Error()) - _, err = tk1.Exec("SHOW STATS_HISTOGRAMS") - require.EqualError(t, err, eqErr.Error()) - tk.MustExec("grant select on mysql.* to show_stats") - tk1.MustExec("show stats_meta") - tk1.MustExec("SHOW STATS_BUCKETS") - tk1.MustExec("SHOW STATS_HEALTHY") - tk1.MustExec("SHOW STATS_HISTOGRAMS") -} + tk.MustExec("drop view if exists v") + tk.MustExec("create or replace definer=`root`@`127.0.0.1` view v as select JSON_MERGE('{}', '{}') as col;") + tk.MustQuery("show create view v").Check(testkit.RowsWithSep("|", "v|CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`127.0.0.1` SQL SECURITY DEFINER VIEW `v` (`col`) AS SELECT JSON_MERGE(_UTF8MB4'{}', _UTF8MB4'{}') AS `col`|utf8mb4|utf8mb4_bin")) + tk.MustExec("drop view if exists v") -func TestIssue18878(t *testing.T) { - store, clean := testkit.CreateMockStore(t) - defer clean() - tk := testkit.NewTestKit(t, store) - require.True(t, tk.Session().Auth(&auth.UserIdentity{Username: "root", Hostname: "127.0.0.1", AuthHostname: "%"}, nil, nil)) - tk.MustQuery("select user()").Check(testkit.Rows("root@127.0.0.1")) - tk.MustQuery("show grants") - tk.MustQuery("select user()").Check(testkit.Rows("root@127.0.0.1")) - err := tk.QueryToErr("show grants for root@127.0.0.1") - require.Equal(t, privileges.ErrNonexistingGrant.FastGenByArgs("root", "127.0.0.1").Error(), err.Error()) - err = tk.QueryToErr("show grants for root@localhost") - require.Equal(t, privileges.ErrNonexistingGrant.FastGenByArgs("root", "localhost").Error(), err.Error()) - err = tk.QueryToErr("show grants for root@1.1.1.1") - require.Equal(t, privileges.ErrNonexistingGrant.FastGenByArgs("root", "1.1.1.1").Error(), err.Error()) - tk.MustExec("create user `show_grants`@`127.0.%`") - err = tk.QueryToErr("show grants for `show_grants`@`127.0.0.1`") - require.Equal(t, privileges.ErrNonexistingGrant.FastGenByArgs("show_grants", "127.0.0.1").Error(), err.Error()) - tk.MustQuery("show grants for `show_grants`@`127.0.%`") -} + tk.MustExec("drop table if exists t1") + tk.MustExec("create table t1(a int,b int)") + tk.MustExec("create or replace definer=`root`@`127.0.0.1` view v1 as select avg(a),t1.* from t1 group by a") + tk.MustQuery("show create view v1").Check(testkit.RowsWithSep("|", "v1|CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`127.0.0.1` SQL SECURITY DEFINER VIEW `v1` (`avg(a)`, `a`, `b`) AS SELECT AVG(`a`) AS `avg(a)`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` FROM `test`.`t1` GROUP BY `a`|utf8mb4|utf8mb4_bin")) + tk.MustExec("drop view v1") + tk.MustExec("create or replace definer=`root`@`127.0.0.1` view v1 as select a+b, t1.* , a as c from t1") + tk.MustQuery("show create view v1").Check(testkit.RowsWithSep("|", "v1|CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`127.0.0.1` SQL SECURITY DEFINER VIEW `v1` (`a+b`, `a`, `b`, `c`) AS SELECT `a`+`b` AS `a+b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`a` AS `c` FROM `test`.`t1`|utf8mb4|utf8mb4_bin")) + tk.MustExec("drop table t1") + tk.MustExec("drop view v1") -func TestIssue17794(t *testing.T) { - store, clean := testkit.CreateMockStore(t) - defer clean() - tk := testkit.NewTestKit(t, store) - tk.MustExec("CREATE USER 'root'@'8.8.%'") - require.True(t, tk.Session().Auth(&auth.UserIdentity{Username: "root", Hostname: "9.9.9.9", AuthHostname: "%"}, nil, nil)) + // For issue #9211 + tk.MustExec("create table t(c int, b int as (c + 1))ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;") + tk.MustQuery("show create table `t`").Check(testkit.RowsWithSep("|", + ""+ + "t CREATE TABLE `t` (\n"+ + " `c` int(11) DEFAULT NULL,\n"+ + " `b` int(11) GENERATED ALWAYS AS (`c` + 1) VIRTUAL\n"+ + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin", + )) - tk1 := testkit.NewTestKit(t, store) - require.True(t, tk1.Session().Auth(&auth.UserIdentity{Username: "root", Hostname: "8.8.8.8", AuthHostname: "8.8.%"}, nil, nil)) - tk.MustQuery("show grants").Check(testkit.Rows("GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION")) - tk1.MustQuery("show grants").Check(testkit.Rows("GRANT USAGE ON *.* TO 'root'@'8.8.%'")) -} + tk.MustExec("drop table t") + tk.MustExec("create table t(c int, b int as (c + 1) not null)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;") + tk.MustQuery("show create table `t`").Check(testkit.RowsWithSep("|", + ""+ + "t CREATE TABLE `t` (\n"+ + " `c` int(11) DEFAULT NULL,\n"+ + " `b` int(11) GENERATED ALWAYS AS (`c` + 1) VIRTUAL NOT NULL\n"+ + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin", + )) + tk.MustExec("drop table t") + tk.MustExec("create table t ( a char(10) charset utf8 collate utf8_bin, b char(10) as (rtrim(a)));") + tk.MustQuery("show create table `t`").Check(testkit.RowsWithSep("|", + ""+ + "t CREATE TABLE `t` (\n"+ + " `a` char(10) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,\n"+ + " `b` char(10) GENERATED ALWAYS AS (rtrim(`a`)) VIRTUAL\n"+ + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin", + )) + tk.MustExec("drop table t") -func TestIssue3641(t *testing.T) { - store, clean := testkit.CreateMockStore(t) - defer clean() - tk := testkit.NewTestKit(t, store) - _, err := tk.Exec("show tables;") - require.Equal(t, plannercore.ErrNoDB.Error(), err.Error()) - _, err = tk.Exec("show table status;") - require.Equal(t, plannercore.ErrNoDB.Error(), err.Error()) -} + tk.MustExec(`drop table if exists different_charset`) + tk.MustExec(`create table different_charset(ch1 varchar(10) charset utf8, ch2 varchar(10) charset binary);`) + tk.MustQuery(`show create table different_charset`).Check(testkit.RowsWithSep("|", + ""+ + "different_charset CREATE TABLE `different_charset` (\n"+ + " `ch1` varchar(10) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,\n"+ + " `ch2` varbinary(10) DEFAULT NULL\n"+ + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin", + )) -func TestIssue10549(t *testing.T) { - store, clean := testkit.CreateMockStore(t) - defer clean() - tk := testkit.NewTestKit(t, store) - tk.MustExec("CREATE DATABASE newdb;") - tk.MustExec("CREATE ROLE 'app_developer';") - tk.MustExec("GRANT ALL ON newdb.* TO 'app_developer';") - tk.MustExec("CREATE USER 'dev';") - tk.MustExec("GRANT 'app_developer' TO 'dev';") - tk.MustExec("SET DEFAULT ROLE app_developer TO 'dev';") + tk.MustExec("drop table if exists t") + tk.MustExec("create table `t` (\n" + + "`a` timestamp not null default current_timestamp,\n" + + "`b` timestamp(3) default current_timestamp(3),\n" + + "`c` datetime default current_timestamp,\n" + + "`d` datetime(4) default current_timestamp(4),\n" + + "`e` varchar(20) default 'cUrrent_tImestamp',\n" + + "`f` datetime(2) default current_timestamp(2) on update current_timestamp(2),\n" + + "`g` timestamp(2) default current_timestamp(2) on update current_timestamp(2))") + tk.MustQuery("show create table `t`").Check(testkit.RowsWithSep("|", + ""+ + "t CREATE TABLE `t` (\n"+ + " `a` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,\n"+ + " `b` timestamp(3) DEFAULT CURRENT_TIMESTAMP(3),\n"+ + " `c` datetime DEFAULT CURRENT_TIMESTAMP,\n"+ + " `d` datetime(4) DEFAULT CURRENT_TIMESTAMP(4),\n"+ + " `e` varchar(20) DEFAULT 'cUrrent_tImestamp',\n"+ + " `f` datetime(2) DEFAULT CURRENT_TIMESTAMP(2) ON UPDATE CURRENT_TIMESTAMP(2),\n"+ + " `g` timestamp(2) DEFAULT CURRENT_TIMESTAMP(2) ON UPDATE CURRENT_TIMESTAMP(2)\n"+ + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin", + )) + tk.MustExec("drop table t") - require.True(t, tk.Session().Auth(&auth.UserIdentity{Username: "dev", Hostname: "%", AuthUsername: "dev", AuthHostname: "%"}, nil, nil)) - tk.MustQuery("SHOW DATABASES;").Check(testkit.Rows("INFORMATION_SCHEMA", "newdb")) - tk.MustQuery("SHOW GRANTS;").Check(testkit.Rows("GRANT USAGE ON *.* TO 'dev'@'%'", "GRANT ALL PRIVILEGES ON newdb.* TO 'dev'@'%'", "GRANT 'app_developer'@'%' TO 'dev'@'%'")) - tk.MustQuery("SHOW GRANTS FOR CURRENT_USER").Check(testkit.Rows("GRANT USAGE ON *.* TO 'dev'@'%'", "GRANT ALL PRIVILEGES ON newdb.* TO 'dev'@'%'", "GRANT 'app_developer'@'%' TO 'dev'@'%'")) - tk.MustQuery("SHOW GRANTS FOR dev").Check(testkit.Rows("GRANT USAGE ON *.* TO 'dev'@'%'", "GRANT 'app_developer'@'%' TO 'dev'@'%'")) + tk.MustExec("create table t (a int, b int) shard_row_id_bits = 4 pre_split_regions=3;") + tk.MustQuery("show create table `t`").Check(testkit.RowsWithSep("|", + ""+ + "t CREATE TABLE `t` (\n"+ + " `a` int(11) DEFAULT NULL,\n"+ + " `b` int(11) DEFAULT NULL\n"+ + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin /*T! SHARD_ROW_ID_BITS=4 PRE_SPLIT_REGIONS=3 */", + )) + tk.MustExec("drop table t") + + // for issue #20446 + tk.MustExec("drop table if exists t1;") + tk.MustExec("create table t1(c int unsigned default 0);") + tk.MustQuery("show create table `t1`").Check(testkit.RowsWithSep("|", + ""+ + "t1 CREATE TABLE `t1` (\n"+ + " `c` int(10) unsigned DEFAULT '0'\n"+ + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin", + )) + tk.MustExec("drop table t1") + + tk.MustExec("CREATE TABLE `log` (" + + "`LOG_ID` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT," + + "`ROUND_ID` bigint(20) UNSIGNED NOT NULL," + + "`USER_ID` int(10) UNSIGNED NOT NULL," + + "`USER_IP` int(10) UNSIGNED DEFAULT NULL," + + "`END_TIME` datetime NOT NULL," + + "`USER_TYPE` int(11) DEFAULT NULL," + + "`APP_ID` int(11) DEFAULT NULL," + + "PRIMARY KEY (`LOG_ID`,`END_TIME`)," + + "KEY `IDX_EndTime` (`END_TIME`)," + + "KEY `IDX_RoundId` (`ROUND_ID`)," + + "KEY `IDX_UserId_EndTime` (`USER_ID`,`END_TIME`)" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=505488 " + + "PARTITION BY RANGE ( month(`end_time`) ) (" + + "PARTITION `p1` VALUES LESS THAN (2)," + + "PARTITION `p2` VALUES LESS THAN (3)," + + "PARTITION `p3` VALUES LESS THAN (4)," + + "PARTITION `p4` VALUES LESS THAN (5)," + + "PARTITION `p5` VALUES LESS THAN (6)," + + "PARTITION `p6` VALUES LESS THAN (7)," + + "PARTITION `p7` VALUES LESS THAN (8)," + + "PARTITION `p8` VALUES LESS THAN (9)," + + "PARTITION `p9` VALUES LESS THAN (10)," + + "PARTITION `p10` VALUES LESS THAN (11)," + + "PARTITION `p11` VALUES LESS THAN (12)," + + "PARTITION `p12` VALUES LESS THAN (MAXVALUE))") + tk.MustQuery("show create table log").Check(testkit.RowsWithSep("|", + "log CREATE TABLE `log` (\n"+ + " `LOG_ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,\n"+ + " `ROUND_ID` bigint(20) unsigned NOT NULL,\n"+ + " `USER_ID` int(10) unsigned NOT NULL,\n"+ + " `USER_IP` int(10) unsigned DEFAULT NULL,\n"+ + " `END_TIME` datetime NOT NULL,\n"+ + " `USER_TYPE` int(11) DEFAULT NULL,\n"+ + " `APP_ID` int(11) DEFAULT NULL,\n"+ + " PRIMARY KEY (`LOG_ID`,`END_TIME`) /*T![clustered_index] NONCLUSTERED */,\n"+ + " KEY `IDX_EndTime` (`END_TIME`),\n"+ + " KEY `IDX_RoundId` (`ROUND_ID`),\n"+ + " KEY `IDX_UserId_EndTime` (`USER_ID`,`END_TIME`)\n"+ + ") ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=505488\n"+ + "PARTITION BY RANGE (MONTH(`end_time`))\n"+ + "(PARTITION `p1` VALUES LESS THAN (2),\n"+ + " PARTITION `p2` VALUES LESS THAN (3),\n"+ + " PARTITION `p3` VALUES LESS THAN (4),\n"+ + " PARTITION `p4` VALUES LESS THAN (5),\n"+ + " PARTITION `p5` VALUES LESS THAN (6),\n"+ + " PARTITION `p6` VALUES LESS THAN (7),\n"+ + " PARTITION `p7` VALUES LESS THAN (8),\n"+ + " PARTITION `p8` VALUES LESS THAN (9),\n"+ + " PARTITION `p9` VALUES LESS THAN (10),\n"+ + " PARTITION `p10` VALUES LESS THAN (11),\n"+ + " PARTITION `p11` VALUES LESS THAN (12),\n"+ + " PARTITION `p12` VALUES LESS THAN (MAXVALUE))")) + + // for issue #11831 + tk.MustExec("create table ttt4(a varchar(123) default null collate utf8mb4_unicode_ci)engine=innodb default charset=utf8mb4 collate=utf8mb4_unicode_ci;") + tk.MustQuery("show create table `ttt4`").Check(testkit.RowsWithSep("|", + ""+ + "ttt4 CREATE TABLE `ttt4` (\n"+ + " `a` varchar(123) COLLATE utf8mb4_unicode_ci DEFAULT NULL\n"+ + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + )) + tk.MustExec("create table ttt5(a varchar(123) default null)engine=innodb default charset=utf8mb4 collate=utf8mb4_bin;") + tk.MustQuery("show create table `ttt5`").Check(testkit.RowsWithSep("|", + ""+ + "ttt5 CREATE TABLE `ttt5` (\n"+ + " `a` varchar(123) DEFAULT NULL\n"+ + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin", + )) + + // for expression index + tk.MustExec("drop table if exists t;") + tk.MustExec("create table t(a int, b real);") + tk.MustExec("alter table t add index expr_idx((a*b+1));") + tk.MustQuery("show create table t;").Check(testkit.RowsWithSep("|", + ""+ + "t CREATE TABLE `t` (\n"+ + " `a` int(11) DEFAULT NULL,\n"+ + " `b` double DEFAULT NULL,\n"+ + " KEY `expr_idx` ((`a` * `b` + 1))\n"+ + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin", + )) + + // Fix issue #15175, show create table sequence_name. + tk.MustExec("drop sequence if exists seq") + tk.MustExec("create sequence seq") + tk.MustQuery("show create table seq;").Check(testkit.Rows("seq CREATE SEQUENCE `seq` start with 1 minvalue 1 maxvalue 9223372036854775806 increment by 1 cache 1000 nocycle ENGINE=InnoDB")) + + // Test for issue #15633, 'binary' collation should be ignored in the result of 'show create table'. + tk.MustExec(`drop table if exists binary_collate`) + tk.MustExec(`create table binary_collate(a varchar(10)) default collate=binary;`) + tk.MustQuery(`show create table binary_collate`).Check(testkit.RowsWithSep("|", + ""+ + "binary_collate CREATE TABLE `binary_collate` (\n"+ + " `a` varbinary(10) DEFAULT NULL\n"+ + ") ENGINE=InnoDB DEFAULT CHARSET=binary", // binary collate is ignored + )) + tk.MustExec(`drop table if exists binary_collate`) + tk.MustExec(`create table binary_collate(a varchar(10)) default charset=binary collate=binary;`) + tk.MustQuery(`show create table binary_collate`).Check(testkit.RowsWithSep("|", + ""+ + "binary_collate CREATE TABLE `binary_collate` (\n"+ + " `a` varbinary(10) DEFAULT NULL\n"+ + ") ENGINE=InnoDB DEFAULT CHARSET=binary", // binary collate is ignored + )) + tk.MustExec(`drop table if exists binary_collate`) + tk.MustExec(`create table binary_collate(a varchar(10)) default charset=utf8mb4 collate=utf8mb4_bin;`) + tk.MustQuery(`show create table binary_collate`).Check(testkit.RowsWithSep("|", + ""+ + "binary_collate CREATE TABLE `binary_collate` (\n"+ + " `a` varchar(10) DEFAULT NULL\n"+ + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin", // non-binary collate is kept. + )) + // Test for issue #17 in bug competition, default num and sequence should be shown without quote. + tk.MustExec(`drop table if exists default_num`) + tk.MustExec("create table default_num(a int default 11)") + tk.MustQuery("show create table default_num").Check(testkit.RowsWithSep("|", + ""+ + "default_num CREATE TABLE `default_num` (\n"+ + " `a` int(11) DEFAULT '11'\n"+ + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin", + )) + tk.MustExec(`drop table if exists default_varchar`) + tk.MustExec("create table default_varchar(a varchar(10) default \"haha\")") + tk.MustQuery("show create table default_varchar").Check(testkit.RowsWithSep("|", + ""+ + "default_varchar CREATE TABLE `default_varchar` (\n"+ + " `a` varchar(10) DEFAULT 'haha'\n"+ + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin", + )) + tk.MustExec(`drop table if exists default_sequence`) + tk.MustExec("create table default_sequence(a int default nextval(seq))") + tk.MustQuery("show create table default_sequence").Check(testkit.RowsWithSep("|", + ""+ + "default_sequence CREATE TABLE `default_sequence` (\n"+ + " `a` int(11) DEFAULT nextval(`test`.`seq`)\n"+ + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin", + )) + + // TiDB defaults (and only supports) foreign_key_checks=0 + // This means that the child table can be created before the parent table. + // This behavior is required for mysqldump restores. + tk.MustExec(`DROP TABLE IF EXISTS parent, child`) + tk.MustExec(`CREATE TABLE child (id INT NOT NULL PRIMARY KEY auto_increment, parent_id INT NOT NULL, INDEX par_ind (parent_id), CONSTRAINT child_ibfk_1 FOREIGN KEY (parent_id) REFERENCES parent(id))`) + tk.MustExec(`CREATE TABLE parent ( id INT NOT NULL PRIMARY KEY auto_increment )`) + tk.MustQuery(`show create table child`).Check(testkit.RowsWithSep("|", + ""+ + "child CREATE TABLE `child` (\n"+ + " `id` int(11) NOT NULL AUTO_INCREMENT,\n"+ + " `parent_id` int(11) NOT NULL,\n"+ + " PRIMARY KEY (`id`) /*T![clustered_index] CLUSTERED */,\n"+ + " KEY `par_ind` (`parent_id`),\n"+ + " CONSTRAINT `child_ibfk_1` FOREIGN KEY (`parent_id`) REFERENCES `parent` (`id`)\n"+ + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin", + )) + + // Test Foreign keys + ON DELETE / ON UPDATE + tk.MustExec(`DROP TABLE child`) + tk.MustExec(`CREATE TABLE child (id INT NOT NULL PRIMARY KEY auto_increment, parent_id INT NOT NULL, INDEX par_ind (parent_id), CONSTRAINT child_ibfk_1 FOREIGN KEY (parent_id) REFERENCES parent(id) ON DELETE SET NULL ON UPDATE CASCADE)`) + tk.MustQuery(`show create table child`).Check(testkit.RowsWithSep("|", + ""+ + "child CREATE TABLE `child` (\n"+ + " `id` int(11) NOT NULL AUTO_INCREMENT,\n"+ + " `parent_id` int(11) NOT NULL,\n"+ + " PRIMARY KEY (`id`) /*T![clustered_index] CLUSTERED */,\n"+ + " KEY `par_ind` (`parent_id`),\n"+ + " CONSTRAINT `child_ibfk_1` FOREIGN KEY (`parent_id`) REFERENCES `parent` (`id`) ON DELETE SET NULL ON UPDATE CASCADE\n"+ + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin", + )) + + // Test issue #20327 + tk.MustExec("drop table if exists t;") + tk.MustExec("create table t(a int, b char(10) as ('a'));") + result := tk.MustQuery("show create table t;").Rows()[0][1] + require.Regexp(t, `(?s).*GENERATED ALWAYS AS \(_utf8mb4'a'\).*`, result) + tk.MustExec("drop table if exists t;") + tk.MustExec("create table t(a int, b char(10) as (_utf8'a'));") + result = tk.MustQuery("show create table t;").Rows()[0][1] + require.Regexp(t, `(?s).*GENERATED ALWAYS AS \(_utf8'a'\).*`, result) + // Test show list partition table + 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), unique index idx (id)) partition by list (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) + );`) + tk.MustQuery(`show create table t`).Check(testkit.RowsWithSep("|", + "t CREATE TABLE `t` (\n"+ + " `id` int(11) DEFAULT NULL,\n"+ + " `name` varchar(10) DEFAULT NULL,\n"+ + " UNIQUE KEY `idx` (`id`)\n"+ + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin\n"+ + "PARTITION BY LIST (`id`)\n"+ + "(PARTITION `p0` VALUES IN (3,5,6,9,17),\n"+ + " PARTITION `p1` VALUES IN (1,2,10,11,19,20),\n"+ + " PARTITION `p2` VALUES IN (4,12,13,14,18),\n"+ + " PARTITION `p3` VALUES IN (7,8,15,16,NULL))")) + // Test show list column partition table + tk.MustExec(`DROP TABLE IF EXISTS t`) + tk.MustExec(`create table t (id int, name varchar(10), unique index idx (id)) 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) + );`) + tk.MustQuery(`show create table t`).Check(testkit.RowsWithSep("|", + "t CREATE TABLE `t` (\n"+ + " `id` int(11) DEFAULT NULL,\n"+ + " `name` varchar(10) DEFAULT NULL,\n"+ + " UNIQUE KEY `idx` (`id`)\n"+ + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin\n"+ + "PARTITION BY LIST COLUMNS(`id`)\n"+ + "(PARTITION `p0` VALUES IN (3,5,6,9,17),\n"+ + " PARTITION `p1` VALUES IN (1,2,10,11,19,20),\n"+ + " PARTITION `p2` VALUES IN (4,12,13,14,18),\n"+ + " PARTITION `p3` VALUES IN (7,8,15,16,NULL))")) + tk.MustExec(`DROP TABLE IF EXISTS t`) + tk.MustExec(`create table t (id int, name varchar(10), unique index idx (id, name)) partition by list columns (id, name) ( + partition p0 values in ((3, '1'), (5, '5')), + partition p1 values in ((1, '1')));`) + // The strings are single quoted in MySQL even if sql_mode doesn't contain ANSI_QUOTES. + tk.MustQuery(`show create table t`).Check(testkit.RowsWithSep("|", + "t CREATE TABLE `t` (\n"+ + " `id` int(11) DEFAULT NULL,\n"+ + " `name` varchar(10) DEFAULT NULL,\n"+ + " UNIQUE KEY `idx` (`id`,`name`)\n"+ + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin\n"+ + "PARTITION BY LIST COLUMNS(`id`,`name`)\n"+ + "(PARTITION `p0` VALUES IN ((3,'1'),(5,'5')),\n"+ + " PARTITION `p1` VALUES IN ((1,'1')))")) + tk.MustExec(`DROP TABLE IF EXISTS t`) + tk.MustExec(`create table t (id int primary key, v varchar(255) not null, key idx_v (v) comment 'foo\'bar')`) + tk.MustQuery(`show create table t`).Check(testkit.RowsWithSep("|", + "t CREATE TABLE `t` (\n"+ + " `id` int(11) NOT NULL,\n"+ + " `v` varchar(255) NOT NULL,\n"+ + " PRIMARY KEY (`id`) /*T![clustered_index] CLUSTERED */,\n"+ + " KEY `idx_v` (`v`) COMMENT 'foo''bar'\n"+ + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin")) + + // For issue #29922 + tk.MustExec("CREATE TABLE `thash` (\n `id` bigint unsigned NOT NULL,\n `data` varchar(255) DEFAULT NULL,\n PRIMARY KEY (`id`)\n)\nPARTITION BY HASH (`id`)\n(PARTITION pEven COMMENT = \"Even ids\",\n PARTITION pOdd COMMENT = \"Odd ids\");") + tk.MustQuery("show create table `thash`").Check(testkit.RowsWithSep("|", ""+ + "thash CREATE TABLE `thash` (\n"+ + " `id` bigint(20) unsigned NOT NULL,\n"+ + " `data` varchar(255) DEFAULT NULL,\n"+ + " PRIMARY KEY (`id`) /*T![clustered_index] CLUSTERED */\n"+ + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin\n"+ + "PARTITION BY HASH (`id`)\n"+ + "(PARTITION `pEven` COMMENT 'Even ids',\n"+ + " PARTITION `pOdd` COMMENT 'Odd ids')", + )) + // empty edge case + tk.MustExec("drop table if exists `thash`") + tk.MustExec("CREATE TABLE `thash` (\n `id` bigint unsigned NOT NULL,\n `data` varchar(255) DEFAULT NULL,\n PRIMARY KEY (`id`)\n)\nPARTITION BY HASH (`id`);") + tk.MustQuery("show create table `thash`").Check(testkit.RowsWithSep("|", ""+ + "thash CREATE TABLE `thash` (\n"+ + " `id` bigint(20) unsigned NOT NULL,\n"+ + " `data` varchar(255) DEFAULT NULL,\n"+ + " PRIMARY KEY (`id`) /*T![clustered_index] CLUSTERED */\n"+ + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin\n"+ + "PARTITION BY HASH (`id`) PARTITIONS 1", + )) + + // default value escape character '\\' display case + tk.MustExec("drop table if exists t;") + tk.MustExec("create table t(a int primary key, b varchar(20) default '\\\\');") + tk.MustQuery("show create table t;").Check(testkit.RowsWithSep("|", + ""+ + "t CREATE TABLE `t` (\n"+ + " `a` int(11) NOT NULL,\n"+ + " `b` varchar(20) DEFAULT '\\\\',\n"+ + " PRIMARY KEY (`a`) /*T![clustered_index] CLUSTERED */\n"+ + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin")) } -func TestIssue11165(t *testing.T) { +func TestShowCreateTablePlacement(t *testing.T) { store, clean := testkit.CreateMockStore(t) defer clean() tk := testkit.NewTestKit(t, store) - tk.MustExec("CREATE ROLE 'r_manager';") - tk.MustExec("CREATE USER 'manager'@'localhost';") - tk.MustExec("GRANT 'r_manager' TO 'manager'@'localhost';") + tk.MustExec("use test") + defer tk.MustExec(`DROP TABLE IF EXISTS t`) + + // case for policy + tk.MustExec(`DROP TABLE IF EXISTS t`) + tk.MustExec("create placement policy x " + + "FOLLOWERS=2 " + + "CONSTRAINTS=\"[+disk=ssd]\" ") + defer tk.MustExec(`DROP PLACEMENT POLICY IF EXISTS x`) + tk.MustExec("create table t(a int)" + + "PLACEMENT POLICY=\"x\"") + tk.MustQuery(`show create table t`).Check(testkit.RowsWithSep("|", + "t CREATE TABLE `t` (\n"+ + " `a` int(11) DEFAULT NULL\n"+ + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin "+ + "/*T![placement] PLACEMENT POLICY=`x` */", + )) + + // case for policy with quotes + tk.MustExec(`DROP TABLE IF EXISTS t`) + tk.MustExec("create table t(a int)" + + "/*T![placement] PLACEMENT POLICY=\"x\" */") + tk.MustQuery(`show create table t`).Check(testkit.RowsWithSep("|", + "t CREATE TABLE `t` (\n"+ + " `a` int(11) DEFAULT NULL\n"+ + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin "+ + "/*T![placement] PLACEMENT POLICY=`x` */", + )) + + // Partitioned tables + tk.MustExec(`DROP TABLE IF EXISTS t`) + tk.MustExec("set @old_list_part = @@tidb_enable_list_partition") + defer tk.MustExec("set @@tidb_enable_list_partition = @old_list_part") + tk.MustExec("set tidb_enable_list_partition = 1") + tk.MustExec("create table t(a int, b varchar(255))" + + "/*T![placement] PLACEMENT POLICY=\"x\" */" + + "PARTITION BY LIST (a)\n" + + "(PARTITION pLow VALUES in (1,2,3,5,8) COMMENT 'a comment' placement policy 'x'," + + " PARTITION pMid VALUES in (9) COMMENT 'another comment'," + + "partition pMax values IN (10,11,12))") + tk.MustQuery(`show create table t`).Check(testkit.RowsWithSep("|", ""+ + "t CREATE TABLE `t` (\n"+ + " `a` int(11) DEFAULT NULL,\n"+ + " `b` varchar(255) DEFAULT NULL\n"+ + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin /*T![placement] PLACEMENT POLICY=`x` */\n"+ + "PARTITION BY LIST (`a`)\n"+ + "(PARTITION `pLow` VALUES IN (1,2,3,5,8) COMMENT 'a comment' /*T![placement] PLACEMENT POLICY=`x` */,\n"+ + " PARTITION `pMid` VALUES IN (9) COMMENT 'another comment',\n"+ + " PARTITION `pMax` VALUES IN (10,11,12))", + )) + + tk.MustExec(`DROP TABLE IF EXISTS t`) + tk.MustExec("create table t(a int, b varchar(255))" + + "PARTITION BY LIST COLUMNS (b)\n" + + "(PARTITION pLow VALUES in ('1','2','3','5','8') COMMENT 'a comment' placement policy 'x'," + + "partition pMax values IN ('10','11','12'))") + tk.MustQuery(`show create table t`).Check(testkit.RowsWithSep("|", ""+ + "t CREATE TABLE `t` (\n"+ + " `a` int(11) DEFAULT NULL,\n"+ + " `b` varchar(255) DEFAULT NULL\n"+ + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin\n"+ + "PARTITION BY LIST COLUMNS(`b`)\n"+ + "(PARTITION `pLow` VALUES IN ('1','2','3','5','8') COMMENT 'a comment' /*T![placement] PLACEMENT POLICY=`x` */,\n"+ + " PARTITION `pMax` VALUES IN ('10','11','12'))", + )) + + tk.MustExec(`DROP TABLE IF EXISTS t`) + tk.MustExec("create table t(a int, b varchar(255))" + + "PARTITION BY LIST COLUMNS (a,b)\n" + + "(PARTITION pLow VALUES in ((1,'1'),(2,'2'),(3,'3'),(5,'5'),(8,'8')) COMMENT 'a comment' placement policy 'x'," + + "partition pMax values IN ((10,'10'),(11,'11'),(12,'12')))") + tk.MustQuery(`show create table t`).Check(testkit.RowsWithSep("|", ""+ + "t CREATE TABLE `t` (\n"+ + " `a` int(11) DEFAULT NULL,\n"+ + " `b` varchar(255) DEFAULT NULL\n"+ + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin\n"+ + "PARTITION BY LIST COLUMNS(`a`,`b`)\n"+ + "(PARTITION `pLow` VALUES IN ((1,'1'),(2,'2'),(3,'3'),(5,'5'),(8,'8')) COMMENT 'a comment' /*T![placement] PLACEMENT POLICY=`x` */,\n"+ + " PARTITION `pMax` VALUES IN ((10,'10'),(11,'11'),(12,'12')))", + )) + + tk.MustExec(`DROP TABLE IF EXISTS t`) + tk.MustExec("create table t(a int, b varchar(255))" + + "PARTITION BY RANGE (a)\n" + + "(PARTITION pLow VALUES less than (1000000) COMMENT 'a comment' placement policy 'x'," + + "partition pMax values LESS THAN (MAXVALUE))") + tk.MustQuery(`show create table t`).Check(testkit.RowsWithSep("|", ""+ + "t CREATE TABLE `t` (\n"+ + " `a` int(11) DEFAULT NULL,\n"+ + " `b` varchar(255) DEFAULT NULL\n"+ + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin\n"+ + "PARTITION BY RANGE (`a`)\n"+ + "(PARTITION `pLow` VALUES LESS THAN (1000000) COMMENT 'a comment' /*T![placement] PLACEMENT POLICY=`x` */,\n"+ + " PARTITION `pMax` VALUES LESS THAN (MAXVALUE))", + )) + + tk.MustExec(`DROP TABLE IF EXISTS t`) + tk.MustExec("create table t(a int, b varchar(255))" + + "PARTITION BY RANGE COLUMNS (b)\n" + + "(PARTITION pLow VALUES less than ('1000000') COMMENT 'a comment' placement policy 'x'," + + "partition pMax values LESS THAN (MAXVALUE))") + tk.MustQuery(`show create table t`).Check(testkit.RowsWithSep("|", ""+ + "t CREATE TABLE `t` (\n"+ + " `a` int(11) DEFAULT NULL,\n"+ + " `b` varchar(255) DEFAULT NULL\n"+ + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin\n"+ + "PARTITION BY RANGE COLUMNS(`b`)\n"+ + "(PARTITION `pLow` VALUES LESS THAN ('1000000') COMMENT 'a comment' /*T![placement] PLACEMENT POLICY=`x` */,\n"+ + " PARTITION `pMax` VALUES LESS THAN (MAXVALUE))", + )) + + tk.MustExec(`DROP TABLE IF EXISTS t`) + // RANGE COLUMNS with multiple columns is not supported! + tk.MustExec("create table t(a int, b varchar(255))" + + "/*T![placement] PLACEMENT POLICY=\"x\" */" + + "PARTITION BY RANGE COLUMNS (a,b)\n" + + "(PARTITION pLow VALUES less than (1000000,'1000000') COMMENT 'a comment' placement policy 'x'," + + " PARTITION pMidLow VALUES less than (1000000,MAXVALUE) COMMENT 'another comment' placement policy 'x'," + + " PARTITION pMadMax VALUES less than (MAXVALUE,'1000000') COMMENT ='Not a comment' placement policy 'x'," + + "partition pMax values LESS THAN (MAXVALUE, MAXVALUE))") + tk.MustQuery("show warnings").Check(testkit.Rows("Warning 8200 Unsupported partition type RANGE, treat as normal table")) + tk.MustQuery(`show create table t`).Check(testkit.RowsWithSep("|", ""+ + "t CREATE TABLE `t` (\n"+ + " `a` int(11) DEFAULT NULL,\n"+ + " `b` varchar(255) DEFAULT NULL\n"+ + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin /*T![placement] PLACEMENT POLICY=`x` */", + )) + + tk.MustExec(`DROP TABLE IF EXISTS t`) + tk.MustExec("create table t(a int, b varchar(255))" + + "/*T![placement] PLACEMENT POLICY=\"x\" */" + + "PARTITION BY HASH (a) PARTITIONS 2") + tk.MustQuery(`show create table t`).Check(testkit.RowsWithSep("|", ""+ + "t CREATE TABLE `t` (\n"+ + " `a` int(11) DEFAULT NULL,\n"+ + " `b` varchar(255) DEFAULT NULL\n"+ + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin /*T![placement] PLACEMENT POLICY=`x` */\n"+ + "PARTITION BY HASH (`a`) PARTITIONS 2", + )) - require.True(t, tk.Session().Auth(&auth.UserIdentity{Username: "manager", Hostname: "localhost", AuthUsername: "manager", AuthHostname: "localhost"}, nil, nil)) - tk.MustExec("SET DEFAULT ROLE ALL TO 'manager'@'localhost';") - tk.MustExec("SET DEFAULT ROLE NONE TO 'manager'@'localhost';") - tk.MustExec("SET DEFAULT ROLE 'r_manager' TO 'manager'@'localhost';") + tk.MustExec(`DROP TABLE IF EXISTS t`) + tk.MustExec("create table t(a int, b varchar(255))" + + "PARTITION BY HASH (a)\n" + + "(PARTITION pLow COMMENT 'a comment' placement policy 'x'," + + "partition pMax)") + tk.MustQuery(`show create table t`).Check(testkit.RowsWithSep("|", ""+ + "t CREATE TABLE `t` (\n"+ + " `a` int(11) DEFAULT NULL,\n"+ + " `b` varchar(255) DEFAULT NULL\n"+ + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin\n"+ + "PARTITION BY HASH (`a`)\n"+ + "(PARTITION `pLow` COMMENT 'a comment' /*T![placement] PLACEMENT POLICY=`x` */,\n"+ + " PARTITION `pMax`)", + )) + tk.MustExec(`DROP TABLE t`) } -// TestShow2 is moved from session_test -func TestShow2(t *testing.T) { - store, dom, clean := testkit.CreateMockStoreAndDomain(t) +func TestShowVisibility(t *testing.T) { + store, clean := testkit.CreateMockStore(t) defer clean() tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") + tk.MustExec("create database showdatabase") + tk.MustExec("use showdatabase") + tk.MustExec("create table t1 (id int)") + tk.MustExec("create table t2 (id int)") + tk.MustExec(`create user 'show'@'%'`) - tk.MustExec("set global autocommit=0") tk1 := testkit.NewTestKit(t, store) - tk1.MustQuery("show global variables where variable_name = 'autocommit'").Check(testkit.Rows("autocommit OFF")) - tk.MustExec("set global autocommit = 1") - tk2 := testkit.NewTestKit(t, store) - tk2.MustQuery("show global variables where variable_name = 'autocommit'").Check(testkit.Rows("autocommit ON")) - - // TODO: Specifying the charset for national char/varchar should not be supported. - tk.MustExec("drop table if exists test_full_column") - tk.MustExec(`create table test_full_column( - c_int int, - c_float float, - c_bit bit, - c_bool bool, - c_char char(1) charset ascii collate ascii_bin, - c_nchar national char(1) charset ascii collate ascii_bin, - c_binary binary, - c_varchar varchar(1) charset ascii collate ascii_bin, - c_varchar_default varchar(20) charset ascii collate ascii_bin default 'cUrrent_tImestamp', - c_nvarchar national varchar(1) charset ascii collate ascii_bin, - c_varbinary varbinary(1), - c_year year, - c_date date, - c_time time, - c_datetime datetime, - c_datetime_default datetime default current_timestamp, - c_datetime_default_2 datetime(2) default current_timestamp(2), - c_timestamp timestamp, - c_timestamp_default timestamp default current_timestamp, - c_timestamp_default_3 timestamp(3) default current_timestamp(3), - c_timestamp_default_4 timestamp(3) default current_timestamp(3) on update current_timestamp(3), - c_blob blob, - c_tinyblob tinyblob, - c_mediumblob mediumblob, - c_longblob longblob, - c_text text charset ascii collate ascii_bin, - c_tinytext tinytext charset ascii collate ascii_bin, - c_mediumtext mediumtext charset ascii collate ascii_bin, - c_longtext longtext charset ascii collate ascii_bin, - c_json json, - c_enum enum('1') charset ascii collate ascii_bin, - c_set set('1') charset ascii collate ascii_bin - );`) - - tk.MustQuery(`show full columns from test_full_column`).Check(testkit.Rows( - "" + - "c_int int(11) YES select,insert,update,references ]\n" + - "[c_float float YES select,insert,update,references ]\n" + - "[c_bit bit(1) YES select,insert,update,references ]\n" + - "[c_bool tinyint(1) YES select,insert,update,references ]\n" + - "[c_char char(1) ascii_bin YES select,insert,update,references ]\n" + - "[c_nchar char(1) ascii_bin YES select,insert,update,references ]\n" + - "[c_binary binary(1) YES select,insert,update,references ]\n" + - "[c_varchar varchar(1) ascii_bin YES select,insert,update,references ]\n" + - "[c_varchar_default varchar(20) ascii_bin YES cUrrent_tImestamp select,insert,update,references ]\n" + - "[c_nvarchar varchar(1) ascii_bin YES select,insert,update,references ]\n" + - "[c_varbinary varbinary(1) YES select,insert,update,references ]\n" + - "[c_year year(4) YES select,insert,update,references ]\n" + - "[c_date date YES select,insert,update,references ]\n" + - "[c_time time YES select,insert,update,references ]\n" + - "[c_datetime datetime YES select,insert,update,references ]\n" + - "[c_datetime_default datetime YES CURRENT_TIMESTAMP select,insert,update,references ]\n" + - "[c_datetime_default_2 datetime(2) YES CURRENT_TIMESTAMP(2) select,insert,update,references ]\n" + - "[c_timestamp timestamp YES select,insert,update,references ]\n" + - "[c_timestamp_default timestamp YES CURRENT_TIMESTAMP select,insert,update,references ]\n" + - "[c_timestamp_default_3 timestamp(3) YES CURRENT_TIMESTAMP(3) select,insert,update,references ]\n" + - "[c_timestamp_default_4 timestamp(3) YES CURRENT_TIMESTAMP(3) DEFAULT_GENERATED on update CURRENT_TIMESTAMP(3) select,insert,update,references ]\n" + - "[c_blob blob YES select,insert,update,references ]\n" + - "[c_tinyblob tinyblob YES select,insert,update,references ]\n" + - "[c_mediumblob mediumblob YES select,insert,update,references ]\n" + - "[c_longblob longblob YES select,insert,update,references ]\n" + - "[c_text text ascii_bin YES select,insert,update,references ]\n" + - "[c_tinytext tinytext ascii_bin YES select,insert,update,references ]\n" + - "[c_mediumtext mediumtext ascii_bin YES select,insert,update,references ]\n" + - "[c_longtext longtext ascii_bin YES select,insert,update,references ]\n" + - "[c_json json YES select,insert,update,references ]\n" + - "[c_enum enum('1') ascii_bin YES select,insert,update,references ]\n" + - "[c_set set('1') ascii_bin YES select,insert,update,references ")) - - tk.MustExec("drop table if exists test_full_column") - - tk.MustExec("drop table if exists t") - tk.MustExec(`create table if not exists t (c int) comment '注释'`) - tk.MustExec("create or replace definer='root'@'localhost' view v as select * from t") - tk.MustQuery(`show columns from t`).Check(testkit.RowsWithSep(",", "c,int(11),YES,,,")) - tk.MustQuery(`describe t`).Check(testkit.RowsWithSep(",", "c,int(11),YES,,,")) - tk.MustQuery(`show columns from v`).Check(testkit.RowsWithSep(",", "c,int(11),YES,,,")) - tk.MustQuery(`describe v`).Check(testkit.RowsWithSep(",", "c,int(11),YES,,,")) - tk.MustQuery("show collation where Charset = 'utf8' and Collation = 'utf8_bin'").Check(testkit.RowsWithSep(",", "utf8_bin,utf8,83,Yes,Yes,1")) - tk.MustExec(`drop sequence if exists seq`) - tk.MustExec(`create sequence seq`) - tk.MustQuery("show tables").Check(testkit.Rows("seq", "t", "v")) - tk.MustQuery("show full tables").Check(testkit.Rows("seq SEQUENCE", "t BASE TABLE", "v VIEW")) - - // Bug 19427 - tk.MustQuery("SHOW FULL TABLES in INFORMATION_SCHEMA like 'VIEWS'").Check(testkit.Rows("VIEWS SYSTEM VIEW")) - tk.MustQuery("SHOW FULL TABLES in information_schema like 'VIEWS'").Check(testkit.Rows("VIEWS SYSTEM VIEW")) - tk.MustQuery("SHOW FULL TABLES in metrics_schema like 'uptime'").Check(testkit.Rows("uptime SYSTEM VIEW")) + require.True(t, tk1.Session().Auth(&auth.UserIdentity{Username: "show", Hostname: "%"}, nil, nil)) - is := dom.InfoSchema() - tblInfo, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) - require.NoError(t, err) - createTime := model.TSConvert2Time(tblInfo.Meta().UpdateTS).Format("2006-01-02 15:04:05") + // No ShowDatabases privilege, this user would see nothing except INFORMATION_SCHEMA. + tk.MustQuery("show databases").Check(testkit.Rows("INFORMATION_SCHEMA")) - // The Hostname is the actual host - tk.Session().Auth(&auth.UserIdentity{Username: "root", Hostname: "192.168.0.1", AuthUsername: "root", AuthHostname: "%"}, nil, []byte("012345678901234567890")) + // After grant, the user can see the database. + tk.MustExec(`grant select on showdatabase.t1 to 'show'@'%'`) + tk1.MustQuery("show databases").Check(testkit.Rows("INFORMATION_SCHEMA", "showdatabase")) - r := tk.MustQuery("show table status from test like 't'") - r.Check(testkit.Rows(fmt.Sprintf("t InnoDB 10 Compact 0 0 0 0 0 0 %s utf8mb4_bin 注释", createTime))) + // The user can see t1 but not t2. + tk1.MustExec("use showdatabase") + tk1.MustQuery("show tables").Check(testkit.Rows("t1")) - tk.MustQuery("show databases like 'test'").Check(testkit.Rows("test")) + // After revoke, show database result should be just except INFORMATION_SCHEMA. + tk.MustExec(`revoke select on showdatabase.t1 from 'show'@'%'`) + tk1.MustQuery("show databases").Check(testkit.Rows("INFORMATION_SCHEMA")) - tk.MustExec(`grant all on *.* to 'root'@'%'`) - tk.MustQuery("show grants").Check(testkit.Rows(`GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION`)) + // Grant any global privilege would make show databases available. + tk.MustExec(`grant CREATE on *.* to 'show'@'%'`) + rows := tk1.MustQuery("show databases").Rows() + require.GreaterOrEqual(t, len(rows), 2) - tk.MustQuery("show grants for current_user()").Check(testkit.Rows(`GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION`)) - tk.MustQuery("show grants for current_user").Check(testkit.Rows(`GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION`)) + tk.MustExec(`drop user 'show'@'%'`) + tk.MustExec("drop database showdatabase") } -func TestShowCreateUser(t *testing.T) { +func TestShowDatabasesInfoSchemaFirst(t *testing.T) { store, clean := testkit.CreateMockStore(t) defer clean() tk := testkit.NewTestKit(t, store) - // Create a new user. - tk.MustExec(`CREATE USER 'test_show_create_user'@'%' IDENTIFIED BY 'root';`) - tk.MustQuery("show create user 'test_show_create_user'@'%'"). - Check(testkit.Rows(`CREATE USER 'test_show_create_user'@'%' IDENTIFIED WITH 'mysql_native_password' AS '*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK`)) - - tk.MustExec(`CREATE USER 'test_show_create_user'@'localhost' IDENTIFIED BY 'test';`) - tk.MustQuery("show create user 'test_show_create_user'@'localhost';"). - Check(testkit.Rows(`CREATE USER 'test_show_create_user'@'localhost' IDENTIFIED WITH 'mysql_native_password' AS '*94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK`)) - - // Case: the user exists but the host portion doesn't match - err := tk.QueryToErr("show create user 'test_show_create_user'@'asdf';") - require.Equal(t, executor.ErrCannotUser.GenWithStackByArgs("SHOW CREATE USER", "'test_show_create_user'@'asdf'").Error(), err.Error()) - - // Case: a user that doesn't exist - err = tk.QueryToErr("show create user 'aaa'@'localhost';") - require.Equal(t, executor.ErrCannotUser.GenWithStackByArgs("SHOW CREATE USER", "'aaa'@'localhost'").Error(), err.Error()) - - tk.Session().Auth(&auth.UserIdentity{Username: "root", Hostname: "127.0.0.1", AuthUsername: "root", AuthHostname: "%"}, nil, nil) - tk.MustQuery("show create user current_user"). - Check(testkit.Rows("CREATE USER 'root'@'127.0.0.1' IDENTIFIED WITH 'mysql_native_password' AS '' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK")) - - tk.MustQuery("show create user current_user()"). - Check(testkit.Rows("CREATE USER 'root'@'127.0.0.1' IDENTIFIED WITH 'mysql_native_password' AS '' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK")) + tk.MustQuery("show databases").Check(testkit.Rows("INFORMATION_SCHEMA")) + tk.MustExec(`create user 'show'@'%'`) - tk.MustExec("create user 'check_priv'") + tk.MustExec(`create database AAAA`) + tk.MustExec(`create database BBBB`) + tk.MustExec(`grant select on AAAA.* to 'show'@'%'`) + tk.MustExec(`grant select on BBBB.* to 'show'@'%'`) - // "show create user" for other user requires the SELECT privilege on mysql database. tk1 := testkit.NewTestKit(t, store) - tk1.MustExec("use mysql") - succ := tk1.Session().Auth(&auth.UserIdentity{Username: "check_priv", Hostname: "127.0.0.1", AuthUsername: "test_show", AuthHostname: "asdf"}, nil, nil) - require.True(t, succ) - err = tk1.QueryToErr("show create user 'root'@'%'") - require.Error(t, err) - - // "show create user" for current user doesn't check privileges. - tk1.MustQuery("show create user current_user"). - Check(testkit.Rows("CREATE USER 'check_priv'@'127.0.0.1' IDENTIFIED WITH 'mysql_native_password' AS '' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK")) + require.True(t, tk1.Session().Auth(&auth.UserIdentity{Username: "show", Hostname: "%"}, nil, nil)) + tk1.MustQuery("show databases").Check(testkit.Rows("INFORMATION_SCHEMA", "AAAA", "BBBB")) - // Creating users with `IDENTIFIED WITH 'caching_sha2_password'` - tk.MustExec("CREATE USER 'sha_test'@'%' IDENTIFIED WITH 'caching_sha2_password' BY 'temp_passwd'") + tk.MustExec(`drop user 'show'@'%'`) + tk.MustExec(`drop database AAAA`) + tk.MustExec(`drop database BBBB`) +} - // Compare only the start of the output as the salt changes every time. - rows := tk.MustQuery("SHOW CREATE USER 'sha_test'@'%'") - require.Equal(t, "CREATE USER 'sha_test'@'%' IDENTIFIED WITH 'caching_sha2_password' AS '$A$005$", rows.Rows()[0][0].(string)[:78]) - // Creating users with `IDENTIFIED WITH 'auth-socket'` - tk.MustExec("CREATE USER 'sock'@'%' IDENTIFIED WITH 'auth_socket'") +func TestShowWarnings(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + testSQL := `create table if not exists show_warnings (a int)` + tk.MustExec(testSQL) + tk.MustExec("set @@sql_mode=''") + tk.MustExec("insert show_warnings values ('a')") + require.Equal(t, uint16(1), tk.Session().GetSessionVars().StmtCtx.WarningCount()) + tk.MustQuery("show warnings").Check(testkit.RowsWithSep("|", "Warning|1292|Truncated incorrect DOUBLE value: 'a'")) + require.Equal(t, uint16(0), tk.Session().GetSessionVars().StmtCtx.WarningCount()) + tk.MustQuery("show warnings").Check(testkit.RowsWithSep("|", "Warning|1292|Truncated incorrect DOUBLE value: 'a'")) + require.Equal(t, uint16(0), tk.Session().GetSessionVars().StmtCtx.WarningCount()) - // Compare only the start of the output as the salt changes every time. - rows = tk.MustQuery("SHOW CREATE USER 'sock'@'%'") - require.Equal(t, "CREATE USER 'sock'@'%' IDENTIFIED WITH 'auth_socket' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK", rows.Rows()[0][0].(string)) - tk.MustExec("CREATE USER 'sock2'@'%' IDENTIFIED WITH 'auth_socket' AS 'sock3'") + // Test Warning level 'Error' + testSQL = `create table show_warnings (a int)` + _, _ = tk.Exec(testSQL) + // FIXME: Table 'test.show_warnings' already exists + require.Equal(t, uint16(1), tk.Session().GetSessionVars().StmtCtx.WarningCount()) + tk.MustQuery("show warnings").Check(testkit.RowsWithSep("|", "Error|1050|Table 'test.show_warnings' already exists")) + tk.MustQuery("select @@error_count").Check(testkit.RowsWithSep("|", "1")) - // Compare only the start of the output as the salt changes every time. - rows = tk.MustQuery("SHOW CREATE USER 'sock2'@'%'") - require.Equal(t, "CREATE USER 'sock2'@'%' IDENTIFIED WITH 'auth_socket' AS 'sock3' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK", rows.Rows()[0][0].(string)) + // Test Warning level 'Note' + testSQL = `create table show_warnings_2 (a int)` + tk.MustExec(testSQL) + testSQL = `create table if not exists show_warnings_2 like show_warnings` + _, err := tk.Exec(testSQL) + require.NoError(t, err) + require.Equal(t, uint16(1), tk.Session().GetSessionVars().StmtCtx.WarningCount()) + tk.MustQuery("show warnings").Check(testkit.RowsWithSep("|", "Note|1050|Table 'test.show_warnings_2' already exists")) + tk.MustQuery("select @@warning_count").Check(testkit.RowsWithSep("|", "1")) + tk.MustQuery("select @@warning_count").Check(testkit.RowsWithSep("|", "0")) } -func TestUnprivilegedShow(t *testing.T) { - store, dom, clean := testkit.CreateMockStoreAndDomain(t) +func TestShowErrors(t *testing.T) { + store, clean := testkit.CreateMockStore(t) defer clean() tk := testkit.NewTestKit(t, store) - tk.MustExec("CREATE DATABASE testshow") - tk.MustExec("USE testshow") - tk.MustExec("CREATE TABLE t1 (a int)") - tk.MustExec("CREATE TABLE t2 (a int)") - - tk.MustExec(`CREATE USER 'lowprivuser'`) // no grants - - tk.Session().Auth(&auth.UserIdentity{Username: "lowprivuser", Hostname: "192.168.0.1", AuthUsername: "lowprivuser", AuthHostname: "%"}, nil, []byte("012345678901234567890")) - rs, err := tk.Exec("SHOW TABLE STATUS FROM testshow") - require.NoError(t, err) - require.NotNil(t, rs) + tk.MustExec("use test") + testSQL := `create table if not exists show_errors (a int)` + tk.MustExec(testSQL) + testSQL = `create table show_errors (a int)` + // FIXME: 'test.show_errors' already exists + _, _ = tk.Exec(testSQL) - tk.Session().Auth(&auth.UserIdentity{Username: "root", Hostname: "192.168.0.1", AuthUsername: "root", AuthHostname: "%"}, nil, []byte("012345678901234567890")) - tk.MustExec("GRANT ALL ON testshow.t1 TO 'lowprivuser'") - tk.Session().Auth(&auth.UserIdentity{Username: "lowprivuser", Hostname: "192.168.0.1", AuthUsername: "lowprivuser", AuthHostname: "%"}, nil, []byte("012345678901234567890")) + tk.MustQuery("show errors").Check(testkit.RowsWithSep("|", "Error|1050|Table 'test.show_errors' already exists")) - is := dom.InfoSchema() - tblInfo, err := is.TableByName(model.NewCIStr("testshow"), model.NewCIStr("t1")) - require.NoError(t, err) - createTime := model.TSConvert2Time(tblInfo.Meta().UpdateTS).Format("2006-01-02 15:04:05") + // eliminate previous errors + tk.MustExec("select 1") + _, _ = tk.Exec("create invalid") + tk.MustQuery("show errors").Check(testkit.RowsWithSep("|", "Error|1064|You have an error in your SQL syntax; check the manual that corresponds to your TiDB version for the right syntax to use line 1 column 14 near \"invalid\" ")) +} - tk.MustQuery("show table status from testshow").Check(testkit.Rows(fmt.Sprintf("t1 InnoDB 10 Compact 0 0 0 0 0 0 %s utf8mb4_bin ", createTime))) +func TestShowWarningsForExprPushdown(t *testing.T) { + store, dom, clean := testkit.CreateMockStoreAndDomain(t) + defer clean() + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + testSQL := `create table if not exists show_warnings_expr_pushdown (a int, value date)` + tk.MustExec(testSQL) + // create tiflash replica + { + is := dom.InfoSchema() + db, exists := is.SchemaByName(model.NewCIStr("test")) + require.True(t, exists) + for _, tblInfo := range db.Tables { + if tblInfo.Name.L == "show_warnings_expr_pushdown" { + tblInfo.TiFlashReplica = &model.TiFlashReplicaInfo{ + Count: 1, + Available: true, + } + } + } + } + tk.MustExec("set tidb_allow_mpp=0") + tk.MustExec("explain select * from show_warnings_expr_pushdown t where md5(value) = '2020-01-01'") + require.Equal(t, uint16(1), tk.Session().GetSessionVars().StmtCtx.WarningCount()) + tk.MustQuery("show warnings").Check(testkit.RowsWithSep("|", "Warning|1105|Scalar function 'md5'(signature: MD5, return type: var_string(32)) is not supported to push down to tiflash now.")) + tk.MustExec("explain select max(md5(value)) from show_warnings_expr_pushdown group by a") + require.Equal(t, uint16(2), tk.Session().GetSessionVars().StmtCtx.WarningCount()) + tk.MustQuery("show warnings").Check(testkit.RowsWithSep("|", "Warning|1105|Scalar function 'md5'(signature: MD5, return type: var_string(32)) is not supported to push down to tiflash now.", "Warning|1105|Aggregation can not be pushed to tiflash because arguments of AggFunc `max` contains unsupported exprs")) + tk.MustExec("explain select max(a) from show_warnings_expr_pushdown group by md5(value)") + require.Equal(t, uint16(2), tk.Session().GetSessionVars().StmtCtx.WarningCount()) + tk.MustQuery("show warnings").Check(testkit.RowsWithSep("|", "Warning|1105|Scalar function 'md5'(signature: MD5, return type: var_string(32)) is not supported to push down to tiflash now.", "Warning|1105|Aggregation can not be pushed to tiflash because groupByItems contain unsupported exprs")) + tk.MustExec("set tidb_opt_distinct_agg_push_down=0") + tk.MustExec("explain select max(distinct a) from show_warnings_expr_pushdown group by value") + require.Equal(t, uint16(0), tk.Session().GetSessionVars().StmtCtx.WarningCount()) + // tk.MustQuery("show warnings").Check(testkit.RowsWithSep("|", "Warning|1105|Aggregation can not be pushed to storage layer in non-mpp mode because it contains agg function with distinct")) } -func TestCollation(t *testing.T) { +func TestShowGrantsPrivilege(t *testing.T) { store, clean := testkit.CreateMockStore(t) defer clean() tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - - rs, err := tk.Exec("show collation;") - require.NoError(t, err) - fields := rs.Fields() - require.Equal(t, mysql.TypeVarchar, fields[0].Column.GetType()) - require.Equal(t, mysql.TypeVarchar, fields[1].Column.GetType()) - require.Equal(t, mysql.TypeLonglong, fields[2].Column.GetType()) - require.Equal(t, mysql.TypeVarchar, fields[3].Column.GetType()) - require.Equal(t, mysql.TypeVarchar, fields[4].Column.GetType()) - require.Equal(t, mysql.TypeLonglong, fields[5].Column.GetType()) + tk.MustExec("create user show_grants") + tk.MustExec("show grants for show_grants") + tk1 := testkit.NewTestKit(t, store) + require.True(t, tk1.Session().Auth(&auth.UserIdentity{Username: "show_grants", Hostname: "%"}, nil, nil)) + err := tk1.QueryToErr("show grants for root") + require.EqualError(t, executor.ErrDBaccessDenied.GenWithStackByArgs("show_grants", "%", mysql.SystemDB), err.Error()) + // Test show grants for user with auth host name `%`. + tk2 := testkit.NewTestKit(t, store) + require.True(t, tk2.Session().Auth(&auth.UserIdentity{Username: "show_grants", Hostname: "127.0.0.1", AuthUsername: "show_grants", AuthHostname: "%"}, nil, nil)) + tk2.MustQuery("show grants") } -func TestShowTableStatus(t *testing.T) { +func TestShowStatsPrivilege(t *testing.T) { store, clean := testkit.CreateMockStore(t) defer clean() tk := testkit.NewTestKit(t, store) + tk.MustExec("create user show_stats") + tk1 := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec(`drop table if exists t;`) - tk.MustExec(`create table t(a bigint);`) + require.True(t, tk1.Session().Auth(&auth.UserIdentity{Username: "show_stats", Hostname: "%"}, nil, nil)) + e := "[planner:1142]SHOW command denied to user 'show_stats'@'%' for table" + err := tk1.ExecToErr("show stats_meta") + require.ErrorContains(t, err, e) + err = tk1.ExecToErr("SHOW STATS_BUCKETS") + require.ErrorContains(t, err, e) + err = tk1.ExecToErr("SHOW STATS_HISTOGRAMS") + require.ErrorContains(t, err, e) - tk.Session().Auth(&auth.UserIdentity{Username: "root", Hostname: "192.168.0.1", AuthUsername: "root", AuthHostname: "%"}, nil, []byte("012345678901234567890")) + eqErr := plannercore.ErrDBaccessDenied.GenWithStackByArgs("show_stats", "%", mysql.SystemDB) + err = tk1.ExecToErr("SHOW STATS_HEALTHY") + require.EqualError(t, err, eqErr.Error()) + tk.MustExec("grant select on mysql.* to show_stats") + tk1.MustExec("show stats_meta") + tk1.MustExec("SHOW STATS_BUCKETS") + tk1.MustExec("SHOW STATS_HEALTHY") + tk1.MustExec("SHOW STATS_HISTOGRAMS") - // It's not easy to test the result contents because every time the test runs, "Create_time" changed. - tk.MustExec("show table status;") - rs, err := tk.Exec("show table status;") - require.NoError(t, err) - require.NotNil(t, rs) - rows, err := session.GetRows4Test(context.Background(), tk.Session(), rs) - require.NoError(t, err) - err = rs.Close() - require.NoError(t, err) - require.Equal(t, 1, len(rows)) + tk.MustExec("create user a@'%' identified by '';") + require.True(t, tk1.Session().Auth(&auth.UserIdentity{Username: "a", Hostname: "%"}, nil, nil)) + tk.MustExec("grant select on mysql.stats_meta to a@'%';") + tk.MustExec("grant select on mysql.stats_buckets to a@'%';") + tk.MustExec("grant select on mysql.stats_histograms to a@'%';") + tk1.MustExec("show stats_meta") + tk1.MustExec("SHOW STATS_BUCKETS") + tk1.MustExec("SHOW STATS_HISTOGRAMS") - for i := range rows { - row := rows[i] - require.Equal(t, "t", row.GetString(0)) - require.Equal(t, "InnoDB", row.GetString(1)) - require.Equal(t, int64(10), row.GetInt64(2)) - require.Equal(t, "Compact", row.GetString(3)) - } - tk.MustExec(`drop table if exists tp;`) - tk.MustExec(`create table tp (a int) - partition by range(a) - ( partition p0 values less than (10), - partition p1 values less than (20), - partition p2 values less than (maxvalue) - );`) - rs, err = tk.Exec("show table status from test like 'tp';") - require.NoError(t, err) - rows, err = session.GetRows4Test(context.Background(), tk.Session(), rs) - require.NoError(t, err) - require.Equal(t, "partitioned", rows[0].GetString(16)) +} - tk.MustExec("create database UPPER_CASE") - tk.MustExec("use UPPER_CASE") - tk.MustExec("create table t (i int)") - rs, err = tk.Exec("show table status") - require.NoError(t, err) - require.NotNil(t, rs) - rows, err = session.GetRows4Test(context.Background(), tk.Session(), rs) - require.NoError(t, err) - err = rs.Close() - require.NoError(t, err) - require.Equal(t, 1, len(rows)) +func TestIssue18878(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + tk := testkit.NewTestKit(t, store) + require.True(t, tk.Session().Auth(&auth.UserIdentity{Username: "root", Hostname: "127.0.0.1", AuthHostname: "%"}, nil, nil)) + tk.MustQuery("select user()").Check(testkit.Rows("root@127.0.0.1")) + tk.MustQuery("show grants") + tk.MustQuery("select user()").Check(testkit.Rows("root@127.0.0.1")) + err := tk.QueryToErr("show grants for root@127.0.0.1") + require.Equal(t, privileges.ErrNonexistingGrant.FastGenByArgs("root", "127.0.0.1").Error(), err.Error()) + err = tk.QueryToErr("show grants for root@localhost") + require.Equal(t, privileges.ErrNonexistingGrant.FastGenByArgs("root", "localhost").Error(), err.Error()) + err = tk.QueryToErr("show grants for root@1.1.1.1") + require.Equal(t, privileges.ErrNonexistingGrant.FastGenByArgs("root", "1.1.1.1").Error(), err.Error()) + tk.MustExec("create user `show_grants`@`127.0.%`") + err = tk.QueryToErr("show grants for `show_grants`@`127.0.0.1`") + require.Equal(t, privileges.ErrNonexistingGrant.FastGenByArgs("show_grants", "127.0.0.1").Error(), err.Error()) + tk.MustQuery("show grants for `show_grants`@`127.0.%`") +} - tk.MustExec("use upper_case") - rs, err = tk.Exec("show table status") - require.NoError(t, err) - require.NotNil(t, rs) - rows, err = session.GetRows4Test(context.Background(), tk.Session(), rs) - require.NoError(t, err) - err = rs.Close() - require.NoError(t, err) - require.Equal(t, 1, len(rows)) +func TestIssue17794(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + tk := testkit.NewTestKit(t, store) + tk.MustExec("CREATE USER 'root'@'8.8.%'") + require.True(t, tk.Session().Auth(&auth.UserIdentity{Username: "root", Hostname: "9.9.9.9", AuthHostname: "%"}, nil, nil)) - tk.MustExec("drop database UPPER_CASE") + tk1 := testkit.NewTestKit(t, store) + require.True(t, tk1.Session().Auth(&auth.UserIdentity{Username: "root", Hostname: "8.8.8.8", AuthHostname: "8.8.%"}, nil, nil)) + tk.MustQuery("show grants").Check(testkit.Rows("GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION")) + tk1.MustQuery("show grants").Check(testkit.Rows("GRANT USAGE ON *.* TO 'root'@'8.8.%'")) } -func TestShowSlow(t *testing.T) { +func TestIssue3641(t *testing.T) { store, clean := testkit.CreateMockStore(t) defer clean() tk := testkit.NewTestKit(t, store) - // The test result is volatile, because - // 1. Slow queries is stored in domain, which may be affected by other tests. - // 2. Collecting slow queries is a asynchronous process, check immediately may not get the expected result. - // 3. Make slow query like "select sleep(1)" would slow the CI. - // So, we just cover the code but do not check the result. - tk.MustQuery(`admin show slow recent 3`) - tk.MustQuery(`admin show slow top 3`) - tk.MustQuery(`admin show slow top internal 3`) - tk.MustQuery(`admin show slow top all 3`) + _, err := tk.Exec("show tables;") + require.Equal(t, plannercore.ErrNoDB.Error(), err.Error()) + _, err = tk.Exec("show table status;") + require.Equal(t, plannercore.ErrNoDB.Error(), err.Error()) } -func TestShowOpenTables(t *testing.T) { +func TestIssue10549(t *testing.T) { store, clean := testkit.CreateMockStore(t) defer clean() tk := testkit.NewTestKit(t, store) - tk.MustQuery("show open tables") - tk.MustQuery("show open tables in test") + tk.MustExec("CREATE DATABASE newdb;") + tk.MustExec("CREATE ROLE 'app_developer';") + tk.MustExec("GRANT ALL ON newdb.* TO 'app_developer';") + tk.MustExec("CREATE USER 'dev';") + tk.MustExec("GRANT 'app_developer' TO 'dev';") + tk.MustExec("SET DEFAULT ROLE app_developer TO 'dev';") + + require.True(t, tk.Session().Auth(&auth.UserIdentity{Username: "dev", Hostname: "%", AuthUsername: "dev", AuthHostname: "%"}, nil, nil)) + tk.MustQuery("SHOW DATABASES;").Check(testkit.Rows("INFORMATION_SCHEMA", "newdb")) + tk.MustQuery("SHOW GRANTS;").Check(testkit.Rows("GRANT USAGE ON *.* TO 'dev'@'%'", "GRANT ALL PRIVILEGES ON newdb.* TO 'dev'@'%'", "GRANT 'app_developer'@'%' TO 'dev'@'%'")) + tk.MustQuery("SHOW GRANTS FOR CURRENT_USER").Check(testkit.Rows("GRANT USAGE ON *.* TO 'dev'@'%'", "GRANT ALL PRIVILEGES ON newdb.* TO 'dev'@'%'", "GRANT 'app_developer'@'%' TO 'dev'@'%'")) + tk.MustQuery("SHOW GRANTS FOR dev").Check(testkit.Rows("GRANT USAGE ON *.* TO 'dev'@'%'", "GRANT 'app_developer'@'%' TO 'dev'@'%'")) } -func TestShowCreateViewDefiner(t *testing.T) { + +func TestIssue11165(t *testing.T) { store, clean := testkit.CreateMockStore(t) defer clean() tk := testkit.NewTestKit(t, store) - require.True(t, tk.Session().Auth(&auth.UserIdentity{Username: "root", Hostname: "%", AuthUsername: "root", AuthHostname: "%"}, nil, nil)) + tk.MustExec("CREATE ROLE 'r_manager';") + tk.MustExec("CREATE USER 'manager'@'localhost';") + tk.MustExec("GRANT 'r_manager' TO 'manager'@'localhost';") - tk.MustExec("use test") - tk.MustExec("create or replace view v1 as select 1") - tk.MustQuery("show create view v1").Check(testkit.RowsWithSep("|", "v1|CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`%` SQL SECURITY DEFINER VIEW `v1` (`1`) AS SELECT 1 AS `1`|utf8mb4|utf8mb4_bin")) - tk.MustExec("drop view v1") + require.True(t, tk.Session().Auth(&auth.UserIdentity{Username: "manager", Hostname: "localhost", AuthUsername: "manager", AuthHostname: "localhost"}, nil, nil)) + tk.MustExec("SET DEFAULT ROLE ALL TO 'manager'@'localhost';") + tk.MustExec("SET DEFAULT ROLE NONE TO 'manager'@'localhost';") + tk.MustExec("SET DEFAULT ROLE 'r_manager' TO 'manager'@'localhost';") } -func TestShowCreateTable(t *testing.T) { - store, clean := testkit.CreateMockStore(t) - defer clean() - tk := testkit.NewTestKit(t, store) +// TestShow2 is moved from session_test +func TestShow2(t *testing.T) { + store, dom, clean := testkit.CreateMockStoreAndDomain(t) + defer clean() + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("set global autocommit=0") + tk1 := testkit.NewTestKit(t, store) + tk1.MustQuery("show global variables where variable_name = 'autocommit'").Check(testkit.Rows("autocommit OFF")) + tk.MustExec("set global autocommit = 1") + tk2 := testkit.NewTestKit(t, store) + tk2.MustQuery("show global variables where variable_name = 'autocommit'").Check(testkit.Rows("autocommit ON")) + + // TODO: Specifying the charset for national char/varchar should not be supported. + tk.MustExec("drop table if exists test_full_column") + tk.MustExec(`create table test_full_column( + c_int int, + c_float float, + c_bit bit, + c_bool bool, + c_char char(1) charset ascii collate ascii_bin, + c_nchar national char(1) charset ascii collate ascii_bin, + c_binary binary, + c_varchar varchar(1) charset ascii collate ascii_bin, + c_varchar_default varchar(20) charset ascii collate ascii_bin default 'cUrrent_tImestamp', + c_nvarchar national varchar(1) charset ascii collate ascii_bin, + c_varbinary varbinary(1), + c_year year, + c_date date, + c_time time, + c_datetime datetime, + c_datetime_default datetime default current_timestamp, + c_datetime_default_2 datetime(2) default current_timestamp(2), + c_timestamp timestamp, + c_timestamp_default timestamp default current_timestamp, + c_timestamp_default_3 timestamp(3) default current_timestamp(3), + c_timestamp_default_4 timestamp(3) default current_timestamp(3) on update current_timestamp(3), + c_blob blob, + c_tinyblob tinyblob, + c_mediumblob mediumblob, + c_longblob longblob, + c_text text charset ascii collate ascii_bin, + c_tinytext tinytext charset ascii collate ascii_bin, + c_mediumtext mediumtext charset ascii collate ascii_bin, + c_longtext longtext charset ascii collate ascii_bin, + c_json json, + c_enum enum('1') charset ascii collate ascii_bin, + c_set set('1') charset ascii collate ascii_bin + );`) + + tk.MustQuery(`show full columns from test_full_column`).Check(testkit.Rows( + "" + + "c_int int(11) YES select,insert,update,references ]\n" + + "[c_float float YES select,insert,update,references ]\n" + + "[c_bit bit(1) YES select,insert,update,references ]\n" + + "[c_bool tinyint(1) YES select,insert,update,references ]\n" + + "[c_char char(1) ascii_bin YES select,insert,update,references ]\n" + + "[c_nchar char(1) ascii_bin YES select,insert,update,references ]\n" + + "[c_binary binary(1) YES select,insert,update,references ]\n" + + "[c_varchar varchar(1) ascii_bin YES select,insert,update,references ]\n" + + "[c_varchar_default varchar(20) ascii_bin YES cUrrent_tImestamp select,insert,update,references ]\n" + + "[c_nvarchar varchar(1) ascii_bin YES select,insert,update,references ]\n" + + "[c_varbinary varbinary(1) YES select,insert,update,references ]\n" + + "[c_year year(4) YES select,insert,update,references ]\n" + + "[c_date date YES select,insert,update,references ]\n" + + "[c_time time YES select,insert,update,references ]\n" + + "[c_datetime datetime YES select,insert,update,references ]\n" + + "[c_datetime_default datetime YES CURRENT_TIMESTAMP select,insert,update,references ]\n" + + "[c_datetime_default_2 datetime(2) YES CURRENT_TIMESTAMP(2) select,insert,update,references ]\n" + + "[c_timestamp timestamp YES select,insert,update,references ]\n" + + "[c_timestamp_default timestamp YES CURRENT_TIMESTAMP select,insert,update,references ]\n" + + "[c_timestamp_default_3 timestamp(3) YES CURRENT_TIMESTAMP(3) select,insert,update,references ]\n" + + "[c_timestamp_default_4 timestamp(3) YES CURRENT_TIMESTAMP(3) DEFAULT_GENERATED on update CURRENT_TIMESTAMP(3) select,insert,update,references ]\n" + + "[c_blob blob YES select,insert,update,references ]\n" + + "[c_tinyblob tinyblob YES select,insert,update,references ]\n" + + "[c_mediumblob mediumblob YES select,insert,update,references ]\n" + + "[c_longblob longblob YES select,insert,update,references ]\n" + + "[c_text text ascii_bin YES select,insert,update,references ]\n" + + "[c_tinytext tinytext ascii_bin YES select,insert,update,references ]\n" + + "[c_mediumtext mediumtext ascii_bin YES select,insert,update,references ]\n" + + "[c_longtext longtext ascii_bin YES select,insert,update,references ]\n" + + "[c_json json YES select,insert,update,references ]\n" + + "[c_enum enum('1') ascii_bin YES select,insert,update,references ]\n" + + "[c_set set('1') ascii_bin YES select,insert,update,references ")) - tk.MustExec("use test") - tk.MustExec("drop table if exists t1") - tk.MustExec("create table t1(a int,b int)") - tk.MustExec("drop view if exists v1") - tk.MustExec("create or replace definer=`root`@`127.0.0.1` view v1 as select * from t1") - tk.MustQuery("show create table v1").Check(testkit.RowsWithSep("|", "v1|CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`127.0.0.1` SQL SECURITY DEFINER VIEW `v1` (`a`, `b`) AS SELECT `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` FROM `test`.`t1`|utf8mb4|utf8mb4_bin")) - tk.MustQuery("show create view v1").Check(testkit.RowsWithSep("|", "v1|CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`127.0.0.1` SQL SECURITY DEFINER VIEW `v1` (`a`, `b`) AS SELECT `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` FROM `test`.`t1`|utf8mb4|utf8mb4_bin")) - tk.MustExec("drop view v1") - tk.MustExec("drop table t1") + tk.MustExec("drop table if exists test_full_column") - tk.MustExec("drop view if exists v") - tk.MustExec("create or replace definer=`root`@`127.0.0.1` view v as select JSON_MERGE('{}', '{}') as col;") - tk.MustQuery("show create view v").Check(testkit.RowsWithSep("|", "v|CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`127.0.0.1` SQL SECURITY DEFINER VIEW `v` (`col`) AS SELECT JSON_MERGE(_UTF8MB4'{}', _UTF8MB4'{}') AS `col`|utf8mb4|utf8mb4_bin")) - tk.MustExec("drop view if exists v") + tk.MustExec("drop table if exists t") + tk.MustExec(`create table if not exists t (c int) comment '注释'`) + tk.MustExec("create or replace definer='root'@'localhost' view v as select * from t") + tk.MustQuery(`show columns from t`).Check(testkit.RowsWithSep(",", "c,int(11),YES,,,")) + tk.MustQuery(`describe t`).Check(testkit.RowsWithSep(",", "c,int(11),YES,,,")) + tk.MustQuery(`show columns from v`).Check(testkit.RowsWithSep(",", "c,int(11),YES,,,")) + tk.MustQuery(`describe v`).Check(testkit.RowsWithSep(",", "c,int(11),YES,,,")) + tk.MustQuery("show collation where Charset = 'utf8' and Collation = 'utf8_bin'").Check(testkit.RowsWithSep(",", "utf8_bin,utf8,83,Yes,Yes,1")) + tk.MustExec(`drop sequence if exists seq`) + tk.MustExec(`create sequence seq`) + tk.MustQuery("show tables").Check(testkit.Rows("seq", "t", "v")) + tk.MustQuery("show full tables").Check(testkit.Rows("seq SEQUENCE", "t BASE TABLE", "v VIEW")) - tk.MustExec("drop table if exists t1") - tk.MustExec("create table t1(a int,b int)") - tk.MustExec("create or replace definer=`root`@`127.0.0.1` view v1 as select avg(a),t1.* from t1 group by a") - tk.MustQuery("show create view v1").Check(testkit.RowsWithSep("|", "v1|CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`127.0.0.1` SQL SECURITY DEFINER VIEW `v1` (`avg(a)`, `a`, `b`) AS SELECT AVG(`a`) AS `avg(a)`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` FROM `test`.`t1` GROUP BY `a`|utf8mb4|utf8mb4_bin")) - tk.MustExec("drop view v1") - tk.MustExec("create or replace definer=`root`@`127.0.0.1` view v1 as select a+b, t1.* , a as c from t1") - tk.MustQuery("show create view v1").Check(testkit.RowsWithSep("|", "v1|CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`127.0.0.1` SQL SECURITY DEFINER VIEW `v1` (`a+b`, `a`, `b`, `c`) AS SELECT `a`+`b` AS `a+b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`a` AS `c` FROM `test`.`t1`|utf8mb4|utf8mb4_bin")) - tk.MustExec("drop table t1") - tk.MustExec("drop view v1") + // Bug 19427 + tk.MustQuery("SHOW FULL TABLES in INFORMATION_SCHEMA like 'VIEWS'").Check(testkit.Rows("VIEWS SYSTEM VIEW")) + tk.MustQuery("SHOW FULL TABLES in information_schema like 'VIEWS'").Check(testkit.Rows("VIEWS SYSTEM VIEW")) + tk.MustQuery("SHOW FULL TABLES in metrics_schema like 'uptime'").Check(testkit.Rows("uptime SYSTEM VIEW")) - // For issue #9211 - tk.MustExec("create table t(c int, b int as (c + 1))ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;") - tk.MustQuery("show create table `t`").Check(testkit.RowsWithSep("|", - ""+ - "t CREATE TABLE `t` (\n"+ - " `c` int(11) DEFAULT NULL,\n"+ - " `b` int(11) GENERATED ALWAYS AS (`c` + 1) VIRTUAL\n"+ - ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin", - )) + is := dom.InfoSchema() + tblInfo, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) + require.NoError(t, err) + createTime := model.TSConvert2Time(tblInfo.Meta().UpdateTS).Format("2006-01-02 15:04:05") - tk.MustExec("drop table t") - tk.MustExec("create table t(c int, b int as (c + 1) not null)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;") - tk.MustQuery("show create table `t`").Check(testkit.RowsWithSep("|", - ""+ - "t CREATE TABLE `t` (\n"+ - " `c` int(11) DEFAULT NULL,\n"+ - " `b` int(11) GENERATED ALWAYS AS (`c` + 1) VIRTUAL NOT NULL\n"+ - ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin", - )) - tk.MustExec("drop table t") - tk.MustExec("create table t ( a char(10) charset utf8 collate utf8_bin, b char(10) as (rtrim(a)));") - tk.MustQuery("show create table `t`").Check(testkit.RowsWithSep("|", - ""+ - "t CREATE TABLE `t` (\n"+ - " `a` char(10) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,\n"+ - " `b` char(10) GENERATED ALWAYS AS (rtrim(`a`)) VIRTUAL\n"+ - ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin", - )) - tk.MustExec("drop table t") + // The Hostname is the actual host + tk.Session().Auth(&auth.UserIdentity{Username: "root", Hostname: "192.168.0.1", AuthUsername: "root", AuthHostname: "%"}, nil, []byte("012345678901234567890")) - tk.MustExec(`drop table if exists different_charset`) - tk.MustExec(`create table different_charset(ch1 varchar(10) charset utf8, ch2 varchar(10) charset binary);`) - tk.MustQuery(`show create table different_charset`).Check(testkit.RowsWithSep("|", - ""+ - "different_charset CREATE TABLE `different_charset` (\n"+ - " `ch1` varchar(10) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,\n"+ - " `ch2` varbinary(10) DEFAULT NULL\n"+ - ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin", - )) + r := tk.MustQuery("show table status from test like 't'") + r.Check(testkit.Rows(fmt.Sprintf("t InnoDB 10 Compact 0 0 0 0 0 0 %s utf8mb4_bin 注释", createTime))) - tk.MustExec("drop table if exists t") - tk.MustExec("create table `t` (\n" + - "`a` timestamp not null default current_timestamp,\n" + - "`b` timestamp(3) default current_timestamp(3),\n" + - "`c` datetime default current_timestamp,\n" + - "`d` datetime(4) default current_timestamp(4),\n" + - "`e` varchar(20) default 'cUrrent_tImestamp',\n" + - "`f` datetime(2) default current_timestamp(2) on update current_timestamp(2),\n" + - "`g` timestamp(2) default current_timestamp(2) on update current_timestamp(2))") - tk.MustQuery("show create table `t`").Check(testkit.RowsWithSep("|", - ""+ - "t CREATE TABLE `t` (\n"+ - " `a` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,\n"+ - " `b` timestamp(3) DEFAULT CURRENT_TIMESTAMP(3),\n"+ - " `c` datetime DEFAULT CURRENT_TIMESTAMP,\n"+ - " `d` datetime(4) DEFAULT CURRENT_TIMESTAMP(4),\n"+ - " `e` varchar(20) DEFAULT 'cUrrent_tImestamp',\n"+ - " `f` datetime(2) DEFAULT CURRENT_TIMESTAMP(2) ON UPDATE CURRENT_TIMESTAMP(2),\n"+ - " `g` timestamp(2) DEFAULT CURRENT_TIMESTAMP(2) ON UPDATE CURRENT_TIMESTAMP(2)\n"+ - ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin", - )) - tk.MustExec("drop table t") + tk.MustQuery("show databases like 'test'").Check(testkit.Rows("test")) - tk.MustExec("create table t (a int, b int) shard_row_id_bits = 4 pre_split_regions=3;") - tk.MustQuery("show create table `t`").Check(testkit.RowsWithSep("|", - ""+ - "t CREATE TABLE `t` (\n"+ - " `a` int(11) DEFAULT NULL,\n"+ - " `b` int(11) DEFAULT NULL\n"+ - ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin /*T! SHARD_ROW_ID_BITS=4 PRE_SPLIT_REGIONS=3 */", - )) - tk.MustExec("drop table t") + tk.MustExec(`grant all on *.* to 'root'@'%'`) + tk.MustQuery("show grants").Check(testkit.Rows(`GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION`)) - // for issue #20446 - tk.MustExec("drop table if exists t1;") - tk.MustExec("create table t1(c int unsigned default 0);") - tk.MustQuery("show create table `t1`").Check(testkit.RowsWithSep("|", - ""+ - "t1 CREATE TABLE `t1` (\n"+ - " `c` int(10) unsigned DEFAULT '0'\n"+ - ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin", - )) - tk.MustExec("drop table t1") + tk.MustQuery("show grants for current_user()").Check(testkit.Rows(`GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION`)) + tk.MustQuery("show grants for current_user").Check(testkit.Rows(`GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION`)) +} - tk.MustExec("CREATE TABLE `log` (" + - "`LOG_ID` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT," + - "`ROUND_ID` bigint(20) UNSIGNED NOT NULL," + - "`USER_ID` int(10) UNSIGNED NOT NULL," + - "`USER_IP` int(10) UNSIGNED DEFAULT NULL," + - "`END_TIME` datetime NOT NULL," + - "`USER_TYPE` int(11) DEFAULT NULL," + - "`APP_ID` int(11) DEFAULT NULL," + - "PRIMARY KEY (`LOG_ID`,`END_TIME`)," + - "KEY `IDX_EndTime` (`END_TIME`)," + - "KEY `IDX_RoundId` (`ROUND_ID`)," + - "KEY `IDX_UserId_EndTime` (`USER_ID`,`END_TIME`)" + - ") ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=505488 " + - "PARTITION BY RANGE ( month(`end_time`) ) (" + - "PARTITION `p1` VALUES LESS THAN (2)," + - "PARTITION `p2` VALUES LESS THAN (3)," + - "PARTITION `p3` VALUES LESS THAN (4)," + - "PARTITION `p4` VALUES LESS THAN (5)," + - "PARTITION `p5` VALUES LESS THAN (6)," + - "PARTITION `p6` VALUES LESS THAN (7)," + - "PARTITION `p7` VALUES LESS THAN (8)," + - "PARTITION `p8` VALUES LESS THAN (9)," + - "PARTITION `p9` VALUES LESS THAN (10)," + - "PARTITION `p10` VALUES LESS THAN (11)," + - "PARTITION `p11` VALUES LESS THAN (12)," + - "PARTITION `p12` VALUES LESS THAN (MAXVALUE))") - tk.MustQuery("show create table log").Check(testkit.RowsWithSep("|", - "log CREATE TABLE `log` (\n"+ - " `LOG_ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,\n"+ - " `ROUND_ID` bigint(20) unsigned NOT NULL,\n"+ - " `USER_ID` int(10) unsigned NOT NULL,\n"+ - " `USER_IP` int(10) unsigned DEFAULT NULL,\n"+ - " `END_TIME` datetime NOT NULL,\n"+ - " `USER_TYPE` int(11) DEFAULT NULL,\n"+ - " `APP_ID` int(11) DEFAULT NULL,\n"+ - " PRIMARY KEY (`LOG_ID`,`END_TIME`) /*T![clustered_index] NONCLUSTERED */,\n"+ - " KEY `IDX_EndTime` (`END_TIME`),\n"+ - " KEY `IDX_RoundId` (`ROUND_ID`),\n"+ - " KEY `IDX_UserId_EndTime` (`USER_ID`,`END_TIME`)\n"+ - ") ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=505488\n"+ - "PARTITION BY RANGE (MONTH(`end_time`))\n"+ - "(PARTITION `p1` VALUES LESS THAN (2),\n"+ - " PARTITION `p2` VALUES LESS THAN (3),\n"+ - " PARTITION `p3` VALUES LESS THAN (4),\n"+ - " PARTITION `p4` VALUES LESS THAN (5),\n"+ - " PARTITION `p5` VALUES LESS THAN (6),\n"+ - " PARTITION `p6` VALUES LESS THAN (7),\n"+ - " PARTITION `p7` VALUES LESS THAN (8),\n"+ - " PARTITION `p8` VALUES LESS THAN (9),\n"+ - " PARTITION `p9` VALUES LESS THAN (10),\n"+ - " PARTITION `p10` VALUES LESS THAN (11),\n"+ - " PARTITION `p11` VALUES LESS THAN (12),\n"+ - " PARTITION `p12` VALUES LESS THAN (MAXVALUE))")) +func TestShowCreateUser(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + tk := testkit.NewTestKit(t, store) + // Create a new user. + tk.MustExec(`CREATE USER 'test_show_create_user'@'%' IDENTIFIED BY 'root';`) + tk.MustQuery("show create user 'test_show_create_user'@'%'"). + Check(testkit.Rows(`CREATE USER 'test_show_create_user'@'%' IDENTIFIED WITH 'mysql_native_password' AS '*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK`)) - // for issue #11831 - tk.MustExec("create table ttt4(a varchar(123) default null collate utf8mb4_unicode_ci)engine=innodb default charset=utf8mb4 collate=utf8mb4_unicode_ci;") - tk.MustQuery("show create table `ttt4`").Check(testkit.RowsWithSep("|", - ""+ - "ttt4 CREATE TABLE `ttt4` (\n"+ - " `a` varchar(123) COLLATE utf8mb4_unicode_ci DEFAULT NULL\n"+ - ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", - )) - tk.MustExec("create table ttt5(a varchar(123) default null)engine=innodb default charset=utf8mb4 collate=utf8mb4_bin;") - tk.MustQuery("show create table `ttt5`").Check(testkit.RowsWithSep("|", - ""+ - "ttt5 CREATE TABLE `ttt5` (\n"+ - " `a` varchar(123) DEFAULT NULL\n"+ - ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin", - )) + tk.MustExec(`CREATE USER 'test_show_create_user'@'localhost' IDENTIFIED BY 'test';`) + tk.MustQuery("show create user 'test_show_create_user'@'localhost';"). + Check(testkit.Rows(`CREATE USER 'test_show_create_user'@'localhost' IDENTIFIED WITH 'mysql_native_password' AS '*94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK`)) - // for expression index - tk.MustExec("drop table if exists t;") - tk.MustExec("create table t(a int, b real);") - tk.MustExec("alter table t add index expr_idx((a*b+1));") - tk.MustQuery("show create table t;").Check(testkit.RowsWithSep("|", - ""+ - "t CREATE TABLE `t` (\n"+ - " `a` int(11) DEFAULT NULL,\n"+ - " `b` double DEFAULT NULL,\n"+ - " KEY `expr_idx` ((`a` * `b` + 1))\n"+ - ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin", - )) + // Case: the user exists but the host portion doesn't match + err := tk.QueryToErr("show create user 'test_show_create_user'@'asdf';") + require.Equal(t, executor.ErrCannotUser.GenWithStackByArgs("SHOW CREATE USER", "'test_show_create_user'@'asdf'").Error(), err.Error()) - // Fix issue #15175, show create table sequence_name. - tk.MustExec("drop sequence if exists seq") - tk.MustExec("create sequence seq") - tk.MustQuery("show create table seq;").Check(testkit.Rows("seq CREATE SEQUENCE `seq` start with 1 minvalue 1 maxvalue 9223372036854775806 increment by 1 cache 1000 nocycle ENGINE=InnoDB")) + // Case: a user that doesn't exist + err = tk.QueryToErr("show create user 'aaa'@'localhost';") + require.Equal(t, executor.ErrCannotUser.GenWithStackByArgs("SHOW CREATE USER", "'aaa'@'localhost'").Error(), err.Error()) - // Test for issue #15633, 'binary' collation should be ignored in the result of 'show create table'. - tk.MustExec(`drop table if exists binary_collate`) - tk.MustExec(`create table binary_collate(a varchar(10)) default collate=binary;`) - tk.MustQuery(`show create table binary_collate`).Check(testkit.RowsWithSep("|", - ""+ - "binary_collate CREATE TABLE `binary_collate` (\n"+ - " `a` varbinary(10) DEFAULT NULL\n"+ - ") ENGINE=InnoDB DEFAULT CHARSET=binary", // binary collate is ignored - )) - tk.MustExec(`drop table if exists binary_collate`) - tk.MustExec(`create table binary_collate(a varchar(10)) default charset=binary collate=binary;`) - tk.MustQuery(`show create table binary_collate`).Check(testkit.RowsWithSep("|", - ""+ - "binary_collate CREATE TABLE `binary_collate` (\n"+ - " `a` varbinary(10) DEFAULT NULL\n"+ - ") ENGINE=InnoDB DEFAULT CHARSET=binary", // binary collate is ignored - )) - tk.MustExec(`drop table if exists binary_collate`) - tk.MustExec(`create table binary_collate(a varchar(10)) default charset=utf8mb4 collate=utf8mb4_bin;`) - tk.MustQuery(`show create table binary_collate`).Check(testkit.RowsWithSep("|", - ""+ - "binary_collate CREATE TABLE `binary_collate` (\n"+ - " `a` varchar(10) DEFAULT NULL\n"+ - ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin", // non-binary collate is kept. - )) - // Test for issue #17 in bug competition, default num and sequence should be shown without quote. - tk.MustExec(`drop table if exists default_num`) - tk.MustExec("create table default_num(a int default 11)") - tk.MustQuery("show create table default_num").Check(testkit.RowsWithSep("|", - ""+ - "default_num CREATE TABLE `default_num` (\n"+ - " `a` int(11) DEFAULT '11'\n"+ - ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin", - )) - tk.MustExec(`drop table if exists default_varchar`) - tk.MustExec("create table default_varchar(a varchar(10) default \"haha\")") - tk.MustQuery("show create table default_varchar").Check(testkit.RowsWithSep("|", - ""+ - "default_varchar CREATE TABLE `default_varchar` (\n"+ - " `a` varchar(10) DEFAULT 'haha'\n"+ - ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin", - )) - tk.MustExec(`drop table if exists default_sequence`) - tk.MustExec("create table default_sequence(a int default nextval(seq))") - tk.MustQuery("show create table default_sequence").Check(testkit.RowsWithSep("|", - ""+ - "default_sequence CREATE TABLE `default_sequence` (\n"+ - " `a` int(11) DEFAULT nextval(`test`.`seq`)\n"+ - ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin", - )) + tk.Session().Auth(&auth.UserIdentity{Username: "root", Hostname: "127.0.0.1", AuthUsername: "root", AuthHostname: "%"}, nil, nil) + tk.MustQuery("show create user current_user"). + Check(testkit.Rows("CREATE USER 'root'@'127.0.0.1' IDENTIFIED WITH 'mysql_native_password' AS '' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK")) - // TiDB defaults (and only supports) foreign_key_checks=0 - // This means that the child table can be created before the parent table. - // This behavior is required for mysqldump restores. - tk.MustExec(`DROP TABLE IF EXISTS parent, child`) - tk.MustExec(`CREATE TABLE child (id INT NOT NULL PRIMARY KEY auto_increment, parent_id INT NOT NULL, INDEX par_ind (parent_id), CONSTRAINT child_ibfk_1 FOREIGN KEY (parent_id) REFERENCES parent(id))`) - tk.MustExec(`CREATE TABLE parent ( id INT NOT NULL PRIMARY KEY auto_increment )`) - tk.MustQuery(`show create table child`).Check(testkit.RowsWithSep("|", - ""+ - "child CREATE TABLE `child` (\n"+ - " `id` int(11) NOT NULL AUTO_INCREMENT,\n"+ - " `parent_id` int(11) NOT NULL,\n"+ - " PRIMARY KEY (`id`) /*T![clustered_index] CLUSTERED */,\n"+ - " KEY `par_ind` (`parent_id`),\n"+ - " CONSTRAINT `child_ibfk_1` FOREIGN KEY (`parent_id`) REFERENCES `parent` (`id`)\n"+ - ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin", - )) + tk.MustQuery("show create user current_user()"). + Check(testkit.Rows("CREATE USER 'root'@'127.0.0.1' IDENTIFIED WITH 'mysql_native_password' AS '' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK")) - // Test Foreign keys + ON DELETE / ON UPDATE - tk.MustExec(`DROP TABLE child`) - tk.MustExec(`CREATE TABLE child (id INT NOT NULL PRIMARY KEY auto_increment, parent_id INT NOT NULL, INDEX par_ind (parent_id), CONSTRAINT child_ibfk_1 FOREIGN KEY (parent_id) REFERENCES parent(id) ON DELETE SET NULL ON UPDATE CASCADE)`) - tk.MustQuery(`show create table child`).Check(testkit.RowsWithSep("|", - ""+ - "child CREATE TABLE `child` (\n"+ - " `id` int(11) NOT NULL AUTO_INCREMENT,\n"+ - " `parent_id` int(11) NOT NULL,\n"+ - " PRIMARY KEY (`id`) /*T![clustered_index] CLUSTERED */,\n"+ - " KEY `par_ind` (`parent_id`),\n"+ - " CONSTRAINT `child_ibfk_1` FOREIGN KEY (`parent_id`) REFERENCES `parent` (`id`) ON DELETE SET NULL ON UPDATE CASCADE\n"+ - ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin", - )) + tk.MustExec("create user 'check_priv'") - // Test issue #20327 - tk.MustExec("drop table if exists t;") - tk.MustExec("create table t(a int, b char(10) as ('a'));") - result := tk.MustQuery("show create table t;").Rows()[0][1] - require.Regexp(t, `(?s).*GENERATED ALWAYS AS \(_utf8mb4'a'\).*`, result) - tk.MustExec("drop table if exists t;") - tk.MustExec("create table t(a int, b char(10) as (_utf8'a'));") - result = tk.MustQuery("show create table t;").Rows()[0][1] - require.Regexp(t, `(?s).*GENERATED ALWAYS AS \(_utf8'a'\).*`, result) - // Test show list partition table - 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), unique index idx (id)) partition by list (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) - );`) - tk.MustQuery(`show create table t`).Check(testkit.RowsWithSep("|", - "t CREATE TABLE `t` (\n"+ - " `id` int(11) DEFAULT NULL,\n"+ - " `name` varchar(10) DEFAULT NULL,\n"+ - " UNIQUE KEY `idx` (`id`)\n"+ - ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin\n"+ - "PARTITION BY LIST (`id`)\n"+ - "(PARTITION `p0` VALUES IN (3,5,6,9,17),\n"+ - " PARTITION `p1` VALUES IN (1,2,10,11,19,20),\n"+ - " PARTITION `p2` VALUES IN (4,12,13,14,18),\n"+ - " PARTITION `p3` VALUES IN (7,8,15,16,NULL))")) - // Test show list column partition table - tk.MustExec(`DROP TABLE IF EXISTS t`) - tk.MustExec(`create table t (id int, name varchar(10), unique index idx (id)) 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) - );`) - tk.MustQuery(`show create table t`).Check(testkit.RowsWithSep("|", - "t CREATE TABLE `t` (\n"+ - " `id` int(11) DEFAULT NULL,\n"+ - " `name` varchar(10) DEFAULT NULL,\n"+ - " UNIQUE KEY `idx` (`id`)\n"+ - ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin\n"+ - "PARTITION BY LIST COLUMNS(`id`)\n"+ - "(PARTITION `p0` VALUES IN (3,5,6,9,17),\n"+ - " PARTITION `p1` VALUES IN (1,2,10,11,19,20),\n"+ - " PARTITION `p2` VALUES IN (4,12,13,14,18),\n"+ - " PARTITION `p3` VALUES IN (7,8,15,16,NULL))")) - tk.MustExec(`DROP TABLE IF EXISTS t`) - tk.MustExec(`create table t (id int, name varchar(10), unique index idx (id, name)) partition by list columns (id, name) ( - partition p0 values in ((3, '1'), (5, '5')), - partition p1 values in ((1, '1')));`) - tk.MustQuery(`show create table t`).Check(testkit.RowsWithSep("|", - "t CREATE TABLE `t` (\n"+ - " `id` int(11) DEFAULT NULL,\n"+ - " `name` varchar(10) DEFAULT NULL,\n"+ - " UNIQUE KEY `idx` (`id`,`name`)\n"+ - ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin\n"+ - "PARTITION BY LIST COLUMNS(`id`,`name`)\n"+ - "(PARTITION `p0` VALUES IN ((3,\"1\"),(5,\"5\")),\n"+ - " PARTITION `p1` VALUES IN ((1,\"1\")))")) - tk.MustExec(`DROP TABLE IF EXISTS t`) - tk.MustExec(`create table t (id int primary key, v varchar(255) not null, key idx_v (v) comment 'foo\'bar')`) - tk.MustQuery(`show create table t`).Check(testkit.RowsWithSep("|", - "t CREATE TABLE `t` (\n"+ - " `id` int(11) NOT NULL,\n"+ - " `v` varchar(255) NOT NULL,\n"+ - " PRIMARY KEY (`id`) /*T![clustered_index] CLUSTERED */,\n"+ - " KEY `idx_v` (`v`) COMMENT 'foo''bar'\n"+ - ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin")) + // "show create user" for other user requires the SELECT privilege on mysql database. + tk1 := testkit.NewTestKit(t, store) + tk1.MustExec("use mysql") + succ := tk1.Session().Auth(&auth.UserIdentity{Username: "check_priv", Hostname: "127.0.0.1", AuthUsername: "test_show", AuthHostname: "asdf"}, nil, nil) + require.True(t, succ) + err = tk1.QueryToErr("show create user 'root'@'%'") + require.Error(t, err) - // For issue #29922 - tk.MustExec("CREATE TABLE `thash` (\n `id` bigint unsigned NOT NULL,\n `data` varchar(255) DEFAULT NULL,\n PRIMARY KEY (`id`)\n)\nPARTITION BY HASH (`id`)\n(PARTITION pEven COMMENT = \"Even ids\",\n PARTITION pOdd COMMENT = \"Odd ids\");") - tk.MustQuery("show create table `thash`").Check(testkit.RowsWithSep("|", ""+ - "thash CREATE TABLE `thash` (\n"+ - " `id` bigint(20) unsigned NOT NULL,\n"+ - " `data` varchar(255) DEFAULT NULL,\n"+ - " PRIMARY KEY (`id`) /*T![clustered_index] CLUSTERED */\n"+ - ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin\n"+ - "PARTITION BY HASH (`id`)\n"+ - "(PARTITION `pEven` COMMENT 'Even ids',\n"+ - " PARTITION `pOdd` COMMENT 'Odd ids')", - )) - // empty edge case - tk.MustExec("drop table if exists `thash`") - tk.MustExec("CREATE TABLE `thash` (\n `id` bigint unsigned NOT NULL,\n `data` varchar(255) DEFAULT NULL,\n PRIMARY KEY (`id`)\n)\nPARTITION BY HASH (`id`);") - tk.MustQuery("show create table `thash`").Check(testkit.RowsWithSep("|", ""+ - "thash CREATE TABLE `thash` (\n"+ - " `id` bigint(20) unsigned NOT NULL,\n"+ - " `data` varchar(255) DEFAULT NULL,\n"+ - " PRIMARY KEY (`id`) /*T![clustered_index] CLUSTERED */\n"+ - ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin\n"+ - "PARTITION BY HASH (`id`) PARTITIONS 1", - )) + // "show create user" for current user doesn't check privileges. + tk1.MustQuery("show create user current_user"). + Check(testkit.Rows("CREATE USER 'check_priv'@'127.0.0.1' IDENTIFIED WITH 'mysql_native_password' AS '' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK")) + + // Creating users with `IDENTIFIED WITH 'caching_sha2_password'` + tk.MustExec("CREATE USER 'sha_test'@'%' IDENTIFIED WITH 'caching_sha2_password' BY 'temp_passwd'") + + // Compare only the start of the output as the salt changes every time. + rows := tk.MustQuery("SHOW CREATE USER 'sha_test'@'%'") + require.Equal(t, "CREATE USER 'sha_test'@'%' IDENTIFIED WITH 'caching_sha2_password' AS '$A$005$", rows.Rows()[0][0].(string)[:78]) + // Creating users with `IDENTIFIED WITH 'auth-socket'` + tk.MustExec("CREATE USER 'sock'@'%' IDENTIFIED WITH 'auth_socket'") + + // Compare only the start of the output as the salt changes every time. + rows = tk.MustQuery("SHOW CREATE USER 'sock'@'%'") + require.Equal(t, "CREATE USER 'sock'@'%' IDENTIFIED WITH 'auth_socket' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK", rows.Rows()[0][0].(string)) + tk.MustExec("CREATE USER 'sock2'@'%' IDENTIFIED WITH 'auth_socket' AS 'sock3'") + + // Compare only the start of the output as the salt changes every time. + rows = tk.MustQuery("SHOW CREATE USER 'sock2'@'%'") + require.Equal(t, "CREATE USER 'sock2'@'%' IDENTIFIED WITH 'auth_socket' AS 'sock3' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK", rows.Rows()[0][0].(string)) +} + +func TestUnprivilegedShow(t *testing.T) { + store, dom, clean := testkit.CreateMockStoreAndDomain(t) + defer clean() + tk := testkit.NewTestKit(t, store) + tk.MustExec("CREATE DATABASE testshow") + tk.MustExec("USE testshow") + tk.MustExec("CREATE TABLE t1 (a int)") + tk.MustExec("CREATE TABLE t2 (a int)") + + tk.MustExec(`CREATE USER 'lowprivuser'`) // no grants + + tk.Session().Auth(&auth.UserIdentity{Username: "lowprivuser", Hostname: "192.168.0.1", AuthUsername: "lowprivuser", AuthHostname: "%"}, nil, []byte("012345678901234567890")) + rs, err := tk.Exec("SHOW TABLE STATUS FROM testshow") + require.NoError(t, err) + require.NotNil(t, rs) + + tk.Session().Auth(&auth.UserIdentity{Username: "root", Hostname: "192.168.0.1", AuthUsername: "root", AuthHostname: "%"}, nil, []byte("012345678901234567890")) + tk.MustExec("GRANT ALL ON testshow.t1 TO 'lowprivuser'") + tk.Session().Auth(&auth.UserIdentity{Username: "lowprivuser", Hostname: "192.168.0.1", AuthUsername: "lowprivuser", AuthHostname: "%"}, nil, []byte("012345678901234567890")) + + is := dom.InfoSchema() + tblInfo, err := is.TableByName(model.NewCIStr("testshow"), model.NewCIStr("t1")) + require.NoError(t, err) + createTime := model.TSConvert2Time(tblInfo.Meta().UpdateTS).Format("2006-01-02 15:04:05") + + tk.MustQuery("show table status from testshow").Check(testkit.Rows(fmt.Sprintf("t1 InnoDB 10 Compact 0 0 0 0 0 0 %s utf8mb4_bin ", createTime))) - // default value escape character '\\' display case - tk.MustExec("drop table if exists t;") - tk.MustExec("create table t(a int primary key, b varchar(20) default '\\\\');") - tk.MustQuery("show create table t;").Check(testkit.RowsWithSep("|", - ""+ - "t CREATE TABLE `t` (\n"+ - " `a` int(11) NOT NULL,\n"+ - " `b` varchar(20) DEFAULT '\\\\',\n"+ - " PRIMARY KEY (`a`) /*T![clustered_index] CLUSTERED */\n"+ - ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin")) } -func TestShowCreateTablePlacement(t *testing.T) { +func TestCollation(t *testing.T) { store, clean := testkit.CreateMockStore(t) defer clean() tk := testkit.NewTestKit(t, store) tk.MustExec("use test") - defer tk.MustExec(`DROP TABLE IF EXISTS t`) - // case for policy - tk.MustExec(`DROP TABLE IF EXISTS t`) - tk.MustExec("create placement policy x " + - "FOLLOWERS=2 " + - "CONSTRAINTS=\"[+disk=ssd]\" ") - defer tk.MustExec(`DROP PLACEMENT POLICY IF EXISTS x`) - tk.MustExec("create table t(a int)" + - "PLACEMENT POLICY=\"x\"") - tk.MustQuery(`show create table t`).Check(testkit.RowsWithSep("|", - "t CREATE TABLE `t` (\n"+ - " `a` int(11) DEFAULT NULL\n"+ - ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin "+ - "/*T![placement] PLACEMENT POLICY=`x` */", - )) + rs, err := tk.Exec("show collation;") + require.NoError(t, err) + fields := rs.Fields() + require.Equal(t, mysql.TypeVarchar, fields[0].Column.GetType()) + require.Equal(t, mysql.TypeVarchar, fields[1].Column.GetType()) + require.Equal(t, mysql.TypeLonglong, fields[2].Column.GetType()) + require.Equal(t, mysql.TypeVarchar, fields[3].Column.GetType()) + require.Equal(t, mysql.TypeVarchar, fields[4].Column.GetType()) + require.Equal(t, mysql.TypeLonglong, fields[5].Column.GetType()) +} - // case for policy with quotes - tk.MustExec(`DROP TABLE IF EXISTS t`) - tk.MustExec("create table t(a int)" + - "/*T![placement] PLACEMENT POLICY=\"x\" */") - tk.MustQuery(`show create table t`).Check(testkit.RowsWithSep("|", - "t CREATE TABLE `t` (\n"+ - " `a` int(11) DEFAULT NULL\n"+ - ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin "+ - "/*T![placement] PLACEMENT POLICY=`x` */", - )) +func TestShowTableStatus(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + tk := testkit.NewTestKit(t, store) - // Partitioned tables - tk.MustExec(`DROP TABLE IF EXISTS t`) - tk.MustExec("set @old_list_part = @@tidb_enable_list_partition") - defer tk.MustExec("set @@tidb_enable_list_partition = @old_list_part") - tk.MustExec("set tidb_enable_list_partition = 1") - tk.MustExec("create table t(a int, b varchar(255))" + - "/*T![placement] PLACEMENT POLICY=\"x\" */" + - "PARTITION BY LIST (a)\n" + - "(PARTITION pLow VALUES in (1,2,3,5,8) COMMENT 'a comment' placement policy 'x'," + - " PARTITION pMid VALUES in (9) COMMENT 'another comment'," + - "partition pMax values IN (10,11,12))") - tk.MustQuery(`show create table t`).Check(testkit.RowsWithSep("|", ""+ - "t CREATE TABLE `t` (\n"+ - " `a` int(11) DEFAULT NULL,\n"+ - " `b` varchar(255) DEFAULT NULL\n"+ - ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin /*T![placement] PLACEMENT POLICY=`x` */\n"+ - "PARTITION BY LIST (`a`)\n"+ - "(PARTITION `pLow` VALUES IN (1,2,3,5,8) COMMENT 'a comment' /*T![placement] PLACEMENT POLICY=`x` */,\n"+ - " PARTITION `pMid` VALUES IN (9) COMMENT 'another comment',\n"+ - " PARTITION `pMax` VALUES IN (10,11,12))", - )) + tk.MustExec("use test") + tk.MustExec(`drop table if exists t;`) + tk.MustExec(`create table t(a bigint);`) - tk.MustExec(`DROP TABLE IF EXISTS t`) - tk.MustExec("create table t(a int, b varchar(255))" + - "PARTITION BY LIST COLUMNS (b)\n" + - "(PARTITION pLow VALUES in ('1','2','3','5','8') COMMENT 'a comment' placement policy 'x'," + - "partition pMax values IN ('10','11','12'))") - tk.MustQuery(`show create table t`).Check(testkit.RowsWithSep("|", ""+ - "t CREATE TABLE `t` (\n"+ - " `a` int(11) DEFAULT NULL,\n"+ - " `b` varchar(255) DEFAULT NULL\n"+ - ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin\n"+ - "PARTITION BY LIST COLUMNS(`b`)\n"+ - "(PARTITION `pLow` VALUES IN (\"1\",\"2\",\"3\",\"5\",\"8\") COMMENT 'a comment' /*T![placement] PLACEMENT POLICY=`x` */,\n"+ - " PARTITION `pMax` VALUES IN (\"10\",\"11\",\"12\"))", - )) + tk.Session().Auth(&auth.UserIdentity{Username: "root", Hostname: "192.168.0.1", AuthUsername: "root", AuthHostname: "%"}, nil, []byte("012345678901234567890")) - tk.MustExec(`DROP TABLE IF EXISTS t`) - tk.MustExec("create table t(a int, b varchar(255))" + - "PARTITION BY LIST COLUMNS (a,b)\n" + - "(PARTITION pLow VALUES in ((1,'1'),(2,'2'),(3,'3'),(5,'5'),(8,'8')) COMMENT 'a comment' placement policy 'x'," + - "partition pMax values IN ((10,'10'),(11,'11'),(12,'12')))") - tk.MustQuery(`show create table t`).Check(testkit.RowsWithSep("|", ""+ - "t CREATE TABLE `t` (\n"+ - " `a` int(11) DEFAULT NULL,\n"+ - " `b` varchar(255) DEFAULT NULL\n"+ - ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin\n"+ - "PARTITION BY LIST COLUMNS(`a`,`b`)\n"+ - "(PARTITION `pLow` VALUES IN ((1,\"1\"),(2,\"2\"),(3,\"3\"),(5,\"5\"),(8,\"8\")) COMMENT 'a comment' /*T![placement] PLACEMENT POLICY=`x` */,\n"+ - " PARTITION `pMax` VALUES IN ((10,\"10\"),(11,\"11\"),(12,\"12\")))", - )) + // It's not easy to test the result contents because every time the test runs, "Create_time" changed. + tk.MustExec("show table status;") + rs, err := tk.Exec("show table status;") + require.NoError(t, err) + require.NotNil(t, rs) + rows, err := session.GetRows4Test(context.Background(), tk.Session(), rs) + require.NoError(t, err) + err = rs.Close() + require.NoError(t, err) + require.Equal(t, 1, len(rows)) - tk.MustExec(`DROP TABLE IF EXISTS t`) - tk.MustExec("create table t(a int, b varchar(255))" + - "PARTITION BY RANGE (a)\n" + - "(PARTITION pLow VALUES less than (1000000) COMMENT 'a comment' placement policy 'x'," + - "partition pMax values LESS THAN (MAXVALUE))") - tk.MustQuery(`show create table t`).Check(testkit.RowsWithSep("|", ""+ - "t CREATE TABLE `t` (\n"+ - " `a` int(11) DEFAULT NULL,\n"+ - " `b` varchar(255) DEFAULT NULL\n"+ - ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin\n"+ - "PARTITION BY RANGE (`a`)\n"+ - "(PARTITION `pLow` VALUES LESS THAN (1000000) COMMENT 'a comment' /*T![placement] PLACEMENT POLICY=`x` */,\n"+ - " PARTITION `pMax` VALUES LESS THAN (MAXVALUE))", - )) + for i := range rows { + row := rows[i] + require.Equal(t, "t", row.GetString(0)) + require.Equal(t, "InnoDB", row.GetString(1)) + require.Equal(t, int64(10), row.GetInt64(2)) + require.Equal(t, "Compact", row.GetString(3)) + } + tk.MustExec(`drop table if exists tp;`) + tk.MustExec(`create table tp (a int) + partition by range(a) + ( partition p0 values less than (10), + partition p1 values less than (20), + partition p2 values less than (maxvalue) + );`) + rs, err = tk.Exec("show table status from test like 'tp';") + require.NoError(t, err) + rows, err = session.GetRows4Test(context.Background(), tk.Session(), rs) + require.NoError(t, err) + require.Equal(t, "partitioned", rows[0].GetString(16)) - tk.MustExec(`DROP TABLE IF EXISTS t`) - tk.MustExec("create table t(a int, b varchar(255))" + - "PARTITION BY RANGE COLUMNS (b)\n" + - "(PARTITION pLow VALUES less than ('1000000') COMMENT 'a comment' placement policy 'x'," + - "partition pMax values LESS THAN (MAXVALUE))") - tk.MustQuery(`show create table t`).Check(testkit.RowsWithSep("|", ""+ - "t CREATE TABLE `t` (\n"+ - " `a` int(11) DEFAULT NULL,\n"+ - " `b` varchar(255) DEFAULT NULL\n"+ - ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin\n"+ - "PARTITION BY RANGE COLUMNS(`b`)\n"+ - "(PARTITION `pLow` VALUES LESS THAN (\"1000000\") COMMENT 'a comment' /*T![placement] PLACEMENT POLICY=`x` */,\n"+ - " PARTITION `pMax` VALUES LESS THAN (MAXVALUE))", - )) + tk.MustExec("create database UPPER_CASE") + tk.MustExec("use UPPER_CASE") + tk.MustExec("create table t (i int)") + rs, err = tk.Exec("show table status") + require.NoError(t, err) + require.NotNil(t, rs) + rows, err = session.GetRows4Test(context.Background(), tk.Session(), rs) + require.NoError(t, err) + err = rs.Close() + require.NoError(t, err) + require.Equal(t, 1, len(rows)) - tk.MustExec(`DROP TABLE IF EXISTS t`) - // RANGE COLUMNS with multiple columns is not supported! - tk.MustExec("create table t(a int, b varchar(255))" + - "/*T![placement] PLACEMENT POLICY=\"x\" */" + - "PARTITION BY RANGE COLUMNS (a,b)\n" + - "(PARTITION pLow VALUES less than (1000000,'1000000') COMMENT 'a comment' placement policy 'x'," + - " PARTITION pMidLow VALUES less than (1000000,MAXVALUE) COMMENT 'another comment' placement policy 'x'," + - " PARTITION pMadMax VALUES less than (MAXVALUE,'1000000') COMMENT ='Not a comment' placement policy 'x'," + - "partition pMax values LESS THAN (MAXVALUE, MAXVALUE))") - tk.MustQuery("show warnings").Check(testkit.Rows("Warning 8200 Unsupported partition type RANGE, treat as normal table")) - tk.MustQuery(`show create table t`).Check(testkit.RowsWithSep("|", ""+ - "t CREATE TABLE `t` (\n"+ - " `a` int(11) DEFAULT NULL,\n"+ - " `b` varchar(255) DEFAULT NULL\n"+ - ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin /*T![placement] PLACEMENT POLICY=`x` */", - )) + tk.MustExec("use upper_case") + rs, err = tk.Exec("show table status") + require.NoError(t, err) + require.NotNil(t, rs) + rows, err = session.GetRows4Test(context.Background(), tk.Session(), rs) + require.NoError(t, err) + err = rs.Close() + require.NoError(t, err) + require.Equal(t, 1, len(rows)) - tk.MustExec(`DROP TABLE IF EXISTS t`) - tk.MustExec("create table t(a int, b varchar(255))" + - "/*T![placement] PLACEMENT POLICY=\"x\" */" + - "PARTITION BY HASH (a) PARTITIONS 2") - tk.MustQuery(`show create table t`).Check(testkit.RowsWithSep("|", ""+ - "t CREATE TABLE `t` (\n"+ - " `a` int(11) DEFAULT NULL,\n"+ - " `b` varchar(255) DEFAULT NULL\n"+ - ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin /*T![placement] PLACEMENT POLICY=`x` */\n"+ - "PARTITION BY HASH (`a`) PARTITIONS 2", - )) + tk.MustExec("drop database UPPER_CASE") +} - tk.MustExec(`DROP TABLE IF EXISTS t`) - tk.MustExec("create table t(a int, b varchar(255))" + - "PARTITION BY HASH (a)\n" + - "(PARTITION pLow COMMENT 'a comment' placement policy 'x'," + - "partition pMax)") - tk.MustQuery(`show create table t`).Check(testkit.RowsWithSep("|", ""+ - "t CREATE TABLE `t` (\n"+ - " `a` int(11) DEFAULT NULL,\n"+ - " `b` varchar(255) DEFAULT NULL\n"+ - ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin\n"+ - "PARTITION BY HASH (`a`)\n"+ - "(PARTITION `pLow` COMMENT 'a comment' /*T![placement] PLACEMENT POLICY=`x` */,\n"+ - " PARTITION `pMax`)", - )) - tk.MustExec(`DROP TABLE t`) +func TestShowSlow(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + tk := testkit.NewTestKit(t, store) + // The test result is volatile, because + // 1. Slow queries is stored in domain, which may be affected by other tests. + // 2. Collecting slow queries is a asynchronous process, check immediately may not get the expected result. + // 3. Make slow query like "select sleep(1)" would slow the CI. + // So, we just cover the code but do not check the result. + tk.MustQuery(`admin show slow recent 3`) + tk.MustQuery(`admin show slow top 3`) + tk.MustQuery(`admin show slow top internal 3`) + tk.MustQuery(`admin show slow top all 3`) } func TestShowCreateTableAutoRandom(t *testing.T) { diff --git a/executor/simple.go b/executor/simple.go index 6e2265c9678e0..cfede41d49057 100644 --- a/executor/simple.go +++ b/executor/simple.go @@ -15,7 +15,9 @@ package executor import ( + "bytes" "context" + "encoding/json" "fmt" "os" "strings" @@ -41,6 +43,7 @@ import ( "github.com/pingcap/tidb/plugin" "github.com/pingcap/tidb/privilege" "github.com/pingcap/tidb/sessionctx" + "github.com/pingcap/tidb/sessionctx/sessionstates" "github.com/pingcap/tidb/sessionctx/variable" "github.com/pingcap/tidb/sessiontxn" "github.com/pingcap/tidb/types" @@ -151,6 +154,8 @@ func (e *SimpleExec) Next(ctx context.Context, req *chunk.Chunk) (err error) { err = e.executeRenameUser(x) case *ast.SetPwdStmt: err = e.executeSetPwd(ctx, x) + case *ast.SetSessionStatesStmt: + err = e.executeSetSessionStates(ctx, x) case *ast.KillStmt: err = e.executeKillStmt(ctx, x) case *ast.BinlogStmt: @@ -1293,6 +1298,14 @@ func (e *SimpleExec) executeDropUser(ctx context.Context, s *ast.DropUserStmt) e break } + // delete privileges from mysql.columns_priv + sql.Reset() + sqlexec.MustFormatSQL(sql, `DELETE FROM %n.%n WHERE Host = %? and User = %?;`, mysql.SystemDB, mysql.ColumnPrivTable, user.Hostname, user.Username) + if _, err = sqlExecutor.ExecuteInternal(context.TODO(), sql.String()); err != nil { + failedUsers = append(failedUsers, user.String()) + break + } + // delete relationship from mysql.role_edges sql.Reset() sqlexec.MustFormatSQL(sql, `DELETE FROM %n.%n WHERE TO_HOST = %? and TO_USER = %?;`, mysql.SystemDB, mysql.RoleEdgeTable, user.Hostname, user.Username) @@ -1676,6 +1689,16 @@ func asyncDelayShutdown(p *os.Process, delay time.Duration) { } } +func (e *SimpleExec) executeSetSessionStates(ctx context.Context, s *ast.SetSessionStatesStmt) error { + var sessionStates sessionstates.SessionStates + decoder := json.NewDecoder(bytes.NewReader([]byte(s.SessionStates))) + decoder.UseNumber() + if err := decoder.Decode(&sessionStates); err != nil { + return errors.Trace(err) + } + return e.ctx.DecodeSessionStates(ctx, e.ctx, &sessionStates) +} + func (e *SimpleExec) executeAdmin(s *ast.AdminStmt) error { switch s.Tp { case ast.AdminReloadStatistics: diff --git a/executor/simple_test.go b/executor/simple_test.go index 2a7038abde75a..94ac675504708 100644 --- a/executor/simple_test.go +++ b/executor/simple_test.go @@ -15,573 +15,14 @@ package executor_test import ( - "context" "strconv" "testing" - "github.com/pingcap/errors" "github.com/pingcap/tidb/config" - "github.com/pingcap/tidb/executor" - "github.com/pingcap/tidb/parser/auth" - "github.com/pingcap/tidb/parser/model" - "github.com/pingcap/tidb/parser/mysql" - "github.com/pingcap/tidb/parser/terror" - "github.com/pingcap/tidb/planner/core" - "github.com/pingcap/tidb/session" - "github.com/pingcap/tidb/sessionctx" - "github.com/pingcap/tidb/statistics/handle" - "github.com/pingcap/tidb/store/mockstore" "github.com/pingcap/tidb/testkit" "github.com/pingcap/tidb/util" - "github.com/stretchr/testify/require" ) -func TestDo(t *testing.T) { - store, clean := testkit.CreateMockStore(t) - defer clean() - tk := testkit.NewTestKit(t, store) - tk.MustExec("do 1, @a:=1") - tk.MustQuery("select @a").Check(testkit.Rows("1")) - - tk.MustExec("use test") - tk.MustExec("create table t (i int)") - tk.MustExec("insert into t values (1)") - tk2 := testkit.NewTestKit(t, store) - tk2.MustExec("use test") - tk.MustQuery("select * from t").Check(testkit.Rows("1")) - tk.MustExec("do @a := (select * from t where i = 1)") - tk2.MustExec("insert into t values (2)") - tk.MustQuery("select * from t").Check(testkit.Rows("1", "2")) -} - -func TestDoWithAggFunc(t *testing.T) { - store, clean := testkit.CreateMockStore(t) - defer clean() - - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("DO sum(1)") - tk.MustExec("DO avg(@e+@f)") - tk.MustExec("DO GROUP_CONCAT(NULLIF(ELT(1, @e), 2.0) ORDER BY 1)") -} - -func TestSetRoleAllCorner(t *testing.T) { - store, clean := testkit.CreateMockStore(t) - defer clean() - // For user with no role, `SET ROLE ALL` should active - // a empty slice, rather than nil. - tk := testkit.NewTestKit(t, store) - tk.MustExec("create user set_role_all") - se, err := session.CreateSession4Test(store) - require.NoError(t, err) - defer se.Close() - require.True(t, se.Auth(&auth.UserIdentity{Username: "set_role_all", Hostname: "localhost"}, nil, nil)) - ctx := context.Background() - _, err = se.Execute(ctx, `set role all`) - require.NoError(t, err) - _, err = se.Execute(ctx, `select current_role`) - require.NoError(t, err) -} - -func TestCreateRole(t *testing.T) { - store, clean := testkit.CreateMockStore(t) - defer clean() - tk := testkit.NewTestKit(t, store) - tk.MustExec("create user testCreateRole;") - tk.MustExec("grant CREATE USER on *.* to testCreateRole;") - se, err := session.CreateSession4Test(store) - require.NoError(t, err) - defer se.Close() - require.True(t, se.Auth(&auth.UserIdentity{Username: "testCreateRole", Hostname: "localhost"}, nil, nil)) - - ctx := context.Background() - _, err = se.Execute(ctx, `create role test_create_role;`) - require.NoError(t, err) - tk.MustExec("revoke CREATE USER on *.* from testCreateRole;") - tk.MustExec("drop role test_create_role;") - tk.MustExec("grant CREATE ROLE on *.* to testCreateRole;") - _, err = se.Execute(ctx, `create role test_create_role;`) - require.NoError(t, err) - tk.MustExec("drop role test_create_role;") - _, err = se.Execute(ctx, `create user test_create_role;`) - require.Error(t, err) - tk.MustExec("drop user testCreateRole;") -} - -func TestDropRole(t *testing.T) { - store, clean := testkit.CreateMockStore(t) - defer clean() - tk := testkit.NewTestKit(t, store) - tk.MustExec("create user testCreateRole;") - tk.MustExec("create user test_create_role;") - tk.MustExec("grant CREATE USER on *.* to testCreateRole;") - se, err := session.CreateSession4Test(store) - require.NoError(t, err) - defer se.Close() - require.True(t, se.Auth(&auth.UserIdentity{Username: "testCreateRole", Hostname: "localhost"}, nil, nil)) - - ctx := context.Background() - _, err = se.Execute(ctx, `drop role test_create_role;`) - require.NoError(t, err) - tk.MustExec("revoke CREATE USER on *.* from testCreateRole;") - tk.MustExec("create role test_create_role;") - tk.MustExec("grant DROP ROLE on *.* to testCreateRole;") - _, err = se.Execute(ctx, `drop role test_create_role;`) - require.NoError(t, err) - tk.MustExec("create user test_create_role;") - _, err = se.Execute(ctx, `drop user test_create_role;`) - require.Error(t, err) - tk.MustExec("drop user testCreateRole;") - tk.MustExec("drop user test_create_role;") -} - -func TestTransaction(t *testing.T) { - store, clean := testkit.CreateMockStore(t) - defer clean() - tk := testkit.NewTestKit(t, store) - tk.MustExec("begin") - ctx := tk.Session() - require.True(t, inTxn(ctx)) - tk.MustExec("commit") - require.False(t, inTxn(ctx)) - tk.MustExec("begin") - require.True(t, inTxn(ctx)) - tk.MustExec("rollback") - require.False(t, inTxn(ctx)) - - // Test that begin implicitly commits previous transaction. - tk.MustExec("use test") - tk.MustExec("create table txn (a int)") - tk.MustExec("begin") - tk.MustExec("insert txn values (1)") - tk.MustExec("begin") - tk.MustExec("rollback") - tk.MustQuery("select * from txn").Check(testkit.Rows("1")) - - // Test that DDL implicitly commits previous transaction. - tk.MustExec("begin") - tk.MustExec("insert txn values (2)") - tk.MustExec("create table txn2 (a int)") - tk.MustExec("rollback") - tk.MustQuery("select * from txn").Check(testkit.Rows("1", "2")) -} - -func inTxn(ctx sessionctx.Context) bool { - return (ctx.GetSessionVars().Status & mysql.ServerStatusInTrans) > 0 -} - -func TestRole(t *testing.T) { - store, clean := testkit.CreateMockStore(t) - defer clean() - tk := testkit.NewTestKit(t, store) - // Make sure user test not in mysql.User. - result := tk.MustQuery(`SELECT authentication_string FROM mysql.User WHERE User="test" and Host="localhost"`) - result.Check(nil) - - // Test for DROP ROLE. - createRoleSQL := `CREATE ROLE 'test'@'localhost';` - tk.MustExec(createRoleSQL) - // Make sure user test in mysql.User. - result = tk.MustQuery(`SELECT authentication_string FROM mysql.User WHERE User="test" and Host="localhost"`) - result.Check(testkit.Rows(auth.EncodePassword(""))) - // Insert relation into mysql.role_edges - tk.MustExec("insert into mysql.role_edges (FROM_HOST,FROM_USER,TO_HOST,TO_USER) values ('localhost','test','%','root')") - tk.MustExec("insert into mysql.role_edges (FROM_HOST,FROM_USER,TO_HOST,TO_USER) values ('localhost','test1','localhost','test1')") - // Insert relation into mysql.default_roles - tk.MustExec("insert into mysql.default_roles (HOST,USER,DEFAULT_ROLE_HOST,DEFAULT_ROLE_USER) values ('%','root','localhost','test')") - tk.MustExec("insert into mysql.default_roles (HOST,USER,DEFAULT_ROLE_HOST,DEFAULT_ROLE_USER) values ('localhost','test','%','test1')") - - dropUserSQL := `DROP ROLE IF EXISTS 'test'@'localhost' ;` - _, err := tk.Exec(dropUserSQL) - require.NoError(t, err) - - result = tk.MustQuery(`SELECT authentication_string FROM mysql.User WHERE User="test" and Host="localhost"`) - result.Check(nil) - result = tk.MustQuery(`SELECT * FROM mysql.role_edges WHERE TO_USER="test" and TO_HOST="localhost"`) - result.Check(nil) - result = tk.MustQuery(`SELECT * FROM mysql.role_edges WHERE FROM_USER="test" and FROM_HOST="localhost"`) - result.Check(nil) - result = tk.MustQuery(`SELECT * FROM mysql.default_roles WHERE USER="test" and HOST="localhost"`) - result.Check(nil) - result = tk.MustQuery(`SELECT * FROM mysql.default_roles WHERE DEFAULT_ROLE_USER="test" and DEFAULT_ROLE_HOST="localhost"`) - result.Check(nil) - - // Test for GRANT ROLE - createRoleSQL = `CREATE ROLE 'r_1'@'localhost', 'r_2'@'localhost', 'r_3'@'localhost';` - tk.MustExec(createRoleSQL) - grantRoleSQL := `GRANT 'r_1'@'localhost' TO 'r_2'@'localhost';` - tk.MustExec(grantRoleSQL) - result = tk.MustQuery(`SELECT TO_USER FROM mysql.role_edges WHERE FROM_USER="r_1" and FROM_HOST="localhost"`) - result.Check(testkit.Rows("r_2")) - - grantRoleSQL = `GRANT 'r_1'@'localhost' TO 'r_3'@'localhost', 'r_4'@'localhost';` - _, err = tk.Exec(grantRoleSQL) - require.Error(t, err) - - // Test grant role for current_user(); - sessionVars := tk.Session().GetSessionVars() - originUser := sessionVars.User - sessionVars.User = &auth.UserIdentity{Username: "root", Hostname: "localhost", AuthUsername: "root", AuthHostname: "%"} - tk.MustExec("grant 'r_1'@'localhost' to current_user();") - tk.MustExec("revoke 'r_1'@'localhost' from 'root'@'%';") - sessionVars.User = originUser - - result = tk.MustQuery(`SELECT FROM_USER FROM mysql.role_edges WHERE TO_USER="r_3" and TO_HOST="localhost"`) - result.Check(nil) - - dropRoleSQL := `DROP ROLE IF EXISTS 'r_1'@'localhost' ;` - tk.MustExec(dropRoleSQL) - dropRoleSQL = `DROP ROLE IF EXISTS 'r_2'@'localhost' ;` - tk.MustExec(dropRoleSQL) - dropRoleSQL = `DROP ROLE IF EXISTS 'r_3'@'localhost' ;` - tk.MustExec(dropRoleSQL) - - // Test for revoke role - createRoleSQL = `CREATE ROLE 'test'@'localhost', r_1, r_2;` - tk.MustExec(createRoleSQL) - tk.MustExec("insert into mysql.role_edges (FROM_HOST,FROM_USER,TO_HOST,TO_USER) values ('localhost','test','%','root')") - tk.MustExec("insert into mysql.role_edges (FROM_HOST,FROM_USER,TO_HOST,TO_USER) values ('%','r_1','%','root')") - tk.MustExec("insert into mysql.role_edges (FROM_HOST,FROM_USER,TO_HOST,TO_USER) values ('%','r_2','%','root')") - tk.MustExec("flush privileges") - tk.MustExec("SET DEFAULT ROLE r_1, r_2 TO root") - _, err = tk.Exec("revoke test@localhost, r_1 from root;") - require.NoError(t, err) - _, err = tk.Exec("revoke `r_2`@`%` from root, u_2;") - require.Error(t, err) - _, err = tk.Exec("revoke `r_2`@`%` from root;") - require.NoError(t, err) - _, err = tk.Exec("revoke `r_1`@`%` from root;") - require.NoError(t, err) - result = tk.MustQuery(`SELECT * FROM mysql.default_roles WHERE DEFAULT_ROLE_USER="test" and DEFAULT_ROLE_HOST="localhost"`) - result.Check(nil) - result = tk.MustQuery(`SELECT * FROM mysql.default_roles WHERE USER="root" and HOST="%"`) - result.Check(nil) - dropRoleSQL = `DROP ROLE 'test'@'localhost', r_1, r_2;` - tk.MustExec(dropRoleSQL) - - ctx := tk.Session().(sessionctx.Context) - ctx.GetSessionVars().User = &auth.UserIdentity{Username: "test1", Hostname: "localhost"} - require.NotNil(t, tk.ExecToErr("SET ROLE role1, role2")) - tk.MustExec("SET ROLE ALL") - tk.MustExec("SET ROLE ALL EXCEPT role1, role2") - tk.MustExec("SET ROLE DEFAULT") - tk.MustExec("SET ROLE NONE") -} - -func TestRoleAdmin(t *testing.T) { - store, clean := testkit.CreateMockStore(t) - defer clean() - tk := testkit.NewTestKit(t, store) - tk.MustExec("CREATE USER 'testRoleAdmin';") - tk.MustExec("CREATE ROLE 'targetRole';") - - // Create a new session. - se, err := session.CreateSession4Test(store) - require.NoError(t, err) - defer se.Close() - require.True(t, se.Auth(&auth.UserIdentity{Username: "testRoleAdmin", Hostname: "localhost"}, nil, nil)) - - ctx := context.Background() - _, err = se.Execute(ctx, "GRANT `targetRole` TO `testRoleAdmin`;") - require.Error(t, err) - - tk.MustExec("GRANT SUPER ON *.* TO `testRoleAdmin`;") - _, err = se.Execute(ctx, "GRANT `targetRole` TO `testRoleAdmin`;") - require.NoError(t, err) - _, err = se.Execute(ctx, "REVOKE `targetRole` FROM `testRoleAdmin`;") - require.NoError(t, err) - - tk.MustExec("DROP USER 'testRoleAdmin';") - tk.MustExec("DROP ROLE 'targetRole';") -} - -func TestDefaultRole(t *testing.T) { - store, clean := testkit.CreateMockStore(t) - defer clean() - tk := testkit.NewTestKit(t, store) - - createRoleSQL := `CREATE ROLE r_1, r_2, r_3, u_1;` - tk.MustExec(createRoleSQL) - - tk.MustExec("insert into mysql.role_edges (FROM_HOST,FROM_USER,TO_HOST,TO_USER) values ('%','r_1','%','u_1')") - tk.MustExec("insert into mysql.role_edges (FROM_HOST,FROM_USER,TO_HOST,TO_USER) values ('%','r_2','%','u_1')") - - tk.MustExec("flush privileges;") - - setRoleSQL := `SET DEFAULT ROLE r_3 TO u_1;` - _, err := tk.Exec(setRoleSQL) - require.Error(t, err) - - setRoleSQL = `SET DEFAULT ROLE r_1 TO u_1000;` - _, err = tk.Exec(setRoleSQL) - require.Error(t, err) - - setRoleSQL = `SET DEFAULT ROLE r_1, r_3 TO u_1;` - _, err = tk.Exec(setRoleSQL) - require.Error(t, err) - - setRoleSQL = `SET DEFAULT ROLE r_1 TO u_1;` - _, err = tk.Exec(setRoleSQL) - require.NoError(t, err) - result := tk.MustQuery(`SELECT DEFAULT_ROLE_USER FROM mysql.default_roles WHERE USER="u_1"`) - result.Check(testkit.Rows("r_1")) - setRoleSQL = `SET DEFAULT ROLE r_2 TO u_1;` - _, err = tk.Exec(setRoleSQL) - require.NoError(t, err) - result = tk.MustQuery(`SELECT DEFAULT_ROLE_USER FROM mysql.default_roles WHERE USER="u_1"`) - result.Check(testkit.Rows("r_2")) - - setRoleSQL = `SET DEFAULT ROLE ALL TO u_1;` - _, err = tk.Exec(setRoleSQL) - require.NoError(t, err) - result = tk.MustQuery(`SELECT DEFAULT_ROLE_USER FROM mysql.default_roles WHERE USER="u_1"`) - result.Check(testkit.Rows("r_1", "r_2")) - - setRoleSQL = `SET DEFAULT ROLE NONE TO u_1;` - _, err = tk.Exec(setRoleSQL) - require.NoError(t, err) - result = tk.MustQuery(`SELECT DEFAULT_ROLE_USER FROM mysql.default_roles WHERE USER="u_1"`) - result.Check(nil) - - dropRoleSQL := `DROP USER r_1, r_2, r_3, u_1;` - tk.MustExec(dropRoleSQL) -} - -func TestSetDefaultRoleAll(t *testing.T) { - store, clean := testkit.CreateMockStore(t) - defer clean() - tk := testkit.NewTestKit(t, store) - tk.MustExec("create user test_all;") - se, err := session.CreateSession4Test(store) - require.NoError(t, err) - defer se.Close() - require.True(t, se.Auth(&auth.UserIdentity{Username: "test_all", Hostname: "localhost"}, nil, nil)) - - ctx := context.Background() - _, err = se.Execute(ctx, "set default role all to test_all;") - require.NoError(t, err) -} - -func TestUser(t *testing.T) { - store, clean := testkit.CreateMockStore(t) - defer clean() - tk := testkit.NewTestKit(t, store) - // Make sure user test not in mysql.User. - result := tk.MustQuery(`SELECT authentication_string FROM mysql.User WHERE User="test" and Host="localhost"`) - result.Check(nil) - // Create user test. - createUserSQL := `CREATE USER 'test'@'localhost' IDENTIFIED BY '123';` - tk.MustExec(createUserSQL) - // Make sure user test in mysql.User. - result = tk.MustQuery(`SELECT authentication_string FROM mysql.User WHERE User="test" and Host="localhost"`) - result.Check(testkit.Rows(auth.EncodePassword("123"))) - // Create duplicate user with IfNotExists will be success. - createUserSQL = `CREATE USER IF NOT EXISTS 'test'@'localhost' IDENTIFIED BY '123';` - tk.MustExec(createUserSQL) - - // Create duplicate user without IfNotExists will cause error. - createUserSQL = `CREATE USER 'test'@'localhost' IDENTIFIED BY '123';` - tk.MustGetErrCode(createUserSQL, mysql.ErrCannotUser) - createUserSQL = `CREATE USER IF NOT EXISTS 'test'@'localhost' IDENTIFIED BY '123';` - tk.MustExec(createUserSQL) - tk.MustQuery("show warnings").Check(testkit.RowsWithSep("|", "Note|3163|User 'test'@'localhost' already exists.")) - dropUserSQL := `DROP USER IF EXISTS 'test'@'localhost' ;` - tk.MustExec(dropUserSQL) - // Create user test. - createUserSQL = `CREATE USER 'test1'@'localhost';` - tk.MustExec(createUserSQL) - // Make sure user test in mysql.User. - result = tk.MustQuery(`SELECT authentication_string FROM mysql.User WHERE User="test1" and Host="localhost"`) - result.Check(testkit.Rows(auth.EncodePassword(""))) - dropUserSQL = `DROP USER IF EXISTS 'test1'@'localhost' ;` - tk.MustExec(dropUserSQL) - - // Test alter user. - createUserSQL = `CREATE USER 'test1'@'localhost' IDENTIFIED BY '123', 'test2'@'localhost' IDENTIFIED BY '123', 'test3'@'localhost' IDENTIFIED BY '123', 'test4'@'localhost' IDENTIFIED BY '123';` - tk.MustExec(createUserSQL) - alterUserSQL := `ALTER USER 'test1'@'localhost' IDENTIFIED BY '111';` - tk.MustExec(alterUserSQL) - result = tk.MustQuery(`SELECT authentication_string FROM mysql.User WHERE User="test1" and Host="localhost"`) - result.Check(testkit.Rows(auth.EncodePassword("111"))) - alterUserSQL = `ALTER USER 'test_not_exist'@'localhost' IDENTIFIED BY '111';` - tk.MustGetErrCode(alterUserSQL, mysql.ErrCannotUser) - alterUserSQL = `ALTER USER 'test1'@'localhost' IDENTIFIED BY '222', 'test_not_exist'@'localhost' IDENTIFIED BY '111';` - tk.MustGetErrCode(alterUserSQL, mysql.ErrCannotUser) - result = tk.MustQuery(`SELECT authentication_string FROM mysql.User WHERE User="test1" and Host="localhost"`) - result.Check(testkit.Rows(auth.EncodePassword("222"))) - alterUserSQL = `ALTER USER 'test4'@'localhost' IDENTIFIED WITH 'auth_socket';` - tk.MustExec(alterUserSQL) - result = tk.MustQuery(`SELECT plugin FROM mysql.User WHERE User="test4" and Host="localhost"`) - result.Check(testkit.Rows("auth_socket")) - - alterUserSQL = `ALTER USER IF EXISTS 'test2'@'localhost' IDENTIFIED BY '222', 'test_not_exist'@'localhost' IDENTIFIED BY '1';` - tk.MustExec(alterUserSQL) - tk.MustQuery("show warnings").Check(testkit.RowsWithSep("|", "Note|3162|User 'test_not_exist'@'localhost' does not exist.")) - result = tk.MustQuery(`SELECT authentication_string FROM mysql.User WHERE User="test2" and Host="localhost"`) - result.Check(testkit.Rows(auth.EncodePassword("222"))) - alterUserSQL = `ALTER USER IF EXISTS'test_not_exist'@'localhost' IDENTIFIED BY '1', 'test3'@'localhost' IDENTIFIED BY '333';` - tk.MustExec(alterUserSQL) - tk.MustQuery("show warnings").Check(testkit.RowsWithSep("|", "Note|3162|User 'test_not_exist'@'localhost' does not exist.")) - result = tk.MustQuery(`SELECT authentication_string FROM mysql.User WHERE User="test3" and Host="localhost"`) - result.Check(testkit.Rows(auth.EncodePassword("333"))) - - // Test alter user user(). - alterUserSQL = `ALTER USER USER() IDENTIFIED BY '1';` - _, err := tk.Exec(alterUserSQL) - require.Truef(t, terror.ErrorEqual(err, errors.New("Session user is empty")), "err %v", err) - sess, err := session.CreateSession4Test(store) - require.NoError(t, err) - tk.SetSession(sess) - ctx := tk.Session().(sessionctx.Context) - ctx.GetSessionVars().User = &auth.UserIdentity{Username: "test1", Hostname: "localhost", AuthHostname: "localhost"} - tk.MustExec(alterUserSQL) - result = tk.MustQuery(`SELECT authentication_string FROM mysql.User WHERE User="test1" and Host="localhost"`) - result.Check(testkit.Rows(auth.EncodePassword("1"))) - dropUserSQL = `DROP USER 'test1'@'localhost', 'test2'@'localhost', 'test3'@'localhost';` - tk.MustExec(dropUserSQL) - - // Test drop user if exists. - createUserSQL = `CREATE USER 'test1'@'localhost', 'test3'@'localhost';` - tk.MustExec(createUserSQL) - dropUserSQL = `DROP USER IF EXISTS 'test1'@'localhost', 'test2'@'localhost', 'test3'@'localhost' ;` - tk.MustExec(dropUserSQL) - tk.MustQuery("show warnings").Check(testkit.RowsWithSep("|", "Note|3162|User test2@localhost does not exist.")) - - // Test negative cases without IF EXISTS. - createUserSQL = `CREATE USER 'test1'@'localhost', 'test3'@'localhost';` - tk.MustExec(createUserSQL) - dropUserSQL = `DROP USER 'test1'@'localhost', 'test2'@'localhost', 'test3'@'localhost';` - tk.MustGetErrCode(dropUserSQL, mysql.ErrCannotUser) - dropUserSQL = `DROP USER 'test3'@'localhost';` - tk.MustExec(dropUserSQL) - dropUserSQL = `DROP USER 'test1'@'localhost';` - tk.MustExec(dropUserSQL) - // Test positive cases without IF EXISTS. - createUserSQL = `CREATE USER 'test1'@'localhost', 'test3'@'localhost';` - tk.MustExec(createUserSQL) - dropUserSQL = `DROP USER 'test1'@'localhost', 'test3'@'localhost';` - tk.MustExec(dropUserSQL) - - // Test 'identified by password' - createUserSQL = `CREATE USER 'test1'@'localhost' identified by password 'xxx';` - _, err = tk.Exec(createUserSQL) - require.Truef(t, terror.ErrorEqual(executor.ErrPasswordFormat, err), "err %v", err) - createUserSQL = `CREATE USER 'test1'@'localhost' identified by password '*3D56A309CD04FA2EEF181462E59011F075C89548';` - tk.MustExec(createUserSQL) - dropUserSQL = `DROP USER 'test1'@'localhost';` - tk.MustExec(dropUserSQL) - - // Test drop user meet error - _, err = tk.Exec(dropUserSQL) - require.Truef(t, terror.ErrorEqual(err, executor.ErrCannotUser.GenWithStackByArgs("DROP USER", "")), "err %v", err) - - createUserSQL = `CREATE USER 'test1'@'localhost'` - tk.MustExec(createUserSQL) - createUserSQL = `CREATE USER 'test2'@'localhost'` - tk.MustExec(createUserSQL) - - dropUserSQL = `DROP USER 'test1'@'localhost', 'test2'@'localhost', 'test3'@'localhost';` - _, err = tk.Exec(dropUserSQL) - require.Truef(t, terror.ErrorEqual(err, executor.ErrCannotUser.GenWithStackByArgs("DROP USER", "")), "err %v", err) - - // Close issue #17639 - dropUserSQL = `DROP USER if exists test3@'%'` - tk.MustExec(dropUserSQL) - createUserSQL = `create user test3@'%' IDENTIFIED WITH 'mysql_native_password' AS '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9';` - tk.MustExec(createUserSQL) - querySQL := `select authentication_string from mysql.user where user="test3" ;` - tk.MustQuery(querySQL).Check(testkit.Rows("*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9")) - alterUserSQL = `alter user test3@'%' IDENTIFIED WITH 'mysql_native_password' AS '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9';` - tk.MustExec(alterUserSQL) - tk.MustQuery(querySQL).Check(testkit.Rows("*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9")) - - createUserSQL = `create user userA@LOCALHOST;` - tk.MustExec(createUserSQL) - querySQL = `select user,host from mysql.user where user = 'userA';` - tk.MustQuery(querySQL).Check(testkit.Rows("userA localhost")) - - createUserSQL = `create user userB@DEMO.com;` - tk.MustExec(createUserSQL) - querySQL = `select user,host from mysql.user where user = 'userB';` - tk.MustQuery(querySQL).Check(testkit.Rows("userB demo.com")) - - createUserSQL = `create user userC@localhost;` - tk.MustExec(createUserSQL) - renameUserSQL := `rename user 'userC'@'localhost' to 'userD'@'Demo.com';` - tk.MustExec(renameUserSQL) - querySQL = `select user,host from mysql.user where user = 'userD';` - tk.MustQuery(querySQL).Check(testkit.Rows("userD demo.com")) - - createUserSQL = `create user foo@localhost identified with 'foobar';` - _, err = tk.Exec(createUserSQL) - require.Truef(t, terror.ErrorEqual(err, executor.ErrPluginIsNotLoaded), "err %v", err) - - tk.MustExec(`create user joan;`) - tk.MustExec(`create user sally;`) - tk.MustExec(`create role engineering;`) - tk.MustExec(`create role consultants;`) - tk.MustExec(`create role qa;`) - tk.MustExec(`grant engineering to joan;`) - tk.MustExec(`grant engineering to sally;`) - tk.MustExec(`grant engineering, consultants to joan, sally;`) - tk.MustExec(`grant qa to consultants;`) - tk.MustExec("CREATE ROLE `engineering`@`US`;") - tk.MustExec("create role `engineering`@`INDIA`;") - tk.MustExec("grant `engineering`@`US` TO `engineering`@`INDIA`;") - - tk.MustQuery("select user,host from mysql.user where user='engineering' and host = 'india'"). - Check(testkit.Rows("engineering india")) - tk.MustQuery("select user,host from mysql.user where user='engineering' and host = 'us'"). - Check(testkit.Rows("engineering us")) - - tk.MustExec("drop role engineering@INDIA;") - tk.MustExec("drop role engineering@US;") - - tk.MustQuery("select user from mysql.user where user='engineering' and host = 'india'").Check(testkit.Rows()) - tk.MustQuery("select user from mysql.user where user='engineering' and host = 'us'").Check(testkit.Rows()) -} - -func TestSetPwd(t *testing.T) { - store, clean := testkit.CreateMockStore(t) - defer clean() - tk := testkit.NewTestKit(t, store) - - createUserSQL := `CREATE USER 'testpwd'@'localhost' IDENTIFIED BY '';` - tk.MustExec(createUserSQL) - result := tk.MustQuery(`SELECT authentication_string FROM mysql.User WHERE User="testpwd" and Host="localhost"`) - result.Check(testkit.Rows("")) - - // set password for - tk.MustExec(`SET PASSWORD FOR 'testpwd'@'localhost' = 'password';`) - result = tk.MustQuery(`SELECT authentication_string FROM mysql.User WHERE User="testpwd" and Host="localhost"`) - result.Check(testkit.Rows(auth.EncodePassword("password"))) - - tk.MustExec(`CREATE USER 'testpwdsock'@'localhost' IDENTIFIED WITH 'auth_socket';`) - tk.MustExec(`SET PASSWORD FOR 'testpwdsock'@'localhost' = 'password';`) - result = tk.MustQuery("show warnings") - result.Check(testkit.Rows("Note 1699 SET PASSWORD has no significance for user 'testpwdsock'@'localhost' as authentication plugin does not support it.")) - - // set password - setPwdSQL := `SET PASSWORD = 'pwd'` - // Session user is empty. - _, err := tk.Exec(setPwdSQL) - require.Error(t, err) - sess, err := session.CreateSession4Test(store) - require.NoError(t, err) - tk.SetSession(sess) - ctx := tk.Session().(sessionctx.Context) - ctx.GetSessionVars().User = &auth.UserIdentity{Username: "testpwd1", Hostname: "localhost", AuthUsername: "testpwd1", AuthHostname: "localhost"} - // Session user doesn't exist. - _, err = tk.Exec(setPwdSQL) - require.Truef(t, terror.ErrorEqual(err, executor.ErrPasswordNoMatch), "err %v", err) - // normal - ctx.GetSessionVars().User = &auth.UserIdentity{Username: "testpwd", Hostname: "localhost", AuthUsername: "testpwd", AuthHostname: "localhost"} - tk.MustExec(setPwdSQL) - result = tk.MustQuery(`SELECT authentication_string FROM mysql.User WHERE User="testpwd" and Host="localhost"`) - result.Check(testkit.Rows(auth.EncodePassword("pwd"))) - -} - func TestKillStmt(t *testing.T) { store, clean := testkit.CreateMockStore(t) defer clean() @@ -631,459 +72,3 @@ func TestKillStmt(t *testing.T) { // remote kill is tested in `tests/globalkilltest` } - -func TestFlushPrivileges(t *testing.T) { - store, clean := testkit.CreateMockStore(t) - defer clean() - tk := testkit.NewTestKit(t, store) - - tk.MustExec(`CREATE USER 'testflush'@'localhost' IDENTIFIED BY '';`) - tk.MustExec(`UPDATE mysql.User SET Select_priv='Y' WHERE User="testflush" and Host="localhost"`) - - // Create a new session. - se, err := session.CreateSession4Test(store) - require.NoError(t, err) - defer se.Close() - require.True(t, se.Auth(&auth.UserIdentity{Username: "testflush", Hostname: "localhost"}, nil, nil)) - - ctx := context.Background() - // Before flush. - _, err = se.Execute(ctx, `SELECT authentication_string FROM mysql.User WHERE User="testflush" and Host="localhost"`) - require.Error(t, err) - - tk.MustExec("FLUSH PRIVILEGES") - - // After flush. - _, err = se.Execute(ctx, `SELECT authentication_string FROM mysql.User WHERE User="testflush" and Host="localhost"`) - require.NoError(t, err) - -} - -func TestFlushPrivilegesPanic(t *testing.T) { - // Run in a separate suite because this test need to set SkipGrantTable config. - store, err := mockstore.NewMockStore() - require.NoError(t, err) - defer func() { - err := store.Close() - require.NoError(t, err) - }() - - defer config.RestoreFunc()() - config.UpdateGlobal(func(conf *config.Config) { - conf.Security.SkipGrantTable = true - }) - - dom, err := session.BootstrapSession(store) - require.NoError(t, err) - defer dom.Close() - - tk := testkit.NewTestKit(t, store) - tk.MustExec("FLUSH PRIVILEGES") -} - -func TestDropPartitionStats(t *testing.T) { - store, dom, clean := testkit.CreateMockStoreAndDomain(t) - defer clean() - // Use the testSerialSuite to fix the unstable test - tk := testkit.NewTestKit(t, store) - tk.MustExec(`create database if not exists test_drop_gstats`) - tk.MustExec("use test_drop_gstats") - tk.MustExec("drop table if exists test_drop_gstats;") - tk.MustExec(`create table test_drop_gstats ( - a int, - key(a) -) -partition by range (a) ( - partition p0 values less than (10), - partition p1 values less than (20), - partition global values less than (30) -)`) - tk.MustExec("set @@tidb_analyze_version = 2") - tk.MustExec("set @@tidb_partition_prune_mode='dynamic'") - tk.MustExec("insert into test_drop_gstats values (1), (5), (11), (15), (21), (25)") - require.Nil(t, dom.StatsHandle().DumpStatsDeltaToKV(handle.DumpAll)) - - checkPartitionStats := func(names ...string) { - rs := tk.MustQuery("show stats_meta").Rows() - require.Equal(t, len(names), len(rs)) - for i := range names { - require.Equal(t, names[i], rs[i][2].(string)) - } - } - - tk.MustExec("analyze table test_drop_gstats") - checkPartitionStats("global", "p0", "p1", "global") - - tk.MustExec("drop stats test_drop_gstats partition p0") - checkPartitionStats("global", "p1", "global") - - err := tk.ExecToErr("drop stats test_drop_gstats partition abcde") - require.Error(t, err) - require.Equal(t, "can not found the specified partition name abcde in the table definition", err.Error()) - - tk.MustExec("drop stats test_drop_gstats partition global") - checkPartitionStats("global", "p1") - - tk.MustExec("drop stats test_drop_gstats global") - checkPartitionStats("p1") - - tk.MustExec("analyze table test_drop_gstats") - checkPartitionStats("global", "p0", "p1", "global") - - tk.MustExec("drop stats test_drop_gstats partition p0, p1, global") - checkPartitionStats("global") - - tk.MustExec("analyze table test_drop_gstats") - checkPartitionStats("global", "p0", "p1", "global") - - tk.MustExec("drop stats test_drop_gstats") - checkPartitionStats() -} - -func TestDropStats(t *testing.T) { - store, dom, clean := testkit.CreateMockStoreAndDomain(t) - defer clean() - testKit := testkit.NewTestKit(t, store) - testKit.MustExec("use test") - testKit.MustExec("create table t (c1 int, c2 int)") - is := dom.InfoSchema() - tbl, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) - require.NoError(t, err) - tableInfo := tbl.Meta() - h := dom.StatsHandle() - h.Clear() - testKit.MustExec("analyze table t") - statsTbl := h.GetTableStats(tableInfo) - require.False(t, statsTbl.Pseudo) - - testKit.MustExec("drop stats t") - require.Nil(t, h.Update(is)) - statsTbl = h.GetTableStats(tableInfo) - require.True(t, statsTbl.Pseudo) - - testKit.MustExec("analyze table t") - statsTbl = h.GetTableStats(tableInfo) - require.False(t, statsTbl.Pseudo) - - h.SetLease(1) - testKit.MustExec("drop stats t") - require.Nil(t, h.Update(is)) - statsTbl = h.GetTableStats(tableInfo) - require.True(t, statsTbl.Pseudo) - h.SetLease(0) -} - -func TestDropStatsFromKV(t *testing.T) { - store, clean := testkit.CreateMockStore(t) - defer clean() - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("create table t (c1 varchar(20), c2 varchar(20))") - tk.MustExec(`insert into t values("1","1"),("2","2"),("3","3"),("4","4")`) - tk.MustExec("insert into t select * from t") - tk.MustExec("insert into t select * from t") - tk.MustExec("analyze table t with 2 topn") - tblID := tk.MustQuery(`select tidb_table_id from information_schema.tables where table_name = "t" and table_schema = "test"`).Rows()[0][0].(string) - tk.MustQuery("select modify_count, count from mysql.stats_meta where table_id = " + tblID).Check( - testkit.Rows("0 16")) - tk.MustQuery("select hist_id from mysql.stats_histograms where table_id = " + tblID).Check( - testkit.Rows("1", "2")) - ret := tk.MustQuery("select hist_id, bucket_id from mysql.stats_buckets where table_id = " + tblID) - require.True(t, len(ret.Rows()) > 0) - ret = tk.MustQuery("select hist_id from mysql.stats_top_n where table_id = " + tblID) - require.True(t, len(ret.Rows()) > 0) - - tk.MustExec("drop stats t") - tk.MustQuery("select modify_count, count from mysql.stats_meta where table_id = " + tblID).Check( - testkit.Rows("0 16")) - tk.MustQuery("select hist_id from mysql.stats_histograms where table_id = " + tblID).Check( - testkit.Rows()) - tk.MustQuery("select hist_id, bucket_id from mysql.stats_buckets where table_id = " + tblID).Check( - testkit.Rows()) - tk.MustQuery("select hist_id from mysql.stats_top_n where table_id = " + tblID).Check( - testkit.Rows()) -} - -func TestFlushTables(t *testing.T) { - store, clean := testkit.CreateMockStore(t) - defer clean() - tk := testkit.NewTestKit(t, store) - - _, err := tk.Exec("FLUSH TABLES") - require.NoError(t, err) - - _, err = tk.Exec("FLUSH TABLES WITH READ LOCK") - require.Error(t, err) - -} - -func TestUseDB(t *testing.T) { - store, clean := testkit.CreateMockStore(t) - defer clean() - tk := testkit.NewTestKit(t, store) - _, err := tk.Exec("USE test") - require.NoError(t, err) - - _, err = tk.Exec("USE ``") - require.Truef(t, terror.ErrorEqual(core.ErrNoDB, err), "err %v", err) -} - -func TestStmtAutoNewTxn(t *testing.T) { - store, clean := testkit.CreateMockStore(t) - defer clean() - // 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 TestIssue9111(t *testing.T) { - store, clean := testkit.CreateMockStore(t) - defer clean() - // CREATE USER / DROP USER fails if admin doesn't have insert privilege on `mysql.user` table. - tk := testkit.NewTestKit(t, store) - tk.MustExec("create user 'user_admin'@'localhost';") - tk.MustExec("grant create user on *.* to 'user_admin'@'localhost';") - - // Create a new session. - se, err := session.CreateSession4Test(store) - require.NoError(t, err) - defer se.Close() - require.True(t, se.Auth(&auth.UserIdentity{Username: "user_admin", Hostname: "localhost"}, nil, nil)) - - ctx := context.Background() - _, err = se.Execute(ctx, `create user test_create_user`) - require.NoError(t, err) - _, err = se.Execute(ctx, `drop user test_create_user`) - require.NoError(t, err) - - tk.MustExec("revoke create user on *.* from 'user_admin'@'localhost';") - tk.MustExec("grant insert, delete on mysql.user to 'user_admin'@'localhost';") - - _, err = se.Execute(ctx, `create user test_create_user`) - require.NoError(t, err) - _, err = se.Execute(ctx, `drop user test_create_user`) - require.NoError(t, err) - - _, err = se.Execute(ctx, `create role test_create_user`) - require.NoError(t, err) - _, err = se.Execute(ctx, `drop role test_create_user`) - require.NoError(t, err) - - tk.MustExec("drop user 'user_admin'@'localhost';") -} - -func TestRoleAtomic(t *testing.T) { - store, clean := testkit.CreateMockStore(t) - defer clean() - tk := testkit.NewTestKit(t, store) - - tk.MustExec("create role r2;") - _, err := tk.Exec("create role r1, r2, r3") - require.Error(t, err) - // Check atomic create role. - result := tk.MustQuery(`SELECT user FROM mysql.User WHERE user in ('r1', 'r2', 'r3')`) - result.Check(testkit.Rows("r2")) - // Check atomic drop role. - _, err = tk.Exec("drop role r1, r2, r3") - require.Error(t, err) - result = tk.MustQuery(`SELECT user FROM mysql.User WHERE user in ('r1', 'r2', 'r3')`) - result.Check(testkit.Rows("r2")) - tk.MustExec("drop role r2;") -} - -func TestExtendedStatsPrivileges(t *testing.T) { - store, clean := testkit.CreateMockStore(t) - defer clean() - 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("create user 'u1'@'%'") - se, err := session.CreateSession4Test(store) - require.NoError(t, err) - defer se.Close() - require.True(t, se.Auth(&auth.UserIdentity{Username: "u1", Hostname: "%"}, nil, nil)) - ctx := context.Background() - _, err = se.Execute(ctx, "set session tidb_enable_extended_stats = on") - require.NoError(t, err) - _, err = se.Execute(ctx, "alter table test.t add stats_extended s1 correlation(a,b)") - require.Error(t, err) - require.Equal(t, "[planner:1142]ALTER command denied to user 'u1'@'%' for table 't'", err.Error()) - tk.MustExec("grant alter on test.* to 'u1'@'%'") - _, err = se.Execute(ctx, "alter table test.t add stats_extended s1 correlation(a,b)") - require.Error(t, err) - require.Equal(t, "[planner:1142]ADD STATS_EXTENDED command denied to user 'u1'@'%' for table 't'", err.Error()) - tk.MustExec("grant select on test.* to 'u1'@'%'") - _, err = se.Execute(ctx, "alter table test.t add stats_extended s1 correlation(a,b)") - require.Error(t, err) - require.Equal(t, "[planner:1142]ADD STATS_EXTENDED command denied to user 'u1'@'%' for table 'stats_extended'", err.Error()) - tk.MustExec("grant insert on mysql.stats_extended to 'u1'@'%'") - _, err = se.Execute(ctx, "alter table test.t add stats_extended s1 correlation(a,b)") - require.NoError(t, err) - - _, err = se.Execute(ctx, "use test") - require.NoError(t, err) - _, err = se.Execute(ctx, "alter table t drop stats_extended s1") - require.Error(t, err) - require.Equal(t, "[planner:1142]DROP STATS_EXTENDED command denied to user 'u1'@'%' for table 'stats_extended'", err.Error()) - tk.MustExec("grant update on mysql.stats_extended to 'u1'@'%'") - _, err = se.Execute(ctx, "alter table t drop stats_extended s1") - require.NoError(t, err) - tk.MustExec("drop user 'u1'@'%'") -} - -func TestIssue17247(t *testing.T) { - store, clean := testkit.CreateMockStore(t) - defer clean() - tk := testkit.NewTestKit(t, store) - tk.MustExec("create user 'issue17247'") - tk.MustExec("grant CREATE USER on *.* to 'issue17247'") - - tk1 := testkit.NewTestKit(t, store) - tk1.MustExec("use test") - require.True(t, tk1.Session().Auth(&auth.UserIdentity{Username: "issue17247", Hostname: "%"}, nil, nil)) - tk1.MustExec("ALTER USER USER() IDENTIFIED BY 'xxx'") - tk1.MustExec("ALTER USER CURRENT_USER() IDENTIFIED BY 'yyy'") - tk1.MustExec("ALTER USER CURRENT_USER IDENTIFIED BY 'zzz'") - tk.MustExec("ALTER USER 'issue17247'@'%' IDENTIFIED BY 'kkk'") - tk.MustExec("ALTER USER 'issue17247'@'%' IDENTIFIED BY PASSWORD '*B50FBDB37F1256824274912F2A1CE648082C3F1F'") - // Wrong grammar - _, err := tk1.Exec("ALTER USER USER() IDENTIFIED BY PASSWORD '*B50FBDB37F1256824274912F2A1CE648082C3F1F'") - require.Error(t, err) -} - -// Close issue #23649. -// See https://github.com/pingcap/tidb/issues/23649 -func TestIssue23649(t *testing.T) { - store, clean := testkit.CreateMockStore(t) - defer clean() - tk := testkit.NewTestKit(t, store) - tk.MustExec("DROP USER IF EXISTS issue23649;") - tk.MustExec("CREATE USER issue23649;") - _, err := tk.Exec("GRANT bogusrole to issue23649;") - require.Equal(t, "[executor:3523]Unknown authorization ID `bogusrole`@`%`", err.Error()) - _, err = tk.Exec("GRANT bogusrole to nonexisting;") - require.Equal(t, "[executor:3523]Unknown authorization ID `bogusrole`@`%`", err.Error()) -} - -func TestSetCurrentUserPwd(t *testing.T) { - store, clean := testkit.CreateMockStore(t) - defer clean() - tk := testkit.NewTestKit(t, store) - tk.MustExec("CREATE USER issue28534;") - defer func() { - tk.MustExec("DROP USER IF EXISTS issue28534;") - }() - - require.True(t, tk.Session().Auth(&auth.UserIdentity{Username: "issue28534", Hostname: "localhost", CurrentUser: true, AuthUsername: "issue28534", AuthHostname: "%"}, nil, nil)) - tk.MustExec(`SET PASSWORD FOR CURRENT_USER() = "43582eussi"`) - - require.True(t, tk.Session().Auth(&auth.UserIdentity{Username: "root", Hostname: "%"}, nil, nil)) - result := tk.MustQuery(`SELECT authentication_string FROM mysql.User WHERE User="issue28534"`) - result.Check(testkit.Rows(auth.EncodePassword("43582eussi"))) -} - -func TestShowGrantsAfterDropRole(t *testing.T) { - store, clean := testkit.CreateMockStore(t) - defer clean() - tk := testkit.NewTestKit(t, store) - tk.MustExec("CREATE USER u29473") - defer tk.MustExec("DROP USER IF EXISTS u29473") - - tk.MustExec("CREATE ROLE r29473") - tk.MustExec("GRANT r29473 TO u29473") - tk.MustExec("GRANT CREATE USER ON *.* TO u29473") - - tk.Session().Auth(&auth.UserIdentity{Username: "u29473", Hostname: "%"}, nil, nil) - tk.MustExec("SET ROLE r29473") - tk.MustExec("DROP ROLE r29473") - tk.MustQuery("SHOW GRANTS").Check(testkit.Rows("GRANT CREATE USER ON *.* TO 'u29473'@'%'")) -} - -func TestDropRoleAfterRevoke(t *testing.T) { - store, clean := testkit.CreateMockStore(t) - defer clean() - // issue 29781 - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test;") - tk.Session().Auth(&auth.UserIdentity{Username: "root", Hostname: "%"}, nil, nil) - - tk.MustExec("create role r1, r2, r3;") - defer tk.MustExec("drop role if exists r1, r2, r3;") - tk.MustExec("grant r1,r2,r3 to current_user();") - tk.MustExec("set role all;") - tk.MustExec("revoke r1, r3 from root;") - tk.MustExec("drop role r1;") -} - -func TestUserWithSetNames(t *testing.T) { - store, clean := testkit.CreateMockStore(t) - defer clean() - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test;") - tk.MustExec("set names gbk;") - - tk.MustExec("drop user if exists '\xd2\xbb'@'localhost';") - tk.MustExec("create user '\xd2\xbb'@'localhost' IDENTIFIED BY '\xd2\xbb';") - - result := tk.MustQuery("SELECT authentication_string FROM mysql.User WHERE User='\xd2\xbb' and Host='localhost';") - result.Check(testkit.Rows(auth.EncodePassword("一"))) - - tk.MustExec("ALTER USER '\xd2\xbb'@'localhost' IDENTIFIED BY '\xd2\xbb\xd2\xbb';") - result = tk.MustQuery("SELECT authentication_string FROM mysql.User WHERE User='\xd2\xbb' and Host='localhost';") - result.Check(testkit.Rows(auth.EncodePassword("一一"))) - - tk.MustExec("RENAME USER '\xd2\xbb'@'localhost' to '\xd2\xbb'") - - tk.MustExec("drop user '\xd2\xbb';") -} - -func TestStatementsCauseImplicitCommit(t *testing.T) { - // Test some of the implicit commit statements. - // See https://dev.mysql.com/doc/refman/5.7/en/implicit-commit.html - store, clean := testkit.CreateMockStore(t) - defer clean() - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test;") - tk.MustExec("create table ic (id int primary key)") - - cases := []string{ - "create table xx (id int)", - "create user 'xx'@'127.0.0.1'", - "grant SELECT on test.ic to 'xx'@'127.0.0.1'", - "flush privileges", - "analyze table ic", - } - for i, sql := range cases { - tk.MustExec("begin") - tk.MustExec("insert into ic values (?)", i) - tk.MustExec(sql) - tk.MustQuery("select * from ic where id = ?", i).Check(testkit.Rows(strconv.FormatInt(int64(i), 10))) - // Clean up data - tk.MustExec("delete from ic") - } -} diff --git a/executor/simpletest/BUILD.bazel b/executor/simpletest/BUILD.bazel new file mode 100644 index 0000000000000..d3edfa0622930 --- /dev/null +++ b/executor/simpletest/BUILD.bazel @@ -0,0 +1,28 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_test") + +go_test( + name = "simpletest_test", + srcs = [ + "main_test.go", + "simple_test.go", + ], + flaky = True, + shard_count = 30, + deps = [ + "//config", + "//executor", + "//parser/auth", + "//parser/model", + "//parser/mysql", + "//parser/terror", + "//planner/core", + "//session", + "//sessionctx", + "//statistics/handle", + "//store/mockstore", + "//testkit", + "@com_github_pingcap_errors//:errors", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/executor/simpletest/main_test.go b/executor/simpletest/main_test.go new file mode 100644 index 0000000000000..cbb53ea24757f --- /dev/null +++ b/executor/simpletest/main_test.go @@ -0,0 +1,29 @@ +// 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 simpletest + +import ( + "testing" + + "go.uber.org/goleak" +) + +func TestMain(m *testing.M) { + opts := []goleak.Option{ + goleak.IgnoreTopFunction("github.com/golang/glog.(*loggingT).flushDaemon"), + goleak.IgnoreTopFunction("go.opencensus.io/stats/view.(*worker).start"), + } + goleak.VerifyTestMain(m, opts...) +} diff --git a/executor/simpletest/simple_test.go b/executor/simpletest/simple_test.go new file mode 100644 index 0000000000000..5cbeb2e8b5da4 --- /dev/null +++ b/executor/simpletest/simple_test.go @@ -0,0 +1,1040 @@ +// 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 simpletest + +import ( + "context" + "strconv" + "testing" + + "github.com/pingcap/errors" + "github.com/pingcap/tidb/config" + "github.com/pingcap/tidb/executor" + "github.com/pingcap/tidb/parser/auth" + "github.com/pingcap/tidb/parser/model" + "github.com/pingcap/tidb/parser/mysql" + "github.com/pingcap/tidb/parser/terror" + "github.com/pingcap/tidb/planner/core" + "github.com/pingcap/tidb/session" + "github.com/pingcap/tidb/sessionctx" + "github.com/pingcap/tidb/statistics/handle" + "github.com/pingcap/tidb/store/mockstore" + "github.com/pingcap/tidb/testkit" + "github.com/stretchr/testify/require" +) + +func TestFlushTables(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + tk := testkit.NewTestKit(t, store) + + tk.MustExec("FLUSH TABLES") + err := tk.ExecToErr("FLUSH TABLES WITH READ LOCK") + require.Error(t, err) +} + +func TestUseDB(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + tk := testkit.NewTestKit(t, store) + tk.MustExec("USE test") + err := tk.ExecToErr("USE ``") + require.Truef(t, terror.ErrorEqual(core.ErrNoDB, err), "err %v", err) +} + +func TestStmtAutoNewTxn(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + // 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 TestIssue9111(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + // CREATE USER / DROP USER fails if admin doesn't have insert privilege on `mysql.user` table. + tk := testkit.NewTestKit(t, store) + tk.MustExec("create user 'user_admin'@'localhost';") + tk.MustExec("grant create user on *.* to 'user_admin'@'localhost';") + + // Create a new session. + se, err := session.CreateSession4Test(store) + require.NoError(t, err) + defer se.Close() + require.True(t, se.Auth(&auth.UserIdentity{Username: "user_admin", Hostname: "localhost"}, nil, nil)) + + ctx := context.Background() + _, err = se.Execute(ctx, `create user test_create_user`) + require.NoError(t, err) + _, err = se.Execute(ctx, `drop user test_create_user`) + require.NoError(t, err) + + tk.MustExec("revoke create user on *.* from 'user_admin'@'localhost';") + tk.MustExec("grant insert, delete on mysql.user to 'user_admin'@'localhost';") + + _, err = se.Execute(ctx, `create user test_create_user`) + require.NoError(t, err) + _, err = se.Execute(ctx, `drop user test_create_user`) + require.NoError(t, err) + + _, err = se.Execute(ctx, `create role test_create_user`) + require.NoError(t, err) + _, err = se.Execute(ctx, `drop role test_create_user`) + require.NoError(t, err) + + tk.MustExec("drop user 'user_admin'@'localhost';") +} + +func TestRoleAtomic(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + tk := testkit.NewTestKit(t, store) + + tk.MustExec("create role r2;") + err := tk.ExecToErr("create role r1, r2, r3") + require.Error(t, err) + // Check atomic create role. + result := tk.MustQuery(`SELECT user FROM mysql.User WHERE user in ('r1', 'r2', 'r3')`) + result.Check(testkit.Rows("r2")) + // Check atomic drop role. + err = tk.ExecToErr("drop role r1, r2, r3") + require.Error(t, err) + result = tk.MustQuery(`SELECT user FROM mysql.User WHERE user in ('r1', 'r2', 'r3')`) + result.Check(testkit.Rows("r2")) + tk.MustExec("drop role r2;") +} + +func TestExtendedStatsPrivileges(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + 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("create user 'u1'@'%'") + se, err := session.CreateSession4Test(store) + require.NoError(t, err) + defer se.Close() + require.True(t, se.Auth(&auth.UserIdentity{Username: "u1", Hostname: "%"}, nil, nil)) + ctx := context.Background() + _, err = se.Execute(ctx, "set session tidb_enable_extended_stats = on") + require.NoError(t, err) + _, err = se.Execute(ctx, "alter table test.t add stats_extended s1 correlation(a,b)") + require.Error(t, err) + require.Equal(t, "[planner:1142]ALTER command denied to user 'u1'@'%' for table 't'", err.Error()) + tk.MustExec("grant alter on test.* to 'u1'@'%'") + _, err = se.Execute(ctx, "alter table test.t add stats_extended s1 correlation(a,b)") + require.Error(t, err) + require.Equal(t, "[planner:1142]ADD STATS_EXTENDED command denied to user 'u1'@'%' for table 't'", err.Error()) + tk.MustExec("grant select on test.* to 'u1'@'%'") + _, err = se.Execute(ctx, "alter table test.t add stats_extended s1 correlation(a,b)") + require.Error(t, err) + require.Equal(t, "[planner:1142]ADD STATS_EXTENDED command denied to user 'u1'@'%' for table 'stats_extended'", err.Error()) + tk.MustExec("grant insert on mysql.stats_extended to 'u1'@'%'") + _, err = se.Execute(ctx, "alter table test.t add stats_extended s1 correlation(a,b)") + require.NoError(t, err) + + _, err = se.Execute(ctx, "use test") + require.NoError(t, err) + _, err = se.Execute(ctx, "alter table t drop stats_extended s1") + require.Error(t, err) + require.Equal(t, "[planner:1142]DROP STATS_EXTENDED command denied to user 'u1'@'%' for table 'stats_extended'", err.Error()) + tk.MustExec("grant update on mysql.stats_extended to 'u1'@'%'") + _, err = se.Execute(ctx, "alter table t drop stats_extended s1") + require.NoError(t, err) + tk.MustExec("drop user 'u1'@'%'") +} + +func TestIssue17247(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + tk := testkit.NewTestKit(t, store) + tk.MustExec("create user 'issue17247'") + tk.MustExec("grant CREATE USER on *.* to 'issue17247'") + + tk1 := testkit.NewTestKit(t, store) + tk1.MustExec("use test") + require.True(t, tk1.Session().Auth(&auth.UserIdentity{Username: "issue17247", Hostname: "%"}, nil, nil)) + tk1.MustExec("ALTER USER USER() IDENTIFIED BY 'xxx'") + tk1.MustExec("ALTER USER CURRENT_USER() IDENTIFIED BY 'yyy'") + tk1.MustExec("ALTER USER CURRENT_USER IDENTIFIED BY 'zzz'") + tk.MustExec("ALTER USER 'issue17247'@'%' IDENTIFIED BY 'kkk'") + tk.MustExec("ALTER USER 'issue17247'@'%' IDENTIFIED BY PASSWORD '*B50FBDB37F1256824274912F2A1CE648082C3F1F'") + // Wrong grammar + _, err := tk1.Exec("ALTER USER USER() IDENTIFIED BY PASSWORD '*B50FBDB37F1256824274912F2A1CE648082C3F1F'") + require.Error(t, err) +} + +// Close issue #23649. +// See https://github.com/pingcap/tidb/issues/23649 +func TestIssue23649(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + tk := testkit.NewTestKit(t, store) + tk.MustExec("DROP USER IF EXISTS issue23649;") + tk.MustExec("CREATE USER issue23649;") + err := tk.ExecToErr("GRANT bogusrole to issue23649;") + require.Equal(t, "[executor:3523]Unknown authorization ID `bogusrole`@`%`", err.Error()) + err = tk.ExecToErr("GRANT bogusrole to nonexisting;") + require.Equal(t, "[executor:3523]Unknown authorization ID `bogusrole`@`%`", err.Error()) +} + +func TestSetCurrentUserPwd(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + tk := testkit.NewTestKit(t, store) + tk.MustExec("CREATE USER issue28534;") + defer func() { + tk.MustExec("DROP USER IF EXISTS issue28534;") + }() + + require.True(t, tk.Session().Auth(&auth.UserIdentity{Username: "issue28534", Hostname: "localhost", CurrentUser: true, AuthUsername: "issue28534", AuthHostname: "%"}, nil, nil)) + tk.MustExec(`SET PASSWORD FOR CURRENT_USER() = "43582eussi"`) + + require.True(t, tk.Session().Auth(&auth.UserIdentity{Username: "root", Hostname: "%"}, nil, nil)) + result := tk.MustQuery(`SELECT authentication_string FROM mysql.User WHERE User="issue28534"`) + result.Check(testkit.Rows(auth.EncodePassword("43582eussi"))) +} + +func TestShowGrantsAfterDropRole(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + tk := testkit.NewTestKit(t, store) + tk.MustExec("CREATE USER u29473") + defer tk.MustExec("DROP USER IF EXISTS u29473") + + tk.MustExec("CREATE ROLE r29473") + tk.MustExec("GRANT r29473 TO u29473") + tk.MustExec("GRANT CREATE USER ON *.* TO u29473") + + tk.Session().Auth(&auth.UserIdentity{Username: "u29473", Hostname: "%"}, nil, nil) + tk.MustExec("SET ROLE r29473") + tk.MustExec("DROP ROLE r29473") + tk.MustQuery("SHOW GRANTS").Check(testkit.Rows("GRANT CREATE USER ON *.* TO 'u29473'@'%'")) +} + +func TestPrivilegesAfterDropUser(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t1(id int, v int)") + defer tk.MustExec("drop table t1") + + tk.MustExec("CREATE USER u1 require ssl") + defer tk.MustExec("DROP USER IF EXISTS u1") + + tk.MustExec("GRANT CREATE ON test.* TO u1") + tk.MustExec("GRANT UPDATE ON test.t1 TO u1") + tk.MustExec("GRANT SYSTEM_VARIABLES_ADMIN ON *.* TO u1") + tk.MustExec("GRANT SELECT(v), UPDATE(v) on test.t1 TO u1") + + tk.MustQuery("SELECT COUNT(1) FROM mysql.global_grants WHERE USER='u1' AND HOST='%'").Check(testkit.Rows("1")) + tk.MustQuery("SELECT COUNT(1) FROM mysql.global_priv WHERE USER='u1' AND HOST='%'").Check(testkit.Rows("1")) + tk.MustQuery("SELECT COUNT(1) FROM mysql.tables_priv WHERE USER='u1' AND HOST='%'").Check(testkit.Rows("1")) + tk.MustQuery("SELECT COUNT(1) FROM mysql.columns_priv WHERE USER='u1' AND HOST='%'").Check(testkit.Rows("1")) + tk.Session().Auth(&auth.UserIdentity{Username: "root", Hostname: "%"}, nil, nil) + tk.MustQuery("SHOW GRANTS FOR u1").Check(testkit.Rows( + "GRANT USAGE ON *.* TO 'u1'@'%'", + "GRANT CREATE ON test.* TO 'u1'@'%'", + "GRANT UPDATE ON test.t1 TO 'u1'@'%'", + "GRANT SELECT(v), UPDATE(v) ON test.t1 TO 'u1'@'%'", + "GRANT SYSTEM_VARIABLES_ADMIN ON *.* TO 'u1'@'%'", + )) + + tk.MustExec("DROP USER u1") + err := tk.QueryToErr("SHOW GRANTS FOR u1") + require.Equal(t, "[privilege:1141]There is no such grant defined for user 'u1' on host '%'", err.Error()) + tk.MustQuery("SELECT * FROM mysql.global_grants WHERE USER='u1' AND HOST='%'").Check(testkit.Rows()) + tk.MustQuery("SELECT * FROM mysql.global_priv WHERE USER='u1' AND HOST='%'").Check(testkit.Rows()) + tk.MustQuery("SELECT * FROM mysql.tables_priv WHERE USER='u1' AND HOST='%'").Check(testkit.Rows()) + tk.MustQuery("SELECT * FROM mysql.columns_priv WHERE USER='u1' AND HOST='%'").Check(testkit.Rows()) +} + +func TestDropRoleAfterRevoke(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + // issue 29781 + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test;") + tk.Session().Auth(&auth.UserIdentity{Username: "root", Hostname: "%"}, nil, nil) + + tk.MustExec("create role r1, r2, r3;") + defer tk.MustExec("drop role if exists r1, r2, r3;") + tk.MustExec("grant r1,r2,r3 to current_user();") + tk.MustExec("set role all;") + tk.MustExec("revoke r1, r3 from root;") + tk.MustExec("drop role r1;") +} + +func TestUserWithSetNames(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test;") + tk.MustExec("set names gbk;") + + tk.MustExec("drop user if exists '\xd2\xbb'@'localhost';") + tk.MustExec("create user '\xd2\xbb'@'localhost' IDENTIFIED BY '\xd2\xbb';") + + result := tk.MustQuery("SELECT authentication_string FROM mysql.User WHERE User='\xd2\xbb' and Host='localhost';") + result.Check(testkit.Rows(auth.EncodePassword("一"))) + + tk.MustExec("ALTER USER '\xd2\xbb'@'localhost' IDENTIFIED BY '\xd2\xbb\xd2\xbb';") + result = tk.MustQuery("SELECT authentication_string FROM mysql.User WHERE User='\xd2\xbb' and Host='localhost';") + result.Check(testkit.Rows(auth.EncodePassword("一一"))) + + tk.MustExec("RENAME USER '\xd2\xbb'@'localhost' to '\xd2\xbb'") + + tk.MustExec("drop user '\xd2\xbb';") +} + +func TestStatementsCauseImplicitCommit(t *testing.T) { + // Test some of the implicit commit statements. + // See https://dev.mysql.com/doc/refman/5.7/en/implicit-commit.html + store, clean := testkit.CreateMockStore(t) + defer clean() + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test;") + tk.MustExec("create table ic (id int primary key)") + + cases := []string{ + "create table xx (id int)", + "create user 'xx'@'127.0.0.1'", + "grant SELECT on test.ic to 'xx'@'127.0.0.1'", + "flush privileges", + "analyze table ic", + } + for i, sql := range cases { + tk.MustExec("begin") + tk.MustExec("insert into ic values (?)", i) + tk.MustExec(sql) + tk.MustQuery("select * from ic where id = ?", i).Check(testkit.Rows(strconv.FormatInt(int64(i), 10))) + // Clean up data + tk.MustExec("delete from ic") + } +} + +func TestDo(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + tk := testkit.NewTestKit(t, store) + tk.MustExec("do 1, @a:=1") + tk.MustQuery("select @a").Check(testkit.Rows("1")) + + tk.MustExec("use test") + tk.MustExec("create table t (i int)") + tk.MustExec("insert into t values (1)") + tk2 := testkit.NewTestKit(t, store) + tk2.MustExec("use test") + tk.MustQuery("select * from t").Check(testkit.Rows("1")) + tk.MustExec("do @a := (select * from t where i = 1)") + tk2.MustExec("insert into t values (2)") + tk.MustQuery("select * from t").Check(testkit.Rows("1", "2")) +} + +func TestDoWithAggFunc(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("DO sum(1)") + tk.MustExec("DO avg(@e+@f)") + tk.MustExec("DO GROUP_CONCAT(NULLIF(ELT(1, @e), 2.0) ORDER BY 1)") +} + +func TestSetRoleAllCorner(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + // For user with no role, `SET ROLE ALL` should active + // a empty slice, rather than nil. + tk := testkit.NewTestKit(t, store) + tk.MustExec("create user set_role_all") + se, err := session.CreateSession4Test(store) + require.NoError(t, err) + defer se.Close() + require.True(t, se.Auth(&auth.UserIdentity{Username: "set_role_all", Hostname: "localhost"}, nil, nil)) + ctx := context.Background() + _, err = se.Execute(ctx, `set role all`) + require.NoError(t, err) + _, err = se.Execute(ctx, `select current_role`) + require.NoError(t, err) +} + +func TestCreateRole(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + tk := testkit.NewTestKit(t, store) + tk.MustExec("create user testCreateRole;") + tk.MustExec("grant CREATE USER on *.* to testCreateRole;") + se, err := session.CreateSession4Test(store) + require.NoError(t, err) + defer se.Close() + require.True(t, se.Auth(&auth.UserIdentity{Username: "testCreateRole", Hostname: "localhost"}, nil, nil)) + + ctx := context.Background() + _, err = se.Execute(ctx, `create role test_create_role;`) + require.NoError(t, err) + tk.MustExec("revoke CREATE USER on *.* from testCreateRole;") + tk.MustExec("drop role test_create_role;") + tk.MustExec("grant CREATE ROLE on *.* to testCreateRole;") + _, err = se.Execute(ctx, `create role test_create_role;`) + require.NoError(t, err) + tk.MustExec("drop role test_create_role;") + _, err = se.Execute(ctx, `create user test_create_role;`) + require.Error(t, err) + tk.MustExec("drop user testCreateRole;") +} + +func TestDropRole(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + tk := testkit.NewTestKit(t, store) + tk.MustExec("create user testCreateRole;") + tk.MustExec("create user test_create_role;") + tk.MustExec("grant CREATE USER on *.* to testCreateRole;") + se, err := session.CreateSession4Test(store) + require.NoError(t, err) + defer se.Close() + require.True(t, se.Auth(&auth.UserIdentity{Username: "testCreateRole", Hostname: "localhost"}, nil, nil)) + + ctx := context.Background() + _, err = se.Execute(ctx, `drop role test_create_role;`) + require.NoError(t, err) + tk.MustExec("revoke CREATE USER on *.* from testCreateRole;") + tk.MustExec("create role test_create_role;") + tk.MustExec("grant DROP ROLE on *.* to testCreateRole;") + _, err = se.Execute(ctx, `drop role test_create_role;`) + require.NoError(t, err) + tk.MustExec("create user test_create_role;") + _, err = se.Execute(ctx, `drop user test_create_role;`) + require.Error(t, err) + tk.MustExec("drop user testCreateRole;") + tk.MustExec("drop user test_create_role;") +} + +func TestTransaction(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + tk := testkit.NewTestKit(t, store) + tk.MustExec("begin") + ctx := tk.Session() + require.True(t, inTxn(ctx)) + tk.MustExec("commit") + require.False(t, inTxn(ctx)) + tk.MustExec("begin") + require.True(t, inTxn(ctx)) + tk.MustExec("rollback") + require.False(t, inTxn(ctx)) + + // Test that begin implicitly commits previous transaction. + tk.MustExec("use test") + tk.MustExec("create table txn (a int)") + tk.MustExec("begin") + tk.MustExec("insert txn values (1)") + tk.MustExec("begin") + tk.MustExec("rollback") + tk.MustQuery("select * from txn").Check(testkit.Rows("1")) + + // Test that DDL implicitly commits previous transaction. + tk.MustExec("begin") + tk.MustExec("insert txn values (2)") + tk.MustExec("create table txn2 (a int)") + tk.MustExec("rollback") + tk.MustQuery("select * from txn").Check(testkit.Rows("1", "2")) +} + +func inTxn(ctx sessionctx.Context) bool { + return (ctx.GetSessionVars().Status & mysql.ServerStatusInTrans) > 0 +} + +func TestRole(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + tk := testkit.NewTestKit(t, store) + // Make sure user test not in mysql.User. + result := tk.MustQuery(`SELECT authentication_string FROM mysql.User WHERE User="test" and Host="localhost"`) + result.Check(nil) + + // Test for DROP ROLE. + createRoleSQL := `CREATE ROLE 'test'@'localhost';` + tk.MustExec(createRoleSQL) + // Make sure user test in mysql.User. + result = tk.MustQuery(`SELECT authentication_string FROM mysql.User WHERE User="test" and Host="localhost"`) + result.Check(testkit.Rows(auth.EncodePassword(""))) + // Insert relation into mysql.role_edges + tk.MustExec("insert into mysql.role_edges (FROM_HOST,FROM_USER,TO_HOST,TO_USER) values ('localhost','test','%','root')") + tk.MustExec("insert into mysql.role_edges (FROM_HOST,FROM_USER,TO_HOST,TO_USER) values ('localhost','test1','localhost','test1')") + // Insert relation into mysql.default_roles + tk.MustExec("insert into mysql.default_roles (HOST,USER,DEFAULT_ROLE_HOST,DEFAULT_ROLE_USER) values ('%','root','localhost','test')") + tk.MustExec("insert into mysql.default_roles (HOST,USER,DEFAULT_ROLE_HOST,DEFAULT_ROLE_USER) values ('localhost','test','%','test1')") + + dropUserSQL := `DROP ROLE IF EXISTS 'test'@'localhost' ;` + err := tk.ExecToErr(dropUserSQL) + require.NoError(t, err) + + result = tk.MustQuery(`SELECT authentication_string FROM mysql.User WHERE User="test" and Host="localhost"`) + result.Check(nil) + result = tk.MustQuery(`SELECT * FROM mysql.role_edges WHERE TO_USER="test" and TO_HOST="localhost"`) + result.Check(nil) + result = tk.MustQuery(`SELECT * FROM mysql.role_edges WHERE FROM_USER="test" and FROM_HOST="localhost"`) + result.Check(nil) + result = tk.MustQuery(`SELECT * FROM mysql.default_roles WHERE USER="test" and HOST="localhost"`) + result.Check(nil) + result = tk.MustQuery(`SELECT * FROM mysql.default_roles WHERE DEFAULT_ROLE_USER="test" and DEFAULT_ROLE_HOST="localhost"`) + result.Check(nil) + + // Test for GRANT ROLE + createRoleSQL = `CREATE ROLE 'r_1'@'localhost', 'r_2'@'localhost', 'r_3'@'localhost';` + tk.MustExec(createRoleSQL) + grantRoleSQL := `GRANT 'r_1'@'localhost' TO 'r_2'@'localhost';` + tk.MustExec(grantRoleSQL) + result = tk.MustQuery(`SELECT TO_USER FROM mysql.role_edges WHERE FROM_USER="r_1" and FROM_HOST="localhost"`) + result.Check(testkit.Rows("r_2")) + + grantRoleSQL = `GRANT 'r_1'@'localhost' TO 'r_3'@'localhost', 'r_4'@'localhost';` + err = tk.ExecToErr(grantRoleSQL) + require.Error(t, err) + + // Test grant role for current_user(); + sessionVars := tk.Session().GetSessionVars() + originUser := sessionVars.User + sessionVars.User = &auth.UserIdentity{Username: "root", Hostname: "localhost", AuthUsername: "root", AuthHostname: "%"} + tk.MustExec("grant 'r_1'@'localhost' to current_user();") + tk.MustExec("revoke 'r_1'@'localhost' from 'root'@'%';") + sessionVars.User = originUser + + result = tk.MustQuery(`SELECT FROM_USER FROM mysql.role_edges WHERE TO_USER="r_3" and TO_HOST="localhost"`) + result.Check(nil) + + dropRoleSQL := `DROP ROLE IF EXISTS 'r_1'@'localhost' ;` + tk.MustExec(dropRoleSQL) + dropRoleSQL = `DROP ROLE IF EXISTS 'r_2'@'localhost' ;` + tk.MustExec(dropRoleSQL) + dropRoleSQL = `DROP ROLE IF EXISTS 'r_3'@'localhost' ;` + tk.MustExec(dropRoleSQL) + + // Test for revoke role + createRoleSQL = `CREATE ROLE 'test'@'localhost', r_1, r_2;` + tk.MustExec(createRoleSQL) + tk.MustExec("insert into mysql.role_edges (FROM_HOST,FROM_USER,TO_HOST,TO_USER) values ('localhost','test','%','root')") + tk.MustExec("insert into mysql.role_edges (FROM_HOST,FROM_USER,TO_HOST,TO_USER) values ('%','r_1','%','root')") + tk.MustExec("insert into mysql.role_edges (FROM_HOST,FROM_USER,TO_HOST,TO_USER) values ('%','r_2','%','root')") + tk.MustExec("flush privileges") + tk.MustExec("SET DEFAULT ROLE r_1, r_2 TO root") + err = tk.ExecToErr("revoke test@localhost, r_1 from root;") + require.NoError(t, err) + err = tk.ExecToErr("revoke `r_2`@`%` from root, u_2;") + require.Error(t, err) + err = tk.ExecToErr("revoke `r_2`@`%` from root;") + require.NoError(t, err) + err = tk.ExecToErr("revoke `r_1`@`%` from root;") + require.NoError(t, err) + result = tk.MustQuery(`SELECT * FROM mysql.default_roles WHERE DEFAULT_ROLE_USER="test" and DEFAULT_ROLE_HOST="localhost"`) + result.Check(nil) + result = tk.MustQuery(`SELECT * FROM mysql.default_roles WHERE USER="root" and HOST="%"`) + result.Check(nil) + dropRoleSQL = `DROP ROLE 'test'@'localhost', r_1, r_2;` + tk.MustExec(dropRoleSQL) + + ctx := tk.Session().(sessionctx.Context) + ctx.GetSessionVars().User = &auth.UserIdentity{Username: "test1", Hostname: "localhost"} + require.NotNil(t, tk.ExecToErr("SET ROLE role1, role2")) + tk.MustExec("SET ROLE ALL") + tk.MustExec("SET ROLE ALL EXCEPT role1, role2") + tk.MustExec("SET ROLE DEFAULT") + tk.MustExec("SET ROLE NONE") +} + +func TestRoleAdmin(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + tk := testkit.NewTestKit(t, store) + tk.MustExec("CREATE USER 'testRoleAdmin';") + tk.MustExec("CREATE ROLE 'targetRole';") + + // Create a new session. + se, err := session.CreateSession4Test(store) + require.NoError(t, err) + defer se.Close() + require.True(t, se.Auth(&auth.UserIdentity{Username: "testRoleAdmin", Hostname: "localhost"}, nil, nil)) + + ctx := context.Background() + _, err = se.Execute(ctx, "GRANT `targetRole` TO `testRoleAdmin`;") + require.Error(t, err) + + tk.MustExec("GRANT SUPER ON *.* TO `testRoleAdmin`;") + _, err = se.Execute(ctx, "GRANT `targetRole` TO `testRoleAdmin`;") + require.NoError(t, err) + _, err = se.Execute(ctx, "REVOKE `targetRole` FROM `testRoleAdmin`;") + require.NoError(t, err) + + tk.MustExec("DROP USER 'testRoleAdmin';") + tk.MustExec("DROP ROLE 'targetRole';") +} + +func TestDefaultRole(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + tk := testkit.NewTestKit(t, store) + + createRoleSQL := `CREATE ROLE r_1, r_2, r_3, u_1;` + tk.MustExec(createRoleSQL) + + tk.MustExec("insert into mysql.role_edges (FROM_HOST,FROM_USER,TO_HOST,TO_USER) values ('%','r_1','%','u_1')") + tk.MustExec("insert into mysql.role_edges (FROM_HOST,FROM_USER,TO_HOST,TO_USER) values ('%','r_2','%','u_1')") + + tk.MustExec("flush privileges;") + + setRoleSQL := `SET DEFAULT ROLE r_3 TO u_1;` + err := tk.ExecToErr(setRoleSQL) + require.Error(t, err) + + setRoleSQL = `SET DEFAULT ROLE r_1 TO u_1000;` + err = tk.ExecToErr(setRoleSQL) + require.Error(t, err) + + setRoleSQL = `SET DEFAULT ROLE r_1, r_3 TO u_1;` + err = tk.ExecToErr(setRoleSQL) + require.Error(t, err) + + setRoleSQL = `SET DEFAULT ROLE r_1 TO u_1;` + err = tk.ExecToErr(setRoleSQL) + require.NoError(t, err) + result := tk.MustQuery(`SELECT DEFAULT_ROLE_USER FROM mysql.default_roles WHERE USER="u_1"`) + result.Check(testkit.Rows("r_1")) + setRoleSQL = `SET DEFAULT ROLE r_2 TO u_1;` + err = tk.ExecToErr(setRoleSQL) + require.NoError(t, err) + result = tk.MustQuery(`SELECT DEFAULT_ROLE_USER FROM mysql.default_roles WHERE USER="u_1"`) + result.Check(testkit.Rows("r_2")) + + setRoleSQL = `SET DEFAULT ROLE ALL TO u_1;` + err = tk.ExecToErr(setRoleSQL) + require.NoError(t, err) + result = tk.MustQuery(`SELECT DEFAULT_ROLE_USER FROM mysql.default_roles WHERE USER="u_1"`) + result.Check(testkit.Rows("r_1", "r_2")) + + setRoleSQL = `SET DEFAULT ROLE NONE TO u_1;` + err = tk.ExecToErr(setRoleSQL) + require.NoError(t, err) + result = tk.MustQuery(`SELECT DEFAULT_ROLE_USER FROM mysql.default_roles WHERE USER="u_1"`) + result.Check(nil) + + dropRoleSQL := `DROP USER r_1, r_2, r_3, u_1;` + tk.MustExec(dropRoleSQL) +} + +func TestSetDefaultRoleAll(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + tk := testkit.NewTestKit(t, store) + tk.MustExec("create user test_all;") + se, err := session.CreateSession4Test(store) + require.NoError(t, err) + defer se.Close() + require.True(t, se.Auth(&auth.UserIdentity{Username: "test_all", Hostname: "localhost"}, nil, nil)) + + ctx := context.Background() + _, err = se.Execute(ctx, "set default role all to test_all;") + require.NoError(t, err) +} + +func TestUser(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + tk := testkit.NewTestKit(t, store) + // Make sure user test not in mysql.User. + result := tk.MustQuery(`SELECT authentication_string FROM mysql.User WHERE User="test" and Host="localhost"`) + result.Check(nil) + // Create user test. + createUserSQL := `CREATE USER 'test'@'localhost' IDENTIFIED BY '123';` + tk.MustExec(createUserSQL) + // Make sure user test in mysql.User. + result = tk.MustQuery(`SELECT authentication_string FROM mysql.User WHERE User="test" and Host="localhost"`) + result.Check(testkit.Rows(auth.EncodePassword("123"))) + // Create duplicate user with IfNotExists will be success. + createUserSQL = `CREATE USER IF NOT EXISTS 'test'@'localhost' IDENTIFIED BY '123';` + tk.MustExec(createUserSQL) + + // Create duplicate user without IfNotExists will cause error. + createUserSQL = `CREATE USER 'test'@'localhost' IDENTIFIED BY '123';` + tk.MustGetErrCode(createUserSQL, mysql.ErrCannotUser) + createUserSQL = `CREATE USER IF NOT EXISTS 'test'@'localhost' IDENTIFIED BY '123';` + tk.MustExec(createUserSQL) + tk.MustQuery("show warnings").Check(testkit.RowsWithSep("|", "Note|3163|User 'test'@'localhost' already exists.")) + dropUserSQL := `DROP USER IF EXISTS 'test'@'localhost' ;` + tk.MustExec(dropUserSQL) + // Create user test. + createUserSQL = `CREATE USER 'test1'@'localhost';` + tk.MustExec(createUserSQL) + // Make sure user test in mysql.User. + result = tk.MustQuery(`SELECT authentication_string FROM mysql.User WHERE User="test1" and Host="localhost"`) + result.Check(testkit.Rows(auth.EncodePassword(""))) + dropUserSQL = `DROP USER IF EXISTS 'test1'@'localhost' ;` + tk.MustExec(dropUserSQL) + + // Test alter user. + createUserSQL = `CREATE USER 'test1'@'localhost' IDENTIFIED BY '123', 'test2'@'localhost' IDENTIFIED BY '123', 'test3'@'localhost' IDENTIFIED BY '123', 'test4'@'localhost' IDENTIFIED BY '123';` + tk.MustExec(createUserSQL) + alterUserSQL := `ALTER USER 'test1'@'localhost' IDENTIFIED BY '111';` + tk.MustExec(alterUserSQL) + result = tk.MustQuery(`SELECT authentication_string FROM mysql.User WHERE User="test1" and Host="localhost"`) + result.Check(testkit.Rows(auth.EncodePassword("111"))) + alterUserSQL = `ALTER USER 'test_not_exist'@'localhost' IDENTIFIED BY '111';` + tk.MustGetErrCode(alterUserSQL, mysql.ErrCannotUser) + alterUserSQL = `ALTER USER 'test1'@'localhost' IDENTIFIED BY '222', 'test_not_exist'@'localhost' IDENTIFIED BY '111';` + tk.MustGetErrCode(alterUserSQL, mysql.ErrCannotUser) + result = tk.MustQuery(`SELECT authentication_string FROM mysql.User WHERE User="test1" and Host="localhost"`) + result.Check(testkit.Rows(auth.EncodePassword("222"))) + alterUserSQL = `ALTER USER 'test4'@'localhost' IDENTIFIED WITH 'auth_socket';` + tk.MustExec(alterUserSQL) + result = tk.MustQuery(`SELECT plugin FROM mysql.User WHERE User="test4" and Host="localhost"`) + result.Check(testkit.Rows("auth_socket")) + + alterUserSQL = `ALTER USER IF EXISTS 'test2'@'localhost' IDENTIFIED BY '222', 'test_not_exist'@'localhost' IDENTIFIED BY '1';` + tk.MustExec(alterUserSQL) + tk.MustQuery("show warnings").Check(testkit.RowsWithSep("|", "Note|3162|User 'test_not_exist'@'localhost' does not exist.")) + result = tk.MustQuery(`SELECT authentication_string FROM mysql.User WHERE User="test2" and Host="localhost"`) + result.Check(testkit.Rows(auth.EncodePassword("222"))) + alterUserSQL = `ALTER USER IF EXISTS'test_not_exist'@'localhost' IDENTIFIED BY '1', 'test3'@'localhost' IDENTIFIED BY '333';` + tk.MustExec(alterUserSQL) + tk.MustQuery("show warnings").Check(testkit.RowsWithSep("|", "Note|3162|User 'test_not_exist'@'localhost' does not exist.")) + result = tk.MustQuery(`SELECT authentication_string FROM mysql.User WHERE User="test3" and Host="localhost"`) + result.Check(testkit.Rows(auth.EncodePassword("333"))) + + // Test alter user user(). + alterUserSQL = `ALTER USER USER() IDENTIFIED BY '1';` + err := tk.ExecToErr(alterUserSQL) + require.Truef(t, terror.ErrorEqual(err, errors.New("Session user is empty")), "err %v", err) + sess, err := session.CreateSession4Test(store) + require.NoError(t, err) + tk.SetSession(sess) + ctx := tk.Session().(sessionctx.Context) + ctx.GetSessionVars().User = &auth.UserIdentity{Username: "test1", Hostname: "localhost", AuthHostname: "localhost"} + tk.MustExec(alterUserSQL) + result = tk.MustQuery(`SELECT authentication_string FROM mysql.User WHERE User="test1" and Host="localhost"`) + result.Check(testkit.Rows(auth.EncodePassword("1"))) + dropUserSQL = `DROP USER 'test1'@'localhost', 'test2'@'localhost', 'test3'@'localhost';` + tk.MustExec(dropUserSQL) + + // Test drop user if exists. + createUserSQL = `CREATE USER 'test1'@'localhost', 'test3'@'localhost';` + tk.MustExec(createUserSQL) + dropUserSQL = `DROP USER IF EXISTS 'test1'@'localhost', 'test2'@'localhost', 'test3'@'localhost' ;` + tk.MustExec(dropUserSQL) + tk.MustQuery("show warnings").Check(testkit.RowsWithSep("|", "Note|3162|User test2@localhost does not exist.")) + + // Test negative cases without IF EXISTS. + createUserSQL = `CREATE USER 'test1'@'localhost', 'test3'@'localhost';` + tk.MustExec(createUserSQL) + dropUserSQL = `DROP USER 'test1'@'localhost', 'test2'@'localhost', 'test3'@'localhost';` + tk.MustGetErrCode(dropUserSQL, mysql.ErrCannotUser) + dropUserSQL = `DROP USER 'test3'@'localhost';` + tk.MustExec(dropUserSQL) + dropUserSQL = `DROP USER 'test1'@'localhost';` + tk.MustExec(dropUserSQL) + // Test positive cases without IF EXISTS. + createUserSQL = `CREATE USER 'test1'@'localhost', 'test3'@'localhost';` + tk.MustExec(createUserSQL) + dropUserSQL = `DROP USER 'test1'@'localhost', 'test3'@'localhost';` + tk.MustExec(dropUserSQL) + + // Test 'identified by password' + createUserSQL = `CREATE USER 'test1'@'localhost' identified by password 'xxx';` + err = tk.ExecToErr(createUserSQL) + require.Truef(t, terror.ErrorEqual(executor.ErrPasswordFormat, err), "err %v", err) + createUserSQL = `CREATE USER 'test1'@'localhost' identified by password '*3D56A309CD04FA2EEF181462E59011F075C89548';` + tk.MustExec(createUserSQL) + dropUserSQL = `DROP USER 'test1'@'localhost';` + tk.MustExec(dropUserSQL) + + // Test drop user meet error + err = tk.ExecToErr(dropUserSQL) + require.Truef(t, terror.ErrorEqual(err, executor.ErrCannotUser.GenWithStackByArgs("DROP USER", "")), "err %v", err) + + createUserSQL = `CREATE USER 'test1'@'localhost'` + tk.MustExec(createUserSQL) + createUserSQL = `CREATE USER 'test2'@'localhost'` + tk.MustExec(createUserSQL) + + dropUserSQL = `DROP USER 'test1'@'localhost', 'test2'@'localhost', 'test3'@'localhost';` + err = tk.ExecToErr(dropUserSQL) + require.Truef(t, terror.ErrorEqual(err, executor.ErrCannotUser.GenWithStackByArgs("DROP USER", "")), "err %v", err) + + // Close issue #17639 + dropUserSQL = `DROP USER if exists test3@'%'` + tk.MustExec(dropUserSQL) + createUserSQL = `create user test3@'%' IDENTIFIED WITH 'mysql_native_password' AS '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9';` + tk.MustExec(createUserSQL) + querySQL := `select authentication_string from mysql.user where user="test3" ;` + tk.MustQuery(querySQL).Check(testkit.Rows("*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9")) + alterUserSQL = `alter user test3@'%' IDENTIFIED WITH 'mysql_native_password' AS '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9';` + tk.MustExec(alterUserSQL) + tk.MustQuery(querySQL).Check(testkit.Rows("*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9")) + + createUserSQL = `create user userA@LOCALHOST;` + tk.MustExec(createUserSQL) + querySQL = `select user,host from mysql.user where user = 'userA';` + tk.MustQuery(querySQL).Check(testkit.Rows("userA localhost")) + + createUserSQL = `create user userB@DEMO.com;` + tk.MustExec(createUserSQL) + querySQL = `select user,host from mysql.user where user = 'userB';` + tk.MustQuery(querySQL).Check(testkit.Rows("userB demo.com")) + + createUserSQL = `create user userC@localhost;` + tk.MustExec(createUserSQL) + renameUserSQL := `rename user 'userC'@'localhost' to 'userD'@'Demo.com';` + tk.MustExec(renameUserSQL) + querySQL = `select user,host from mysql.user where user = 'userD';` + tk.MustQuery(querySQL).Check(testkit.Rows("userD demo.com")) + + createUserSQL = `create user foo@localhost identified with 'foobar';` + err = tk.ExecToErr(createUserSQL) + require.Truef(t, terror.ErrorEqual(err, executor.ErrPluginIsNotLoaded), "err %v", err) + + tk.MustExec(`create user joan;`) + tk.MustExec(`create user sally;`) + tk.MustExec(`create role engineering;`) + tk.MustExec(`create role consultants;`) + tk.MustExec(`create role qa;`) + tk.MustExec(`grant engineering to joan;`) + tk.MustExec(`grant engineering to sally;`) + tk.MustExec(`grant engineering, consultants to joan, sally;`) + tk.MustExec(`grant qa to consultants;`) + tk.MustExec("CREATE ROLE `engineering`@`US`;") + tk.MustExec("create role `engineering`@`INDIA`;") + tk.MustExec("grant `engineering`@`US` TO `engineering`@`INDIA`;") + + tk.MustQuery("select user,host from mysql.user where user='engineering' and host = 'india'"). + Check(testkit.Rows("engineering india")) + tk.MustQuery("select user,host from mysql.user where user='engineering' and host = 'us'"). + Check(testkit.Rows("engineering us")) + + tk.MustExec("drop role engineering@INDIA;") + tk.MustExec("drop role engineering@US;") + + tk.MustQuery("select user from mysql.user where user='engineering' and host = 'india'").Check(testkit.Rows()) + tk.MustQuery("select user from mysql.user where user='engineering' and host = 'us'").Check(testkit.Rows()) +} + +func TestSetPwd(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + tk := testkit.NewTestKit(t, store) + + createUserSQL := `CREATE USER 'testpwd'@'localhost' IDENTIFIED BY '';` + tk.MustExec(createUserSQL) + result := tk.MustQuery(`SELECT authentication_string FROM mysql.User WHERE User="testpwd" and Host="localhost"`) + result.Check(testkit.Rows("")) + + // set password for + tk.MustExec(`SET PASSWORD FOR 'testpwd'@'localhost' = 'password';`) + result = tk.MustQuery(`SELECT authentication_string FROM mysql.User WHERE User="testpwd" and Host="localhost"`) + result.Check(testkit.Rows(auth.EncodePassword("password"))) + + tk.MustExec(`CREATE USER 'testpwdsock'@'localhost' IDENTIFIED WITH 'auth_socket';`) + tk.MustExec(`SET PASSWORD FOR 'testpwdsock'@'localhost' = 'password';`) + result = tk.MustQuery("show warnings") + result.Check(testkit.Rows("Note 1699 SET PASSWORD has no significance for user 'testpwdsock'@'localhost' as authentication plugin does not support it.")) + + // set password + setPwdSQL := `SET PASSWORD = 'pwd'` + // Session user is empty. + err := tk.ExecToErr(setPwdSQL) + require.Error(t, err) + sess, err := session.CreateSession4Test(store) + require.NoError(t, err) + tk.SetSession(sess) + ctx := tk.Session().(sessionctx.Context) + ctx.GetSessionVars().User = &auth.UserIdentity{Username: "testpwd1", Hostname: "localhost", AuthUsername: "testpwd1", AuthHostname: "localhost"} + // Session user doesn't exist. + err = tk.ExecToErr(setPwdSQL) + require.Truef(t, terror.ErrorEqual(err, executor.ErrPasswordNoMatch), "err %v", err) + // normal + ctx.GetSessionVars().User = &auth.UserIdentity{Username: "testpwd", Hostname: "localhost", AuthUsername: "testpwd", AuthHostname: "localhost"} + tk.MustExec(setPwdSQL) + result = tk.MustQuery(`SELECT authentication_string FROM mysql.User WHERE User="testpwd" and Host="localhost"`) + result.Check(testkit.Rows(auth.EncodePassword("pwd"))) + +} + +func TestFlushPrivileges(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + tk := testkit.NewTestKit(t, store) + + tk.MustExec(`CREATE USER 'testflush'@'localhost' IDENTIFIED BY '';`) + tk.MustExec(`UPDATE mysql.User SET Select_priv='Y' WHERE User="testflush" and Host="localhost"`) + + // Create a new session. + se, err := session.CreateSession4Test(store) + require.NoError(t, err) + defer se.Close() + require.True(t, se.Auth(&auth.UserIdentity{Username: "testflush", Hostname: "localhost"}, nil, nil)) + + ctx := context.Background() + // Before flush. + _, err = se.Execute(ctx, `SELECT authentication_string FROM mysql.User WHERE User="testflush" and Host="localhost"`) + require.Error(t, err) + + tk.MustExec("FLUSH PRIVILEGES") + + // After flush. + _, err = se.Execute(ctx, `SELECT authentication_string FROM mysql.User WHERE User="testflush" and Host="localhost"`) + require.NoError(t, err) + +} + +func TestFlushPrivilegesPanic(t *testing.T) { + // Run in a separate suite because this test need to set SkipGrantTable config. + store, err := mockstore.NewMockStore() + require.NoError(t, err) + defer func() { + err := store.Close() + require.NoError(t, err) + }() + + defer config.RestoreFunc()() + config.UpdateGlobal(func(conf *config.Config) { + conf.Security.SkipGrantTable = true + }) + + dom, err := session.BootstrapSession(store) + require.NoError(t, err) + defer dom.Close() + + tk := testkit.NewTestKit(t, store) + tk.MustExec("FLUSH PRIVILEGES") +} + +func TestDropPartitionStats(t *testing.T) { + store, dom, clean := testkit.CreateMockStoreAndDomain(t) + defer clean() + // Use the testSerialSuite to fix the unstable test + tk := testkit.NewTestKit(t, store) + tk.MustExec(`create database if not exists test_drop_gstats`) + tk.MustExec("use test_drop_gstats") + tk.MustExec("drop table if exists test_drop_gstats;") + tk.MustExec(`create table test_drop_gstats ( + a int, + key(a) +) +partition by range (a) ( + partition p0 values less than (10), + partition p1 values less than (20), + partition global values less than (30) +)`) + tk.MustExec("set @@tidb_analyze_version = 2") + tk.MustExec("set @@tidb_partition_prune_mode='dynamic'") + tk.MustExec("insert into test_drop_gstats values (1), (5), (11), (15), (21), (25)") + require.Nil(t, dom.StatsHandle().DumpStatsDeltaToKV(handle.DumpAll)) + + checkPartitionStats := func(names ...string) { + rs := tk.MustQuery("show stats_meta").Rows() + require.Equal(t, len(names), len(rs)) + for i := range names { + require.Equal(t, names[i], rs[i][2].(string)) + } + } + + tk.MustExec("analyze table test_drop_gstats") + checkPartitionStats("global", "p0", "p1", "global") + + tk.MustExec("drop stats test_drop_gstats partition p0") + checkPartitionStats("global", "p1", "global") + + err := tk.ExecToErr("drop stats test_drop_gstats partition abcde") + require.Error(t, err) + require.Equal(t, "can not found the specified partition name abcde in the table definition", err.Error()) + + tk.MustExec("drop stats test_drop_gstats partition global") + checkPartitionStats("global", "p1") + + tk.MustExec("drop stats test_drop_gstats global") + checkPartitionStats("p1") + + tk.MustExec("analyze table test_drop_gstats") + checkPartitionStats("global", "p0", "p1", "global") + + tk.MustExec("drop stats test_drop_gstats partition p0, p1, global") + checkPartitionStats("global") + + tk.MustExec("analyze table test_drop_gstats") + checkPartitionStats("global", "p0", "p1", "global") + + tk.MustExec("drop stats test_drop_gstats") + checkPartitionStats() +} + +func TestDropStats(t *testing.T) { + store, dom, clean := testkit.CreateMockStoreAndDomain(t) + defer clean() + testKit := testkit.NewTestKit(t, store) + testKit.MustExec("use test") + testKit.MustExec("create table t (c1 int, c2 int)") + is := dom.InfoSchema() + tbl, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t")) + require.NoError(t, err) + tableInfo := tbl.Meta() + h := dom.StatsHandle() + h.Clear() + testKit.MustExec("analyze table t") + statsTbl := h.GetTableStats(tableInfo) + require.False(t, statsTbl.Pseudo) + + testKit.MustExec("drop stats t") + require.Nil(t, h.Update(is)) + statsTbl = h.GetTableStats(tableInfo) + require.True(t, statsTbl.Pseudo) + + testKit.MustExec("analyze table t") + statsTbl = h.GetTableStats(tableInfo) + require.False(t, statsTbl.Pseudo) + + h.SetLease(1) + testKit.MustExec("drop stats t") + require.Nil(t, h.Update(is)) + statsTbl = h.GetTableStats(tableInfo) + require.True(t, statsTbl.Pseudo) + h.SetLease(0) +} diff --git a/executor/split.go b/executor/split.go index e31f894849685..52dba35747c43 100644 --- a/executor/split.go +++ b/executor/split.go @@ -620,6 +620,9 @@ type regionMeta struct { readBytes uint64 approximateSize int64 approximateKeys int64 + + // this is for propagating scheduling info for this region + physicalID int64 } func getPhysicalTableRegions(physicalTableID int64, tableInfo *model.TableInfo, tikvStore helper.Storage, s kv.SplittableStore, uniqueRegionMap map[uint64]struct{}) ([]regionMeta, error) { @@ -784,12 +787,15 @@ func getRegionMeta(tikvStore helper.Storage, regionMetas []*tikv.Region, uniqueR continue } uniqueRegionMap[r.GetID()] = struct{}{} - regions = append(regions, regionMeta{ - region: r.GetMeta(), - leaderID: r.GetLeaderPeerID(), - storeID: r.GetLeaderStoreID(), - }) + regions = append(regions, + regionMeta{ + region: r.GetMeta(), + leaderID: r.GetLeaderPeerID(), + storeID: r.GetLeaderStoreID(), + physicalID: physicalTableID, + }) } + regions, err := getRegionInfo(tikvStore, regions) if err != nil { return regions, err diff --git a/executor/splittest/BUILD.bazel b/executor/splittest/BUILD.bazel new file mode 100644 index 0000000000000..3fbafa70c12ca --- /dev/null +++ b/executor/splittest/BUILD.bazel @@ -0,0 +1,26 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_test") + +go_test( + name = "splittest_test", + srcs = [ + "main_test.go", + "split_table_test.go", + ], + flaky = True, + shard_count = 5, + deps = [ + "//ddl", + "//domain/infosync", + "//errno", + "//parser/mysql", + "//parser/terror", + "//planner/core", + "//sessionctx/variable", + "//table", + "//testkit", + "//testkit/external", + "//util/dbterror", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/executor/splittest/main_test.go b/executor/splittest/main_test.go new file mode 100644 index 0000000000000..a18fac68489a9 --- /dev/null +++ b/executor/splittest/main_test.go @@ -0,0 +1,29 @@ +// 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 splittest + +import ( + "testing" + + "go.uber.org/goleak" +) + +func TestMain(m *testing.M) { + opts := []goleak.Option{ + goleak.IgnoreTopFunction("github.com/golang/glog.(*loggingT).flushDaemon"), + goleak.IgnoreTopFunction("go.opencensus.io/stats/view.(*worker).start"), + } + goleak.VerifyTestMain(m, opts...) +} diff --git a/executor/split_table_test.go b/executor/splittest/split_table_test.go similarity index 84% rename from executor/split_table_test.go rename to executor/splittest/split_table_test.go index d19dbfed2daf5..9f5ceec8a01ea 100644 --- a/executor/split_table_test.go +++ b/executor/splittest/split_table_test.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package executor_test +package splittest import ( "fmt" @@ -20,6 +20,7 @@ import ( "testing" "github.com/pingcap/tidb/ddl" + "github.com/pingcap/tidb/domain/infosync" "github.com/pingcap/tidb/errno" "github.com/pingcap/tidb/parser/mysql" "github.com/pingcap/tidb/parser/terror" @@ -266,7 +267,7 @@ func TestShowTableRegion(t *testing.T) { // 4 regions to store record data. // 1 region to store index data. require.Len(t, rows, 5) - require.Len(t, rows[0], 11) + require.Len(t, rows[0], 13) tbl := external.GetTableByName(t, tk, "test", "t_regions") // Check the region start key. require.Equal(t, fmt.Sprintf("t_%d_r", tbl.Meta().ID), rows[0][1]) @@ -274,6 +275,11 @@ func TestShowTableRegion(t *testing.T) { require.Equal(t, fmt.Sprintf("t_%d_r_0", tbl.Meta().ID), rows[2][1]) require.Equal(t, fmt.Sprintf("t_%d_r_5000", tbl.Meta().ID), rows[3][1]) require.Equal(t, fmt.Sprintf("t_%d_r", tbl.Meta().ID), rows[4][2]) + // Check scheduling constraint and scheduling state default value + for i := range rows { + require.Equal(t, "", rows[i][11]) + require.Equal(t, "", rows[i][12]) + } // Test show table index regions. tk.MustQuery(`split table t_regions index idx between (-1000) and (1000) regions 4;`).Check(testkit.Rows("4 1")) @@ -281,11 +287,17 @@ func TestShowTableRegion(t *testing.T) { rows = re.Rows() // The index `idx` of table t_regions should have 4 regions now. require.Len(t, rows, 4) + require.Len(t, rows[0], 13) // Check the region start key. require.Regexp(t, fmt.Sprintf("t_%d.*", tbl.Meta().ID), rows[0][1]) require.Regexp(t, fmt.Sprintf("t_%d_i_1_.*", tbl.Meta().ID), rows[1][1]) require.Regexp(t, fmt.Sprintf("t_%d_i_1_.*", tbl.Meta().ID), rows[2][1]) require.Regexp(t, fmt.Sprintf("t_%d_i_1_.*", tbl.Meta().ID), rows[3][1]) + // Check scheduling constraint and scheduling state default value + for i := range rows { + require.Equal(t, "", rows[i][11]) + require.Equal(t, "", rows[i][12]) + } re = tk.MustQuery("show table t_regions regions") rows = re.Rows() @@ -593,4 +605,113 @@ func TestShowTableRegion(t *testing.T) { // Test show table partition region on non-partition table. err = tk.QueryToErr("show table t partition (p3,p4) index idx regions") require.True(t, terror.ErrorEqual(err, plannercore.ErrPartitionClauseOnNonpartitioned)) + + // Test scheduling info for un-partitioned table with placement policy + tk.MustExec("drop table if exists t1_scheduling") + tk.MustExec("drop placement policy if exists pa1") + tk.MustExec("create placement policy p1 " + + "PRIMARY_REGION=\"cn-east-1\" " + + "REGIONS=\"cn-east-1,cn-east-2\"" + + "SCHEDULE=\"EVEN\"") + tk.MustExec("create table t1_scheduling (id int) placement policy p1") + re = tk.MustQuery("show table t1_scheduling regions") + rows = re.Rows() + require.Len(t, rows, 1) + require.Len(t, rows[0], 13) + tbl = external.GetTableByName(t, tk, "test", "t1_scheduling") + require.Equal(t, fmt.Sprintf("t_%d_", tbl.Meta().ID), rows[0][1]) + require.Equal(t, "PRIMARY_REGION=\"cn-east-1\" REGIONS=\"cn-east-1,cn-east-2\" SCHEDULE=\"EVEN\"", rows[0][11]) + require.Equal(t, infosync.PlacementScheduleStatePending.String(), rows[0][12]) + + // Test scheduling info for partitioned table with placement policy + tk.MustExec("drop table if exists t2_scheduling") + tk.MustExec("drop placement policy if exists p2") + tk.MustExec("create placement policy p2 " + + "LEADER_CONSTRAINTS=\"[+region=us-east-1]\" " + + "FOLLOWER_CONSTRAINTS=\"[+region=us-east-2]\" " + + "FOLLOWERS=3") + tk.MustExec("create table t2_scheduling (id INT) placement policy p1 partition by range (id) (" + + "partition p0 values less than (100) placement policy p2," + + "partition p1 values less than (1000)," + + "partition p2 values less than (10000)" + + ")") + re = tk.MustQuery("show table t2_scheduling regions") + rows = re.Rows() + require.Len(t, rows, 3) + require.Len(t, rows[0], 13) + tbl = external.GetTableByName(t, tk, "test", "t2_scheduling") + require.Equal(t, "LEADER_CONSTRAINTS=\"[+region=us-east-1]\" FOLLOWERS=3 FOLLOWER_CONSTRAINTS=\"[+region=us-east-2]\"", rows[0][11]) + require.Equal(t, "PRIMARY_REGION=\"cn-east-1\" REGIONS=\"cn-east-1,cn-east-2\" SCHEDULE=\"EVEN\"", rows[1][11]) + require.Equal(t, "PRIMARY_REGION=\"cn-east-1\" REGIONS=\"cn-east-1,cn-east-2\" SCHEDULE=\"EVEN\"", rows[2][11]) + require.Equal(t, infosync.PlacementScheduleStatePending.String(), rows[0][12]) + require.Equal(t, infosync.PlacementScheduleStatePending.String(), rows[1][12]) + require.Equal(t, infosync.PlacementScheduleStatePending.String(), rows[2][12]) + + // Test scheduling info for partitioned table after split to regions + tk.MustExec("drop table if exists t3_scheduling") + tk.MustExec("create table t3_scheduling (id INT) placement policy p1 partition by range (id) (" + + "partition p0 values less than (100) placement policy p2," + + "partition p1 values less than (1000)," + + "partition p2 values less than (10000)" + + ")") + tk.MustQuery("split partition table t3_scheduling between (0) and (10000) regions 4") + re = tk.MustQuery("show table t3_scheduling regions") + rows = re.Rows() + require.Len(t, rows, 12) + require.Len(t, rows[0], 13) + for i := range rows { + if i < 4 { + require.Equal(t, "LEADER_CONSTRAINTS=\"[+region=us-east-1]\" FOLLOWERS=3 FOLLOWER_CONSTRAINTS=\"[+region=us-east-2]\"", rows[i][11]) + } else { + require.Equal(t, "PRIMARY_REGION=\"cn-east-1\" REGIONS=\"cn-east-1,cn-east-2\" SCHEDULE=\"EVEN\"", rows[i][11]) + } + require.Equal(t, infosync.PlacementScheduleStatePending.String(), rows[i][12]) + } + + // Test scheduling info for un-partitioned table after split index to regions + tk.MustExec("drop table if exists t4_scheduling") + tk.MustExec("create table t4_scheduling (id INT, val INT, index idx1(val)) placement policy p1") + tk.MustQuery("split table t4_scheduling index idx1 between (0) and (12345) regions 3") + re = tk.MustQuery("show table t4_scheduling regions") + rows = re.Rows() + require.Len(t, rows, 4) + require.Len(t, rows[0], 13) + for i := range rows { + require.Equal(t, "PRIMARY_REGION=\"cn-east-1\" REGIONS=\"cn-east-1,cn-east-2\" SCHEDULE=\"EVEN\"", rows[i][11]) + require.Equal(t, infosync.PlacementScheduleStatePending.String(), rows[i][12]) + } + + // Test scheduling info for partitioned table after split index to regions + tk.MustExec("drop table if exists t5_scheduling") + tk.MustExec("create table t5_scheduling (id INT, val INT, index idx1(val)) placement policy p1 partition by range (id) (" + + "partition p0 values less than (100) placement policy p2," + + "partition p1 values less than (1000)," + + "partition p2 values less than (10000)" + + ")") + tk.MustQuery("split table t5_scheduling index idx1 between (0) and (12345) regions 3") + re = tk.MustQuery("show table t5_scheduling regions") + rows = re.Rows() + require.Len(t, rows, 12) + require.Len(t, rows[0], 13) + for i := range rows { + if i < 4 { + require.Equal(t, "LEADER_CONSTRAINTS=\"[+region=us-east-1]\" FOLLOWERS=3 FOLLOWER_CONSTRAINTS=\"[+region=us-east-2]\"", rows[i][11]) + } else { + require.Equal(t, "PRIMARY_REGION=\"cn-east-1\" REGIONS=\"cn-east-1,cn-east-2\" SCHEDULE=\"EVEN\"", rows[i][11]) + } + require.Equal(t, infosync.PlacementScheduleStatePending.String(), rows[i][12]) + } + re = tk.MustQuery("show table t5_scheduling index idx1 regions") + rows = re.Rows() + require.Len(t, rows, 9) + require.Len(t, rows[0], 13) + for i := range rows { + if i < 3 { + require.Equal(t, "LEADER_CONSTRAINTS=\"[+region=us-east-1]\" FOLLOWERS=3 FOLLOWER_CONSTRAINTS=\"[+region=us-east-2]\"", rows[i][11]) + } else { + require.Equal(t, "PRIMARY_REGION=\"cn-east-1\" REGIONS=\"cn-east-1,cn-east-2\" SCHEDULE=\"EVEN\"", rows[i][11]) + } + require.Equal(t, infosync.PlacementScheduleStatePending.String(), rows[i][12]) + } + } diff --git a/executor/table_reader.go b/executor/table_reader.go index 2f08a989d5816..30fedbd85737d 100644 --- a/executor/table_reader.go +++ b/executor/table_reader.go @@ -96,7 +96,6 @@ type TableReaderExecutor struct { keepOrder bool desc bool - streaming bool paging bool storeType kv.StoreType // corColInFilter tells whether there's correlated column in filter. @@ -143,13 +142,13 @@ func (e *TableReaderExecutor) Open(ctx context.Context) error { var err error if e.corColInFilter { if e.storeType == kv.TiFlash { - execs, _, err := constructDistExecForTiFlash(e.ctx, e.tablePlan) + execs, err := constructDistExecForTiFlash(e.ctx, e.tablePlan) if err != nil { return err } e.dagPB.RootExecutor = execs[0] } else { - e.dagPB.Executors, _, err = constructDistExec(e.ctx, e.plans) + e.dagPB.Executors, err = constructDistExec(e.ctx, e.plans) if err != nil { return err } @@ -333,7 +332,6 @@ func (e *TableReaderExecutor) buildKVReqSeparately(ctx context.Context, ranges [ SetStartTS(e.startTS). SetDesc(e.desc). SetKeepOrder(e.keepOrder). - SetStreaming(e.streaming). SetReadReplicaScope(e.readReplicaScope). SetFromSessionVars(e.ctx.GetSessionVars()). SetFromInfoSchema(e.ctx.GetInfoSchema()). @@ -372,7 +370,6 @@ func (e *TableReaderExecutor) buildKVReqForPartitionTableScan(ctx context.Contex SetStartTS(e.startTS). SetDesc(e.desc). SetKeepOrder(e.keepOrder). - SetStreaming(e.streaming). SetReadReplicaScope(e.readReplicaScope). SetFromSessionVars(e.ctx.GetSessionVars()). SetFromInfoSchema(e.ctx.GetInfoSchema()). @@ -403,7 +400,6 @@ func (e *TableReaderExecutor) buildKVReq(ctx context.Context, ranges []*ranger.R SetStartTS(e.startTS). SetDesc(e.desc). SetKeepOrder(e.keepOrder). - SetStreaming(e.streaming). SetReadReplicaScope(e.readReplicaScope). SetIsStaleness(e.isStaleness). SetFromSessionVars(e.ctx.GetSessionVars()). diff --git a/executor/table_readers_required_rows_test.go b/executor/table_readers_required_rows_test.go index 406723b8e51af..8382f460342e1 100644 --- a/executor/table_readers_required_rows_test.go +++ b/executor/table_readers_required_rows_test.go @@ -132,7 +132,7 @@ func buildTableReader(sctx sessionctx.Context) Executor { } func buildMockDAGRequest(sctx sessionctx.Context) *tipb.DAGRequest { - req, _, err := constructDAGReq(sctx, []core.PhysicalPlan{&core.PhysicalTableScan{ + req, err := constructDAGReq(sctx, []core.PhysicalPlan{&core.PhysicalTableScan{ Columns: []*model.ColumnInfo{}, Table: &model.TableInfo{ID: 12345, PKIsHandle: false}, Desc: false, diff --git a/executor/tiflashtest/BUILD.bazel b/executor/tiflashtest/BUILD.bazel new file mode 100644 index 0000000000000..6a919ca76598a --- /dev/null +++ b/executor/tiflashtest/BUILD.bazel @@ -0,0 +1,31 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_test") + +go_test( + name = "tiflashtest_test", + srcs = [ + "main_test.go", + "tiflash_test.go", + ], + deps = [ + "//config", + "//domain", + "//executor", + "//meta/autoid", + "//parser/terror", + "//planner/core", + "//session", + "//store/mockstore", + "//store/mockstore/unistore", + "//testkit", + "//testkit/external", + "//util/israce", + "//util/kvcache", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_pingcap_kvproto//pkg/metapb", + "@com_github_stretchr_testify//require", + "@com_github_tikv_client_go_v2//testutils", + "@com_github_tikv_client_go_v2//tikv", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/executor/tiflashtest/main_test.go b/executor/tiflashtest/main_test.go new file mode 100644 index 0000000000000..19104e1188b31 --- /dev/null +++ b/executor/tiflashtest/main_test.go @@ -0,0 +1,44 @@ +// 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 tiflashtest + +import ( + "testing" + + "github.com/pingcap/tidb/config" + "github.com/pingcap/tidb/meta/autoid" + "github.com/tikv/client-go/v2/tikv" + "go.uber.org/goleak" +) + +func TestMain(m *testing.M) { + autoid.SetStep(5000) + config.UpdateGlobal(func(conf *config.Config) { + conf.Log.SlowThreshold = 30000 // 30s + conf.TiKVClient.AsyncCommit.SafeWindow = 0 + conf.TiKVClient.AsyncCommit.AllowedClockDrift = 0 + conf.Experimental.AllowsExpressionIndex = true + }) + tikv.EnableFailpoints() + + opts := []goleak.Option{ + goleak.IgnoreTopFunction("github.com/golang/glog.(*loggingT).flushDaemon"), + goleak.IgnoreTopFunction("go.etcd.io/etcd/client/pkg/v3/logutil.(*MergeLogger).outputLoop"), + goleak.IgnoreTopFunction("go.opencensus.io/stats/view.(*worker).start"), + goleak.IgnoreTopFunction("gopkg.in/natefinch/lumberjack%2ev2.(*Logger).millRun"), + goleak.IgnoreTopFunction("github.com/tikv/client-go/v2/txnkv/transaction.keepAlive"), + } + goleak.VerifyTestMain(m, opts...) +} diff --git a/executor/tiflash_test.go b/executor/tiflashtest/tiflash_test.go similarity index 99% rename from executor/tiflash_test.go rename to executor/tiflashtest/tiflash_test.go index e35ee76350714..fc5ee95b10655 100644 --- a/executor/tiflash_test.go +++ b/executor/tiflashtest/tiflash_test.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package executor_test +package tiflashtest import ( "bytes" @@ -281,7 +281,7 @@ func TestMppExecution(t *testing.T) { require.NoError(t, err) ts := txn.StartTS() taskID := tk.Session().GetSessionVars().AllocMPPTaskID(ts) - require.Equal(t, int64(6), taskID) + require.Equal(t, int64(5), taskID) tk.MustExec("commit") taskID = tk.Session().GetSessionVars().AllocMPPTaskID(ts + 1) require.Equal(t, int64(1), taskID) diff --git a/executor/update.go b/executor/update.go index faf5b1d15e1bf..196f737aa057f 100644 --- a/executor/update.go +++ b/executor/update.go @@ -42,11 +42,11 @@ type UpdateExec struct { // updatedRowKeys is a map for unique (TableAlias, handle) pair. // The value is true if the row is changed, or false otherwise - updatedRowKeys map[int]*kv.HandleMap + updatedRowKeys map[int]*kv.MemAwareHandleMap[bool] tblID2table map[int64]table.Table // mergedRowData is a map for unique (Table, handle) pair. // The value is cached table row - mergedRowData map[int64]*kv.HandleMap + mergedRowData map[int64]*kv.MemAwareHandleMap[[]types.Datum] multiUpdateOnSameTable map[int64]bool matched uint64 // a counter of matched rows during update @@ -71,7 +71,7 @@ type UpdateExec struct { // prepare `handles`, `tableUpdatable`, `changed` to avoid re-computations. func (e *UpdateExec) prepare(row []types.Datum) (err error) { if e.updatedRowKeys == nil { - e.updatedRowKeys = make(map[int]*kv.HandleMap) + e.updatedRowKeys = make(map[int]*kv.MemAwareHandleMap[bool]) } e.handles = e.handles[:0] e.tableUpdatable = e.tableUpdatable[:0] @@ -79,7 +79,7 @@ func (e *UpdateExec) prepare(row []types.Datum) (err error) { e.matches = e.matches[:0] for _, content := range e.tblColPosInfos { if e.updatedRowKeys[content.Start] == nil { - e.updatedRowKeys[content.Start] = kv.NewHandleMap() + e.updatedRowKeys[content.Start] = kv.NewMemAwareHandleMap[bool]() } handle, err := content.HandleCols.BuildHandleByDatums(row) if err != nil { @@ -102,7 +102,7 @@ func (e *UpdateExec) prepare(row []types.Datum) (err error) { changed, ok := e.updatedRowKeys[content.Start].Get(handle) if ok { - e.changed = append(e.changed, changed.(bool)) + e.changed = append(e.changed, changed) e.matches = append(e.matches, false) } else { e.changed = append(e.changed, false) @@ -114,7 +114,7 @@ func (e *UpdateExec) prepare(row []types.Datum) (err error) { func (e *UpdateExec) merge(row, newData []types.Datum, mergeGenerated bool) error { if e.mergedRowData == nil { - e.mergedRowData = make(map[int64]*kv.HandleMap) + e.mergedRowData = make(map[int64]*kv.MemAwareHandleMap[[]types.Datum]) } var mergedData []types.Datum // merge updates from and into mergedRowData @@ -135,13 +135,13 @@ func (e *UpdateExec) merge(row, newData []types.Datum, mergeGenerated bool) erro flags := e.assignFlag[content.Start:content.End] if e.mergedRowData[content.TblID] == nil { - e.mergedRowData[content.TblID] = kv.NewHandleMap() + e.mergedRowData[content.TblID] = kv.NewMemAwareHandleMap[[]types.Datum]() } tbl := e.tblID2table[content.TblID] oldData := row[content.Start:content.End] newTableData := newData[content.Start:content.End] if v, ok := e.mergedRowData[content.TblID].Get(handle); ok { - mergedData = v.([]types.Datum) + mergedData = v for i, flag := range flags { if tbl.WritableCols()[i].IsGenerated() != mergeGenerated { continue @@ -156,7 +156,10 @@ func (e *UpdateExec) merge(row, newData []types.Datum, mergeGenerated bool) erro } else { mergedData = append([]types.Datum{}, newTableData...) } - e.mergedRowData[content.TblID].Set(handle, mergedData) + + memDelta := e.mergedRowData[content.TblID].Set(handle, mergedData) + memDelta += types.EstimatedMemUsage(mergedData, 1) + int64(handle.ExtraMemSize()) + e.memTracker.Consume(memDelta) } return nil } @@ -190,7 +193,12 @@ func (e *UpdateExec) exec(ctx context.Context, schema *expression.Schema, row, n // Update row changed, err1 := updateRecord(ctx, e.ctx, handle, oldData, newTableData, flags, tbl, false, e.memTracker) if err1 == nil { - e.updatedRowKeys[content.Start].Set(handle, changed) + _, exist := e.updatedRowKeys[content.Start].Get(handle) + memDelta := e.updatedRowKeys[content.Start].Set(handle, changed) + if !exist { + memDelta += int64(handle.ExtraMemSize()) + } + e.memTracker.Consume(memDelta) continue } @@ -426,6 +434,7 @@ func (e *UpdateExec) Close() error { txn.GetSnapshot().SetOption(kv.CollectRuntimeStats, nil) } } + defer e.memTracker.ReplaceBytesUsed(0) return e.children[0].Close() } diff --git a/executor/write_test.go b/executor/write_test.go index 2cc17b1e1916b..aa2b77b4122b7 100644 --- a/executor/write_test.go +++ b/executor/write_test.go @@ -55,25 +55,25 @@ func TestInsert(t *testing.T) { errInsertSelectSQL := `insert insert_test (c1) values ();` tk.MustExec("begin") - _, err := tk.Exec(errInsertSelectSQL) + 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.Exec(errInsertSelectSQL) + err = tk.ExecToErr(errInsertSelectSQL) require.Error(t, err) tk.MustExec("rollback") errInsertSelectSQL = `insert insert_test (xxx) values (3);` tk.MustExec("begin") - _, err = tk.Exec(errInsertSelectSQL) + err = tk.ExecToErr(errInsertSelectSQL) require.Error(t, err) tk.MustExec("rollback") errInsertSelectSQL = `insert insert_test_xxx (c1) values ();` tk.MustExec("begin") - _, err = tk.Exec(errInsertSelectSQL) + err = tk.ExecToErr(errInsertSelectSQL) require.Error(t, err) tk.MustExec("rollback") @@ -83,13 +83,13 @@ func TestInsert(t *testing.T) { errInsertSelectSQL = `insert insert_test set c1 = 4, c1 = 5;` tk.MustExec("begin") - _, err = tk.Exec(errInsertSelectSQL) + err = tk.ExecToErr(errInsertSelectSQL) require.Error(t, err) tk.MustExec("rollback") errInsertSelectSQL = `insert insert_test set xxx = 6;` tk.MustExec("begin") - _, err = tk.Exec(errInsertSelectSQL) + err = tk.ExecToErr(errInsertSelectSQL) require.Error(t, err) tk.MustExec("rollback") @@ -107,13 +107,13 @@ func TestInsert(t *testing.T) { errInsertSelectSQL = `insert insert_test_1 select c1 from insert_test;` tk.MustExec("begin") - _, err = tk.Exec(errInsertSelectSQL) + 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.Exec(errInsertSelectSQL) + err = tk.ExecToErr(errInsertSelectSQL) require.Error(t, err) tk.MustExec("rollback") @@ -133,7 +133,7 @@ func TestInsert(t *testing.T) { tk.MustExec(insertSQL) require.Empty(t, tk.Session().LastMessage()) - _, err = tk.Exec(`insert into insert_test (id, c2) values(1, 1) on duplicate key update t.c2 = 10`) + 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 @@ -153,13 +153,13 @@ func TestInsert(t *testing.T) { r.Check(testkit.Rows(rowStr)) tk.MustExec("create table insert_err (id int, c1 varchar(8))") - _, err = tk.Exec("insert insert_err values (1, 'abcdabcdabcd')") + err = tk.ExecToErr("insert insert_err values (1, 'abcdabcdabcd')") require.True(t, types.ErrDataTooLong.Equal(err)) - _, err = tk.Exec("insert insert_err values (1, '你好,世界')") + 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.Exec("INSERT INTO TEST1(id,value) VALUE(3,3) on DUPLICATE KEY UPDATE VALUE=4") + 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()) @@ -172,21 +172,21 @@ func TestInsert(t *testing.T) { // issue 3235 tk.MustExec("drop table if exists t") tk.MustExec("create table t(c decimal(5, 5))") - _, err = tk.Exec("insert into t value(0)") + err = tk.ExecToErr("insert into t value(0)") require.NoError(t, err) - _, err = tk.Exec("insert into t value(1)") + 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.Exec("insert into t value(1)") + 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.Exec("insert into t value(1)") + 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")) @@ -196,7 +196,7 @@ func TestInsert(t *testing.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.Exec("insert into t value(Unix_timestamp('2002-10-27 01: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")) @@ -204,7 +204,7 @@ func TestInsert(t *testing.T) { // issue 3832 tk.MustExec("create table t1 (b char(0));") - _, err = tk.Exec(`insert into t1 values ("");`) + err = tk.ExecToErr(`insert into t1 values ("");`) require.NoError(t, err) // issue 3895 @@ -221,7 +221,7 @@ func TestInsert(t *testing.T) { // issue 4653 tk.MustExec("DROP TABLE IF EXISTS t;") tk.MustExec("CREATE TABLE t(a datetime);") - _, err = tk.Exec("INSERT INTO t VALUES('2017-00-00')") + 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')") @@ -246,7 +246,7 @@ func TestInsert(t *testing.T) { 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.Exec("insert into t value (-1);") + 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);") @@ -273,7 +273,7 @@ func TestInsert(t *testing.T) { 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.Exec("insert into t value(-20070219173709.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") @@ -301,16 +301,16 @@ func TestInsert(t *testing.T) { tk.MustQuery("select * from t").Check(testkit.Rows("1 1")) tk.MustExec("create view v as select * from t") - _, err = tk.Exec("insert into v values(1,2)") + err = tk.ExecToErr("insert into v values(1,2)") require.EqualError(t, err, "insert into view v is not supported now") - _, err = tk.Exec("replace into v values(1,2)") + 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.Exec("insert into seq values()") + err = tk.ExecToErr("insert into seq values()") require.EqualError(t, err, "insert into sequence seq is not supported now") - _, err = tk.Exec("replace into seq values()") + err = tk.ExecToErr("replace into seq values()") require.EqualError(t, err, "replace into sequence seq is not supported now") tk.MustExec("drop sequence seq") @@ -318,10 +318,10 @@ func TestInsert(t *testing.T) { 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.Exec("insert into t(name, b) values(\"chb\", 3)") + err = tk.ExecToErr("insert into t(name, b) values(\"chb\", 3)") require.EqualError(t, err, "[kv:1062]Duplicate entry 'ch' for key 'PRIMARY'") tk.MustExec("insert into t(name, b) values(\"测试\", 3)") - _, err = tk.Exec("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 '测试' for key 'PRIMARY'") } @@ -448,7 +448,7 @@ func TestInsertAutoInc(t *testing.T) { 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.Exec(insertSQL) + 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)` @@ -512,7 +512,7 @@ func TestInsertIgnore(t *testing.T) { tk.MustExec("commit") cfg.SetGetError(errors.New("foo")) - _, err := tk.Exec("insert ignore into t values (1, 3)") + err := tk.ExecToErr("insert ignore into t values (1, 3)") require.Error(t, err) cfg.SetGetError(nil) @@ -521,13 +521,13 @@ func TestInsertIgnore(t *testing.T) { create table t (a bigint);` tk.MustExec(testSQL) testSQL = "insert ignore into t select '1a';" - _, err = tk.Exec(testSQL) + err = tk.ExecToErr(testSQL) require.NoError(t, err) require.Equal(t, tk.Session().LastMessage(), "Records: 1 Duplicates: 0 Warnings: 1") r = tk.MustQuery("SHOW WARNINGS") r.Check(testkit.Rows("Warning 1292 Truncated incorrect DOUBLE value: '1a'")) testSQL = "insert ignore into t values ('1a')" - _, err = tk.Exec(testSQL) + err = tk.ExecToErr(testSQL) require.NoError(t, err) require.Empty(t, tk.Session().LastMessage()) r = tk.MustQuery("SHOW WARNINGS") @@ -540,7 +540,7 @@ func TestInsertIgnore(t *testing.T) { testSQL = "insert ignore into t values (1,1);" tk.MustExec(testSQL) require.Empty(t, tk.Session().LastMessage()) - _, err = tk.Exec(testSQL) + err = tk.ExecToErr(testSQL) require.Empty(t, tk.Session().LastMessage()) require.NoError(t, err) r = tk.MustQuery("SHOW WARNINGS") @@ -748,7 +748,7 @@ commit;` 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.Exec(`INSERT t1 VALUES (1, 1) ON DUPLICATE KEY UPDATE f2 = null;`) + 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()) @@ -968,25 +968,25 @@ func TestReplace(t *testing.T) { errReplaceSQL := `replace replace_test (c1) values ();` tk.MustExec("begin") - _, err := tk.Exec(errReplaceSQL) + 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.Exec(errReplaceSQL) + err = tk.ExecToErr(errReplaceSQL) require.Error(t, err) tk.MustExec("rollback") errReplaceSQL = `replace replace_test (xxx) values (3);` tk.MustExec("begin") - _, err = tk.Exec(errReplaceSQL) + err = tk.ExecToErr(errReplaceSQL) require.Error(t, err) tk.MustExec("rollback") errReplaceSQL = `replace replace_test_xxx (c1) values ();` tk.MustExec("begin") - _, err = tk.Exec(errReplaceSQL) + err = tk.ExecToErr(errReplaceSQL) require.Error(t, err) tk.MustExec("rollback") @@ -996,13 +996,13 @@ func TestReplace(t *testing.T) { errReplaceSetSQL := `replace replace_test set c1 = 4, c1 = 5;` tk.MustExec("begin") - _, err = tk.Exec(errReplaceSetSQL) + err = tk.ExecToErr(errReplaceSetSQL) require.Error(t, err) tk.MustExec("rollback") errReplaceSetSQL = `replace replace_test set xxx = 6;` tk.MustExec("begin") - _, err = tk.Exec(errReplaceSetSQL) + err = tk.ExecToErr(errReplaceSetSQL) require.Error(t, err) tk.MustExec("rollback") @@ -1020,7 +1020,7 @@ func TestReplace(t *testing.T) { errReplaceSelectSQL := `replace replace_test_1 select c1 from replace_test;` tk.MustExec("begin") - _, err = tk.Exec(errReplaceSelectSQL) + err = tk.ExecToErr(errReplaceSelectSQL) require.Error(t, err) tk.MustExec("rollback") @@ -1219,25 +1219,25 @@ func TestPartitionedTableReplace(t *testing.T) { errReplaceSQL := `replace replace_test (c1) values ();` tk.MustExec("begin") - _, err := tk.Exec(errReplaceSQL) + 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.Exec(errReplaceSQL) + err = tk.ExecToErr(errReplaceSQL) require.Error(t, err) tk.MustExec("rollback") errReplaceSQL = `replace replace_test (xxx) values (3);` tk.MustExec("begin") - _, err = tk.Exec(errReplaceSQL) + err = tk.ExecToErr(errReplaceSQL) require.Error(t, err) tk.MustExec("rollback") errReplaceSQL = `replace replace_test_xxx (c1) values ();` tk.MustExec("begin") - _, err = tk.Exec(errReplaceSQL) + err = tk.ExecToErr(errReplaceSQL) require.Error(t, err) tk.MustExec("rollback") @@ -1247,13 +1247,13 @@ func TestPartitionedTableReplace(t *testing.T) { errReplaceSetSQL := `replace replace_test set c1 = 4, c1 = 5;` tk.MustExec("begin") - _, err = tk.Exec(errReplaceSetSQL) + err = tk.ExecToErr(errReplaceSetSQL) require.Error(t, err) tk.MustExec("rollback") errReplaceSetSQL = `replace replace_test set xxx = 6;` tk.MustExec("begin") - _, err = tk.Exec(errReplaceSetSQL) + err = tk.ExecToErr(errReplaceSetSQL) require.Error(t, err) tk.MustExec("rollback") @@ -1278,7 +1278,7 @@ func TestPartitionedTableReplace(t *testing.T) { errReplaceSelectSQL := `replace replace_test_1 select c1 from replace_test;` tk.MustExec("begin") - _, err = tk.Exec(errReplaceSelectSQL) + err = tk.ExecToErr(errReplaceSelectSQL) require.Error(t, err) tk.MustExec("rollback") @@ -1357,37 +1357,37 @@ func TestHashPartitionedTableReplace(t *testing.T) { errReplaceSQL := `replace replace_test (c1) values ();` tk.MustExec("begin") - _, err := tk.Exec(errReplaceSQL) + 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.Exec(errReplaceSQL) + err = tk.ExecToErr(errReplaceSQL) require.Error(t, err) tk.MustExec("rollback") errReplaceSQL = `replace replace_test (xxx) values (3);` tk.MustExec("begin") - _, err = tk.Exec(errReplaceSQL) + err = tk.ExecToErr(errReplaceSQL) require.Error(t, err) tk.MustExec("rollback") errReplaceSQL = `replace replace_test_xxx (c1) values ();` tk.MustExec("begin") - _, err = tk.Exec(errReplaceSQL) + 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.Exec(errReplaceSetSQL) + err = tk.ExecToErr(errReplaceSetSQL) require.Error(t, err) tk.MustExec("rollback") errReplaceSetSQL = `replace replace_test set xxx = 6;` tk.MustExec("begin") - _, err = tk.Exec(errReplaceSetSQL) + err = tk.ExecToErr(errReplaceSetSQL) require.Error(t, err) tk.MustExec("rollback") @@ -1408,7 +1408,7 @@ func TestHashPartitionedTableReplace(t *testing.T) { errReplaceSelectSQL := `replace replace_test_1 select c1 from replace_test;` tk.MustExec("begin") - _, err = tk.Exec(errReplaceSelectSQL) + err = tk.ExecToErr(errReplaceSelectSQL) require.Error(t, err) tk.MustExec("rollback") @@ -1515,7 +1515,7 @@ func TestPartitionedTableUpdate(t *testing.T) { r = tk.MustQuery("select * from t;") r.Check(testkit.Rows("8 aa", "9 bb")) - _, err := tk.Exec("update t set id = null where name = 'aa'") + 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. @@ -1527,7 +1527,7 @@ func TestPartitionedTableUpdate(t *testing.T) { PARTITION p2 VALUES LESS THAN (16), PARTITION p3 VALUES LESS THAN (21))`) tk.MustExec("insert t values (1, 1), (2, 2);") - _, err = tk.Exec("update t set name = 1 where id = 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")) @@ -1539,7 +1539,7 @@ func TestPartitionedTableUpdate(t *testing.T) { PARTITION p1 VALUES LESS THAN (11))`) tk.MustExec("insert into t values (5)") tk.MustExec("insert into t values (7)") - _, err = tk.Exec("update ignore t set a = 5 where a = 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;") @@ -1547,7 +1547,7 @@ func TestPartitionedTableUpdate(t *testing.T) { tk.MustQuery("select * from t order by a").Check(testkit.Rows("5", "7")) // test update ignore for truncate as warning - _, err = tk.Exec("update ignore t set a = 1 where a = (select '2a')") + 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'")) @@ -1560,7 +1560,7 @@ func TestPartitionedTableUpdate(t *testing.T) { PARTITION p1 VALUES LESS THAN (11))`) tk.MustExec("insert into t values (5)") tk.MustExec("insert into t values (7)") - _, err = tk.Exec("update ignore t set a = 5 where a = 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;") @@ -1584,7 +1584,7 @@ func TestUpdateCastOnlyModifiedValues(t *testing.T) { 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.Exec("update update_modified set col_1 = 2, col_2 = 'c'") + 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 ")) @@ -1712,9 +1712,9 @@ func TestDelete(t *testing.T) { // Test delete ignore tk.MustExec("insert into delete_test values (2, 'abc')") - _, err := tk.Exec("delete from delete_test where id = (select '2a')") + err := tk.ExecToErr("delete from delete_test where id = (select '2a')") require.Error(t, err) - _, err = tk.Exec("delete ignore from delete_test where id = (select '2a')") + 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;") @@ -1724,12 +1724,12 @@ func TestDelete(t *testing.T) { tk.CheckExecResult(1, 0) tk.MustExec("create view v as select * from delete_test") - _, err = tk.Exec("delete from v where name = 'aaa'") + 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.Exec("delete from seq") + err = tk.ExecToErr("delete from seq") require.EqualError(t, err, "delete sequence seq is not supported now") tk.MustExec("drop sequence seq") } @@ -1765,9 +1765,9 @@ func TestPartitionedTableDelete(t *testing.T) { // Test delete ignore tk.MustExec("insert into t values (2, 'abc')") - _, err := tk.Exec("delete from t where id = (select '2a')") + err := tk.ExecToErr("delete from t where id = (select '2a')") require.Error(t, err) - _, err = tk.Exec("delete ignore from t where id = (select '2a')") + err = tk.ExecToErr("delete ignore from t where id = (select '2a')") require.NoError(t, err) tk.CheckExecResult(1, 0) r := tk.MustQuery("SHOW WARNINGS;") @@ -1854,7 +1854,7 @@ func TestQualifiedDelete(t *testing.T) { tk.MustExec("delete a, b from t1 as a join t2 as b where a.c2 = b.c1") tk.CheckExecResult(2, 0) - _, err := tk.Exec("delete t1, t2 from t1 as a join t2 as b where a.c2 = b.c1") + err := tk.ExecToErr("delete t1, t2 from t1 as a join t2 as b where a.c2 = b.c1") require.Error(t, err) } @@ -1982,10 +1982,10 @@ func TestLoadData(t *testing.T) { tk.MustExec("use test") createSQL := `drop table if exists load_data_test; create table load_data_test (id int PRIMARY KEY AUTO_INCREMENT, c1 int, c2 varchar(255) default "def", c3 int);` - _, err := tk.Exec("load data local infile '/tmp/nonexistence.csv' into table load_data_test") + err := tk.ExecToErr("load data local infile '/tmp/nonexistence.csv' into table load_data_test") require.Error(t, err) tk.MustExec(createSQL) - _, err = tk.Exec("load data infile '/tmp/nonexistence.csv' into table load_data_test") + err = tk.ExecToErr("load data infile '/tmp/nonexistence.csv' into table load_data_test") require.Error(t, err) tk.MustExec("load data local infile '/tmp/nonexistence.csv' ignore into table load_data_test") ctx := tk.Session().(sessionctx.Context) @@ -2401,8 +2401,7 @@ func TestLatch(t *testing.T) { tk1.MustExec("begin") tk1.MustExec("update t set id = id + 1") tk2.MustExec("update t set id = id + 1") - _, err = tk1.Exec("commit") - require.True(t, kv.ErrWriteConflictInTiDB.Equal(err)) + tk1.MustGetDBError("commit", kv.ErrWriteConflictInTiDB) tk1.MustExec("set @@tidb_disable_txn_auto_retry = 0") tk1.MustExec("update t set id = id + 1") @@ -2556,11 +2555,11 @@ func TestDataTooLongErrMsg(t *testing.T) { tk := testkit.NewTestKit(t, store) tk.MustExec("use test") tk.MustExec("create table t(a varchar(2));") - _, err := tk.Exec("insert into t values('123');") + err := tk.ExecToErr("insert into t values('123');") require.True(t, types.ErrDataTooLong.Equal(err)) require.EqualError(t, err, "[types:1406]Data too long for column 'a' at row 1") tk.MustExec("insert into t values('12')") - _, err = tk.Exec("update t set a = '123' where a = '12';") + err = tk.ExecToErr("update t set a = '123' where a = '12';") require.True(t, types.ErrDataTooLong.Equal(err)) require.EqualError(t, err, "[types:1406]Data too long for column 'a' at row 1") } @@ -2648,7 +2647,7 @@ func TestReplaceLog(t *testing.T) { err = txn.Commit(context.Background()) require.NoError(t, err) - _, err = tk.Exec(`replace into testLog values (0, 0), (1, 1);`) + err = tk.ExecToErr(`replace into testLog values (0, 0), (1, 1);`) require.Error(t, err) require.EqualError(t, err, `can not be duplicated row, due to old row not found. handle 1 not found`) tk.MustQuery(`admin cleanup index testLog b;`).Check(testkit.Rows("1")) @@ -2676,7 +2675,7 @@ func TestRebaseIfNeeded(t *testing.T) { require.NoError(t, err) txn, err := ctx.Txn(true) require.NoError(t, err) - require.Nil(t, txn.Commit(context.Background())) + require.NoError(t, txn.Commit(context.Background())) tk.MustExec(`update t set b = 3 where a = 30001;`) tk.MustExec(`insert into t (b) values (4);`) @@ -2705,8 +2704,7 @@ func TestDeferConstraintCheckForDelete(t *testing.T) { tk.MustExec("begin") tk.MustExec("insert into t1 values(1, 3)") tk.MustExec("delete from t1 where j = 3") - _, err := tk.Exec("commit") - require.EqualError(t, err, "previous statement: delete from t1 where j = 3: [kv:1062]Duplicate entry '1' for key 'PRIMARY'") + tk.MustGetErrMsg("commit", "previous statement: delete from t1 where j = 3: [kv:1062]Duplicate entry '1' for key 'PRIMARY'") tk.MustExec("rollback") tk.MustExec("create table t2(i int, j int, unique index idx(i))") @@ -2714,8 +2712,7 @@ func TestDeferConstraintCheckForDelete(t *testing.T) { tk.MustExec("begin") tk.MustExec("insert into t2 values(1, 3)") tk.MustExec("delete from t2 where j = 3") - _, err = tk.Exec("commit") - require.EqualError(t, err, "previous statement: delete from t2 where j = 3: [kv:1062]Duplicate entry '1' for key 'idx'") + tk.MustGetErrMsg("commit", "previous statement: delete from t2 where j = 3: [kv:1062]Duplicate entry '1' for key 'idx'") tk.MustExec("admin check table t2") tk.MustExec("create table t3(i int, j int, primary key(i))") @@ -2751,14 +2748,14 @@ func TestDeferConstraintCheckForInsert(t *testing.T) { tk.MustExec(`drop table if exists t;create table t (a int primary key, b int);`) tk.MustExec(`insert into t values (1,2),(2,2)`) - _, err := tk.Exec("update t set a=a+1 where b=2") + err := tk.ExecToErr("update t set a=a+1 where b=2") require.Error(t, err) tk.MustExec(`drop table if exists t;create table t (i int key);`) tk.MustExec(`insert t values (1);`) tk.MustExec(`set tidb_constraint_check_in_place = 1;`) tk.MustExec(`begin;`) - _, err = tk.Exec(`insert t values (1);`) + err = tk.ExecToErr(`insert t values (1);`) require.Error(t, err) tk.MustExec(`update t set i = 2 where i = 1;`) tk.MustExec(`commit;`) @@ -2767,9 +2764,9 @@ func TestDeferConstraintCheckForInsert(t *testing.T) { tk.MustExec(`set tidb_constraint_check_in_place = 0;`) tk.MustExec("replace into t values (1),(2)") tk.MustExec("begin") - _, err = tk.Exec("update t set i = 2 where i = 1") + err = tk.ExecToErr("update t set i = 2 where i = 1") require.Error(t, err) - _, err = tk.Exec("insert into t values (1) on duplicate key update i = i + 1") + err = tk.ExecToErr("insert into t values (1) on duplicate key update i = i + 1") require.Error(t, err) tk.MustExec("rollback") @@ -2778,16 +2775,16 @@ func TestDeferConstraintCheckForInsert(t *testing.T) { tk.MustExec(`set tidb_constraint_check_in_place = 1;`) tk.MustExec(`set @@autocommit = 0;`) - _, err = tk.Exec("insert into t values (3, 1)") + err = tk.ExecToErr("insert into t values (3, 1)") require.Error(t, err) - _, err = tk.Exec("insert into t values (1, 3)") + err = tk.ExecToErr("insert into t values (1, 3)") require.Error(t, err) tk.MustExec("commit") tk.MustExec(`set tidb_constraint_check_in_place = 0;`) tk.MustExec("insert into t values (3, 1)") tk.MustExec("insert into t values (1, 3)") - _, err = tk.Exec("commit") + err = tk.ExecToErr("commit") require.Error(t, err) // Cover the temporary table. @@ -2798,12 +2795,12 @@ func TestDeferConstraintCheckForInsert(t *testing.T) { tk.MustExec("create global temporary table t (a int primary key, b int) on commit delete rows") tk.MustExec("begin") tk.MustExec("insert into t values (1, 1)") - _, err = tk.Exec(`insert into t values (1, 3)`) + err = tk.ExecToErr(`insert into t values (1, 3)`) require.Error(t, err) tk.MustExec("insert into t values (2, 2)") - _, err = tk.Exec("update t set a = a + 1 where a = 1") + err = tk.ExecToErr("update t set a = a + 1 where a = 1") require.Error(t, err) - _, err = tk.Exec("insert into t values (1, 3) on duplicated key update a = a + 1") + err = tk.ExecToErr("insert into t values (1, 3) on duplicated key update a = a + 1") require.Error(t, err) tk.MustExec("commit") @@ -2811,12 +2808,12 @@ func TestDeferConstraintCheckForInsert(t *testing.T) { tk.MustExec("create global temporary table t (a int, b int unique) on commit delete rows") tk.MustExec("begin") tk.MustExec("insert into t values (1, 1)") - _, err = tk.Exec(`insert into t values (3, 1)`) + err = tk.ExecToErr(`insert into t values (3, 1)`) require.Error(t, err) tk.MustExec("insert into t values (2, 2)") - _, err = tk.Exec("update t set b = b + 1 where a = 1") + err = tk.ExecToErr("update t set b = b + 1 where a = 1") require.Error(t, err) - _, err = tk.Exec("insert into t values (3, 1) on duplicated key update b = b + 1") + err = tk.ExecToErr("insert into t values (3, 1) on duplicated key update b = b + 1") require.Error(t, err) tk.MustExec("commit") @@ -2825,22 +2822,22 @@ func TestDeferConstraintCheckForInsert(t *testing.T) { tk.MustExec("create temporary table tl (a int primary key, b int)") tk.MustExec("begin") tk.MustExec("insert into tl values (1, 1)") - _, err = tk.Exec(`insert into tl values (1, 3)`) + err = tk.ExecToErr(`insert into tl values (1, 3)`) require.Error(t, err) tk.MustExec("insert into tl values (2, 2)") - _, err = tk.Exec("update tl set a = a + 1 where a = 1") + err = tk.ExecToErr("update tl set a = a + 1 where a = 1") require.Error(t, err) - _, err = tk.Exec("insert into tl values (1, 3) on duplicated key update a = a + 1") + err = tk.ExecToErr("insert into tl values (1, 3) on duplicated key update a = a + 1") require.Error(t, err) tk.MustExec("commit") tk.MustExec("begin") tk.MustQuery("select * from tl").Check(testkit.Rows("1 1", "2 2")) - _, err = tk.Exec(`insert into tl values (1, 3)`) + err = tk.ExecToErr(`insert into tl values (1, 3)`) require.Error(t, err) - _, err = tk.Exec("update tl set a = a + 1 where a = 1") + err = tk.ExecToErr("update tl set a = a + 1 where a = 1") require.Error(t, err) - _, err = tk.Exec("insert into tl values (1, 3) on duplicated key update a = a + 1") + err = tk.ExecToErr("insert into tl values (1, 3) on duplicated key update a = a + 1") require.Error(t, err) tk.MustExec("rollback") @@ -2848,22 +2845,22 @@ func TestDeferConstraintCheckForInsert(t *testing.T) { tk.MustExec("create temporary table tl (a int, b int unique)") tk.MustExec("begin") tk.MustExec("insert into tl values (1, 1)") - _, err = tk.Exec(`insert into tl values (3, 1)`) + err = tk.ExecToErr(`insert into tl values (3, 1)`) require.Error(t, err) tk.MustExec("insert into tl values (2, 2)") - _, err = tk.Exec("update tl set b = b + 1 where a = 1") + err = tk.ExecToErr("update tl set b = b + 1 where a = 1") require.Error(t, err) - _, err = tk.Exec("insert into tl values (3, 1) on duplicated key update b = b + 1") + err = tk.ExecToErr("insert into tl values (3, 1) on duplicated key update b = b + 1") require.Error(t, err) tk.MustExec("commit") tk.MustExec("begin") tk.MustQuery("select * from tl").Check(testkit.Rows("1 1", "2 2")) - _, err = tk.Exec(`insert into tl values (3, 1)`) + err = tk.ExecToErr(`insert into tl values (3, 1)`) require.Error(t, err) - _, err = tk.Exec("update tl set b = b + 1 where a = 1") + err = tk.ExecToErr("update tl set b = b + 1 where a = 1") require.Error(t, err) - _, err = tk.Exec("insert into tl values (3, 1) on duplicated key update b = b + 1") + err = tk.ExecToErr("insert into tl values (3, 1) on duplicated key update b = b + 1") require.Error(t, err) tk.MustExec("rollback") } @@ -2916,7 +2913,7 @@ func TestIssue11059(t *testing.T) { tk.MustExec("create table t (pk int primary key, uk int unique, v int)") tk.MustExec("insert into t values (2, 11, 215)") tk.MustExec("insert into t values (3, 7, 2111)") - _, err := tk.Exec("update t set pk = 2 where uk = 7") + err := tk.ExecToErr("update t set pk = 2 where uk = 7") require.Error(t, err) } @@ -2953,7 +2950,7 @@ func TestSetWithRefGenCol(t *testing.T) { tk.MustExec(`create table t2 (j int(11) GENERATED ALWAYS AS (i + 1) stored not null, i int(11) DEFAULT '5');`) tk.MustExec(`insert into t2 set i = j + 9`) tk.MustQuery("select * from t2").Check(testkit.Rows("10 9")) - _, err := tk.Exec(`insert into t2 set j = i + 1`) + err := tk.ExecToErr(`insert into t2 set j = i + 1`) require.Error(t, err) tk.MustExec(`insert into t2 set i = j + 100`) tk.MustQuery("select * from t2").Check(testkit.Rows("10 9", "101 100")) @@ -2961,7 +2958,7 @@ func TestSetWithRefGenCol(t *testing.T) { tk.MustExec(`create table t3(j int(11) GENERATED ALWAYS AS (i + 1) stored, i int(11) DEFAULT '5');`) tk.MustExec(`insert into t3 set i = j + 100`) tk.MustQuery("select * from t3").Check(testkit.Rows(" ")) - _, err = tk.Exec(`insert into t3 set j = i + 1`) + err = tk.ExecToErr(`insert into t3 set j = i + 1`) require.Error(t, err) } @@ -3054,10 +3051,8 @@ func TestWriteListPartitionTable(t *testing.T) { // Test insert error tk.MustExec("insert into t values (1, 'a')") - _, err := tk.Exec("insert into t values (1, 'd')") - require.EqualError(t, err, "[kv:1062]Duplicate entry '1' for key 'idx'") - _, err = tk.Exec("insert into t values (100, 'd')") - require.EqualError(t, err, "[table:1526]Table has no partition for value 100") + tk.MustGetErrMsg("insert into t values (1, 'd')", "[kv:1062]Duplicate entry '1' for key 'idx'") + tk.MustGetErrMsg("insert into t values (100, 'd')", "[table:1526]Table has no partition for value 100") tk.MustExec("admin check table t;") // Test select partition @@ -3104,9 +3099,9 @@ func TestWriteListColumnsPartitionTable(t *testing.T) { // Test insert error tk.MustExec("insert into t values (1, 'a')") - _, err := tk.Exec("insert into t values (1, 'd')") + err := tk.ExecToErr("insert into t values (1, 'd')") require.EqualError(t, err, "[kv:1062]Duplicate entry '1' for key 'idx'") - _, err = tk.Exec("insert into t values (100, 'd')") + err = tk.ExecToErr("insert into t values (100, 'd')") require.EqualError(t, err, "[table:1526]Table has no partition for value from column_list") tk.MustExec("admin check table t;") @@ -3139,7 +3134,7 @@ func TestWriteListPartitionTable1(t *testing.T) { // Test add unique index failed. tk.MustExec("insert into t values (1, 'a'),(1,'b')") - _, err := tk.Exec("alter table t add unique index idx (id)") + err := tk.ExecToErr("alter table t add unique index idx (id)") require.EqualError(t, err, "[kv:1062]Duplicate entry '1' for key 'idx'") // Test add unique index success. tk.MustExec("delete from t where name='b'") @@ -3164,7 +3159,7 @@ func TestWriteListPartitionTable1(t *testing.T) { 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 - _, err = tk.Exec("insert into t values (3, 'a'), (11,'x') on duplicate key update id=id+1") + err = tk.ExecToErr("insert into t values (3, 'a'), (11,'x') on duplicate key update id=id+1") require.EqualError(t, err, "[kv:1062]Duplicate entry '4' for key '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 @@ -3179,7 +3174,7 @@ func TestWriteListPartitionTable1(t *testing.T) { 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. - _, err = tk.Exec("insert into t values (100, 'd')") + err = tk.ExecToErr("insert into t values (100, 'd')") require.EqualError(t, err, "[table:1526]Table has no partition for value 100") // --------------------------Test update--------------------------- @@ -3193,7 +3188,7 @@ func TestWriteListPartitionTable1(t *testing.T) { 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. - _, err = tk.Exec("update t set id=2 where id = 1") + err = tk.ExecToErr("update t set id=2 where id = 1") require.EqualError(t, err, "[kv:1062]Duplicate entry '2' for key 'idx'") tk.MustQuery("select * from t order by id").Check(testkit.Rows("1 y", "2 y", "3 c")) @@ -3205,11 +3200,11 @@ func TestWriteListPartitionTable1(t *testing.T) { 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. - _, err = tk.Exec("update t set id=id+17 where id in (3,10)") + err = tk.ExecToErr("update t set id=id+17 where id in (3,10)") require.EqualError(t, err, "[kv:1062]Duplicate entry '20' for key 'idx'") tk.MustQuery("select * from t order by id").Check(testkit.Rows("3 a", "10 a", "20 a")) // Test update meet no partition error. - _, err = tk.Exec("update t set id=id*2 where id in (3,20)") + err = tk.ExecToErr("update t set id=id*2 where id in (3,20)") require.EqualError(t, err, "[table:1526]Table has no partition for value 40") tk.MustQuery("select * from t order by id").Check(testkit.Rows("3 a", "10 a", "20 a")) @@ -3228,7 +3223,7 @@ func TestWriteListPartitionTable1(t *testing.T) { 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. - _, err = tk.Exec("replace into t values (10,'x'),(50,'x')") + err = tk.ExecToErr("replace into t values (10,'x'),(50,'x')") require.EqualError(t, err, "[table:1526]Table has no partition for value 50") tk.MustQuery("select * from t order by id").Check(testkit.Rows("1 x", "2 b", "3 c", "4 d", "7 x")) @@ -3267,7 +3262,7 @@ func TestWriteListPartitionTable2(t *testing.T) { // Test add unique index failed. tk.MustExec("insert into t (id,name) values (1, 'a'),(1,'b')") - _, err := tk.Exec("alter table t add unique index idx (id,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 'idx'") // Test add unique index success. tk.MustExec("delete from t where name='b'") @@ -3292,7 +3287,7 @@ func TestWriteListPartitionTable2(t *testing.T) { 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.Exec("insert into t (id,name) values (3, 'a'), (11,'x') on duplicate key update id=id+1") + 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 '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 @@ -3307,7 +3302,7 @@ func TestWriteListPartitionTable2(t *testing.T) { 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.Exec("insert into t (id,name) values (100, 'd')") + 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--------------------------- @@ -3321,8 +3316,7 @@ func TestWriteListPartitionTable2(t *testing.T) { 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. - _, err = tk.Exec("update t set id=2 where id = 1") - require.EqualError(t, err, "[kv:1062]Duplicate entry '2-2' for key 'idx'") + tk.MustGetErrMsg("update t set id=2 where id = 1", "[kv:1062]Duplicate entry '2-2' for key 'idx'") tk.MustQuery("select id,name from t order by id").Check(testkit.Rows("1 y", "2 y", "3 c")) // Test update multi-partitions @@ -3333,12 +3327,10 @@ func TestWriteListPartitionTable2(t *testing.T) { 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. - _, err = tk.Exec("update t set id=id+17 where id in (3,10)") - require.EqualError(t, err, "[kv:1062]Duplicate entry '20-2' for key 'idx'") + tk.MustGetErrMsg("update t set id=id+17 where id in (3,10)", "[kv:1062]Duplicate entry '20-2' for key '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. - _, err = tk.Exec("update t set id=id*2 where id in (3,20)") - require.EqualError(t, err, "[table:1526]Table has no partition for value 40") + 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--------------------------- @@ -3356,8 +3348,7 @@ func TestWriteListPartitionTable2(t *testing.T) { 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. - _, err = tk.Exec("replace into t (id,name) values (10,'x'),(50,'x')") - require.EqualError(t, err, "[table:1526]Table has no partition for value 50") + 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--------------------------- @@ -3394,8 +3385,7 @@ func TestWriteListColumnsPartitionTable1(t *testing.T) { // Test add unique index failed. tk.MustExec("insert into t values (1, 'a'),(1,'b')") - _, err := tk.Exec("alter table t add unique index idx (id)") - require.EqualError(t, err, "[kv:1062]Duplicate entry '1' for key 'idx'") + tk.MustGetErrMsg("alter table t add unique index idx (id)", "[kv:1062]Duplicate entry '1' for key 'idx'") // Test add unique index success. tk.MustExec("delete from t where name='b'") tk.MustExec("alter table t add unique index idx (id)") @@ -3419,8 +3409,7 @@ func TestWriteListColumnsPartitionTable1(t *testing.T) { 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 - _, err = tk.Exec("insert into t values (3, 'a'), (11,'x') on duplicate key update id=id+1") - require.EqualError(t, err, "[kv:1062]Duplicate entry '4' for key 'idx'") + tk.MustGetErrMsg("insert into t values (3, 'a'), (11,'x') on duplicate key update id=id+1", "[kv:1062]Duplicate entry '4' for key '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')") @@ -3434,8 +3423,7 @@ func TestWriteListColumnsPartitionTable1(t *testing.T) { 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. - _, err = tk.Exec("insert into t values (100, 'd')") - require.EqualError(t, err, "[table:1526]Table has no partition for value from column_list") + 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. @@ -3448,8 +3436,7 @@ func TestWriteListColumnsPartitionTable1(t *testing.T) { 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. - _, err = tk.Exec("update t set id=2 where id = 1") - require.EqualError(t, err, "[kv:1062]Duplicate entry '2' for key 'idx'") + tk.MustGetErrMsg("update t set id=2 where id = 1", "[kv:1062]Duplicate entry '2' for key 'idx'") tk.MustQuery("select * from t order by id").Check(testkit.Rows("1 y", "2 y", "3 c")) // Test update multi-partitions @@ -3460,12 +3447,10 @@ func TestWriteListColumnsPartitionTable1(t *testing.T) { 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. - _, err = tk.Exec("update t set id=id+17 where id in (3,10)") - require.EqualError(t, err, "[kv:1062]Duplicate entry '20' for key 'idx'") + tk.MustGetErrMsg("update t set id=id+17 where id in (3,10)", "[kv:1062]Duplicate entry '20' for key 'idx'") tk.MustQuery("select * from t order by id").Check(testkit.Rows("3 a", "10 a", "20 a")) // Test update meet no partition error. - _, err = tk.Exec("update t set id=id*2 where id in (3,20)") - require.EqualError(t, err, "[table:1526]Table has no partition for value from column_list") + 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--------------------------- @@ -3483,8 +3468,7 @@ func TestWriteListColumnsPartitionTable1(t *testing.T) { 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. - _, err = tk.Exec("replace into t values (10,'x'),(100,'x')") - require.EqualError(t, err, "[table:1526]Table has no partition for value from column_list") + 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--------------------------- @@ -3521,7 +3505,7 @@ func TestWriteListColumnsPartitionTable2(t *testing.T) { // Test add unique index failed. tk.MustExec("insert into t values ('w', 1, 1),('w', 1, 2)") - _, err := tk.Exec("alter table t add unique index idx (location,id)") + err := tk.ExecToErr("alter table t add unique index idx (location,id)") require.EqualError(t, err, "[kv:1062]Duplicate entry 'w-1' for key 'idx'") // Test add unique index success. tk.MustExec("delete from t where a=2") @@ -3548,8 +3532,7 @@ func TestWriteListColumnsPartitionTable2(t *testing.T) { tk.MustQuery("select * from t partition(p_west) order by id").Check(testkit.Rows()) // Test insert on duplicate error tk.MustExec("insert into t values ('w', 2, 2), ('w', 1, 1)") - _, err = tk.Exec("insert into t values ('w', 2, 3) on duplicate key update id=1") - require.EqualError(t, err, "[kv:1062]Duplicate entry 'w-1' for key 'idx'") + tk.MustGetErrMsg("insert into t values ('w', 2, 3) on duplicate key update id=1", "[kv:1062]Duplicate entry 'w-1' for key 'idx'") tk.MustQuery("select * from t partition(p_west) order by id").Check(testkit.Rows("w 1 1", "w 2 2")) // Test insert ignore with duplicate tk.MustExec("insert ignore into t values ('w', 2, 2), ('w', 3, 3), ('n', 10, 10)") @@ -3561,14 +3544,10 @@ func TestWriteListColumnsPartitionTable2(t *testing.T) { tk.MustQuery("select * from t partition(p_west) order by id").Check(testkit.Rows("w 1 1", "w 2 2", "w 3 3", "w 4 4")) tk.MustQuery("select * from t partition(p_south) order by id").Check(testkit.Rows("s 13 2", "s 14 14")) // Test insert meet no partition error. - _, err = tk.Exec("insert into t values ('w', 5, 5)") - require.EqualError(t, err, "[table:1526]Table has no partition for value from column_list") - _, err = tk.Exec("insert into t values ('s', 5, 5)") - require.EqualError(t, err, "[table:1526]Table has no partition for value from column_list") - _, err = tk.Exec("insert into t values ('s', 100, 5)") - require.EqualError(t, err, "[table:1526]Table has no partition for value from column_list") - _, err = tk.Exec("insert into t values ('x', 1, 5)") - require.EqualError(t, err, "[table:1526]Table has no partition for value from column_list") + tk.MustGetErrMsg("insert into t values ('w', 5, 5)", "[table:1526]Table has no partition for value from column_list") + tk.MustGetErrMsg("insert into t values ('s', 5, 5)", "[table:1526]Table has no partition for value from column_list") + tk.MustGetErrMsg("insert into t values ('s', 100, 5)", "[table:1526]Table has no partition for value from column_list") + tk.MustGetErrMsg("insert into t values ('x', 1, 5)", "[table:1526]Table has no partition for value from column_list") // --------------------------Test update--------------------------- // Test update 1 partition. @@ -3585,7 +3564,7 @@ func TestWriteListColumnsPartitionTable2(t *testing.T) { tk.MustExec("update t set a=a+id where id>1") tk.MustQuery("select * from t partition(p_west) order by id,a").Check(testkit.Rows("w 1 5", "w 2 5", "w 3 6")) // Test update meet duplicate error. - _, err = tk.Exec("update t set id=id+1 where location='w' and id<2") + err = tk.ExecToErr("update t set id=id+1 where location='w' and id<2") require.EqualError(t, err, "[kv:1062]Duplicate entry 'w-2' for key 'idx'") tk.MustQuery("select * from t partition(p_west) order by id,a").Check(testkit.Rows("w 1 5", "w 2 5", "w 3 6")) @@ -3603,11 +3582,11 @@ func TestWriteListColumnsPartitionTable2(t *testing.T) { tk.MustExec("update t set a=a+1 where location='n' and id=11") tk.MustQuery("select * from t order by id").Check(testkit.Rows("w 1 4", "w 2 4", "e 8 9", "n 11 15")) // Test update meet duplicate error. - _, err = tk.Exec("update t set id=id+1 where location='w' and id in (1,2)") + err = tk.ExecToErr("update t set id=id+1 where location='w' and id in (1,2)") require.EqualError(t, err, "[kv:1062]Duplicate entry 'w-2' for key 'idx'") tk.MustQuery("select * from t order by id").Check(testkit.Rows("w 1 4", "w 2 4", "e 8 9", "n 11 15")) // Test update meet no partition error. - _, err = tk.Exec("update t set id=id+3 where location='w' and id in (1,2)") + err = tk.ExecToErr("update t set id=id+3 where location='w' and id in (1,2)") require.EqualError(t, err, "[table:1526]Table has no partition for value from column_list") tk.MustQuery("select * from t order by id").Check(testkit.Rows("w 1 4", "w 2 4", "e 8 9", "n 11 15")) // Test update that move from partition 1 to partition 2. @@ -3628,14 +3607,10 @@ func TestWriteListColumnsPartitionTable2(t *testing.T) { tk.MustExec("replace into t values ('w', 1, 2),('n', 10, 10)") tk.MustQuery("select * from t order by id").Check(testkit.Rows("w 1 2", "e 5 5", "n 9 9", "n 10 10")) // Test replace meet no partition error. - _, err = tk.Exec("replace into t values ('w', 5, 5)") - require.EqualError(t, err, "[table:1526]Table has no partition for value from column_list") - _, err = tk.Exec("replace into t values ('s', 5, 5)") - require.EqualError(t, err, "[table:1526]Table has no partition for value from column_list") - _, err = tk.Exec("replace into t values ('s', 100, 5)") - require.EqualError(t, err, "[table:1526]Table has no partition for value from column_list") - _, err = tk.Exec("replace into t values ('x', 1, 5)") - require.EqualError(t, err, "[table:1526]Table has no partition for value from column_list") + tk.MustGetErrMsg("replace into t values ('w', 5, 5)", "[table:1526]Table has no partition for value from column_list") + tk.MustGetErrMsg("replace into t values ('s', 5, 5)", "[table:1526]Table has no partition for value from column_list") + tk.MustGetErrMsg("replace into t values ('s', 100, 5)", "[table:1526]Table has no partition for value from column_list") + tk.MustGetErrMsg("replace into t values ('x', 1, 5)", "[table:1526]Table has no partition for value from column_list") // --------------------------Test delete--------------------------- // Test delete 1 partition. @@ -3664,7 +3639,7 @@ func TestWriteListPartitionTableIssue21437(t *testing.T) { tk.MustExec("set @@session.tidb_enable_list_partition = ON") tk.MustExec("drop table if exists t") tk.MustExec(`create table t (a int) partition by list (a%10) (partition p0 values in (0,1));`) - _, err := tk.Exec("replace into t values (null)") + err := tk.ExecToErr("replace into t values (null)") require.EqualError(t, err, "[table:1526]Table has no partition for value NULL") } @@ -3757,10 +3732,10 @@ func TestListPartitionWithGeneratedColumn(t *testing.T) { tk.MustQuery("select count(1) from t").Check(testkit.Rows("4")) // Test for insert meet no partition error - _, err := tk.Exec("insert into t (a) values (11)") + err := tk.ExecToErr("insert into t (a) values (11)") require.True(t, table.ErrNoPartitionForGivenValue.Equal(err)) // Test for update meet no partition error - _, err = tk.Exec("update t set a=a+10 where a = 2") + err = tk.ExecToErr("update t set a=a+10 where a = 2") require.True(t, table.ErrNoPartitionForGivenValue.Equal(err)) } } @@ -3800,10 +3775,10 @@ func TestListPartitionWithGeneratedColumn1(t *testing.T) { tk.MustQuery("select count(1) from t").Check(testkit.Rows("4")) // Test for insert meet no partition error - _, err := tk.Exec("insert into t (a) values (11)") + err := tk.ExecToErr("insert into t (a) values (11)") require.EqualError(t, err, "[table:1526]Table has no partition for value 2011") // Test for update meet no partition error - _, err = tk.Exec("update t set a=a+10 where a = 2") + err = tk.ExecToErr("update t set a=a+10 where a = 2") require.EqualError(t, err, "[table:1526]Table has no partition for value 2012") tk.MustExec("delete from t") @@ -3826,11 +3801,9 @@ func TestListPartitionWithGeneratedColumn1(t *testing.T) { tk.MustQuery("select count(1) from t").Check(testkit.Rows("4")) // Test for insert meet no partition error - _, err = tk.Exec("insert into t (a) values (2011)") - require.EqualError(t, err, "[table:1526]Table has no partition for value 2011") + tk.MustGetErrMsg("insert into t (a) values (2011)", "[table:1526]Table has no partition for value 2011") // Test for update meet no partition error - _, err = tk.Exec("update t set a=a+10 where a = 2002") - require.EqualError(t, err, "[table:1526]Table has no partition for value 2012") + tk.MustGetErrMsg("update t set a=a+10 where a = 2002", "[table:1526]Table has no partition for value 2012") } } @@ -3911,7 +3884,7 @@ func TestIssue22496(t *testing.T) { tk.MustExec("use test") tk.MustExec("drop table if exists t12") tk.MustExec("create table t12(d decimal(15,2));") - _, err := tk.Exec("insert into t12 values('1,9999.00')") + err := tk.ExecToErr("insert into t12 values('1,9999.00')") require.Error(t, err) tk.MustExec("set sql_mode=''") tk.MustExec("insert into t12 values('1,999.00');") @@ -4021,7 +3994,7 @@ func TestUpdate(t *testing.T) { 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.Exec("update update_test set id = null where name = '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") @@ -4038,7 +4011,7 @@ func TestUpdate(t *testing.T) { 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.Exec("update update_unique set name = 1 where id = 2") + 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")) @@ -4048,7 +4021,7 @@ func TestUpdate(t *testing.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.Exec("update ignore t set a = 1 where a = 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;") @@ -4056,7 +4029,7 @@ func TestUpdate(t *testing.T) { tk.MustQuery("select * from t").Check(testkit.Rows("1", "2")) // test update ignore for truncate as warning - _, err = tk.Exec("update ignore t set a = 1 where a = (select '2a')") + 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 'PRIMARY'")) @@ -4069,7 +4042,7 @@ func TestUpdate(t *testing.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.Exec("update ignore t set a = 1 where a = 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;") @@ -4143,7 +4116,7 @@ func TestUpdate(t *testing.T) { 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.Exec("UPDATE t SET c2=16777215 WHERE c1>= -8388608 AND c1 < -9 ORDER BY c1 LIMIT 2") + 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) @@ -4161,7 +4134,7 @@ func TestUpdate(t *testing.T) { // issue 7237, update subquery table should be forbidden tk.MustExec("drop table t") tk.MustExec("create table t (k int, v int)") - _, err = tk.Exec("update t, (select * from t) as b set b.k = t.k") + 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") @@ -4176,7 +4149,7 @@ func TestUpdate(t *testing.T) { 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.Exec("update t set c1 = 2.0;") + err = tk.ExecToErr("update t set c1 = 2.0;") require.True(t, types.ErrWarnDataOutOfRange.Equal(err)) tk.MustExec("drop table if exists t") @@ -4191,7 +4164,7 @@ func TestUpdate(t *testing.T) { tk.MustExec("set @@sql_mode=@orig_sql_mode;") tk.MustExec("create view v as select * from t") - _, err = tk.Exec("update v set a = '2000-11-11'") + 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") @@ -4281,7 +4254,7 @@ func TestListColumnsPartitionWithGlobalIndex(t *testing.T) { //tk.MustQuery("select a from t partition (p1) order by a").Check(testkit.Rows("bbb")) tk.MustQuery("select * from t where a = 'bbb' order by a").Check(testkit.Rows("bbb b")) // Test insert meet duplicate error. - _, err := tk.Exec("insert into t (a) values ('abc')") + err := tk.ExecToErr("insert into t (a) values ('abc')") require.Error(t, err) // Test insert on duplicate update tk.MustExec("insert into t (a) values ('abc') on duplicate key update a='bbc'") diff --git a/expression/BUILD.bazel b/expression/BUILD.bazel new file mode 100644 index 0000000000000..031d7ad48efce --- /dev/null +++ b/expression/BUILD.bazel @@ -0,0 +1,231 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "expression", + srcs = [ + "builtin.go", + "builtin_arithmetic.go", + "builtin_arithmetic_vec.go", + "builtin_cast.go", + "builtin_cast_vec.go", + "builtin_compare.go", + "builtin_compare_vec.go", + "builtin_compare_vec_generated.go", + "builtin_control.go", + "builtin_control_vec_generated.go", + "builtin_convert_charset.go", + "builtin_encryption.go", + "builtin_encryption_vec.go", + "builtin_info.go", + "builtin_info_vec.go", + "builtin_json.go", + "builtin_json_vec.go", + "builtin_like.go", + "builtin_like_vec.go", + "builtin_math.go", + "builtin_math_vec.go", + "builtin_miscellaneous.go", + "builtin_miscellaneous_vec.go", + "builtin_op.go", + "builtin_op_vec.go", + "builtin_other.go", + "builtin_other_vec.go", + "builtin_other_vec_generated.go", + "builtin_string.go", + "builtin_string_vec.go", + "builtin_string_vec_generated.go", + "builtin_time.go", + "builtin_time_vec.go", + "builtin_time_vec_generated.go", + "builtin_vectorized.go", + "chunk_executor.go", + "collation.go", + "column.go", + "constant.go", + "constant_fold.go", + "constant_propagation.go", + "distsql_builtin.go", + "errors.go", + "evaluator.go", + "explain.go", + "expr_to_pb.go", + "expression.go", + "function_traits.go", + "helper.go", + "partition_pruner.go", + "scalar_function.go", + "schema.go", + "simple_rewriter.go", + "util.go", + "vectorized.go", + ], + importpath = "github.com/pingcap/tidb/expression", + visibility = ["//visibility:public"], + deps = [ + "//config", + "//errno", + "//kv", + "//parser", + "//parser/ast", + "//parser/auth", + "//parser/charset", + "//parser/model", + "//parser/mysql", + "//parser/opcode", + "//parser/terror", + "//parser/types", + "//privilege", + "//sessionctx", + "//sessionctx/stmtctx", + "//sessionctx/variable", + "//types", + "//types/json", + "//types/parser_driver", + "//util", + "//util/chunk", + "//util/codec", + "//util/collate", + "//util/dbterror", + "//util/disjointset", + "//util/encrypt", + "//util/generatedexpr", + "//util/hack", + "//util/logutil", + "//util/mathutil", + "//util/mock", + "//util/parser", + "//util/plancodec", + "//util/printer", + "//util/set", + "//util/sqlexec", + "//util/stringutil", + "//util/vitess", + "@com_github_gogo_protobuf//proto", + "@com_github_google_uuid//:uuid", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_pingcap_tipb//go-tipb", + "@com_github_tikv_client_go_v2//oracle", + "@org_golang_x_tools//container/intsets", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "expression_test", + srcs = [ + "bench_test.go", + "builtin_arithmetic_test.go", + "builtin_arithmetic_vec_test.go", + "builtin_cast_bench_test.go", + "builtin_cast_test.go", + "builtin_cast_vec_test.go", + "builtin_compare_test.go", + "builtin_compare_vec_generated_test.go", + "builtin_compare_vec_test.go", + "builtin_control_test.go", + "builtin_control_vec_generated_test.go", + "builtin_encryption_test.go", + "builtin_encryption_vec_test.go", + "builtin_info_test.go", + "builtin_info_vec_test.go", + "builtin_json_test.go", + "builtin_json_vec_test.go", + "builtin_like_test.go", + "builtin_like_vec_test.go", + "builtin_math_test.go", + "builtin_math_vec_test.go", + "builtin_miscellaneous_test.go", + "builtin_miscellaneous_vec_test.go", + "builtin_op_test.go", + "builtin_op_vec_test.go", + "builtin_other_test.go", + "builtin_other_vec_generated_test.go", + "builtin_other_vec_test.go", + "builtin_regexp_vec_const_test.go", + "builtin_string_test.go", + "builtin_string_vec_generated_test.go", + "builtin_string_vec_test.go", + "builtin_test.go", + "builtin_time_test.go", + "builtin_time_vec_generated_test.go", + "builtin_time_vec_test.go", + "builtin_vectorized_test.go", + "collation_test.go", + "column_test.go", + "constant_fold_test.go", + "constant_propagation_test.go", + "constant_test.go", + "distsql_builtin_test.go", + "evaluator_test.go", + "expr_to_pb_test.go", + "expression_test.go", + "flag_simplify_test.go", + "function_traits_test.go", + "helper_test.go", + "integration_serial_test.go", + "integration_test.go", + "main_test.go", + "scalar_function_test.go", + "schema_test.go", + "typeinfer_test.go", + "util_test.go", + ], + data = glob(["testdata/**"]), + embed = [":expression"], + flaky = True, + shard_count = 50, + deps = [ + "//config", + "//domain", + "//errno", + "//kv", + "//parser", + "//parser/ast", + "//parser/auth", + "//parser/charset", + "//parser/model", + "//parser/mysql", + "//parser/terror", + "//planner/core", + "//session", + "//sessionctx", + "//sessionctx/stmtctx", + "//sessionctx/variable", + "//sessiontxn", + "//table", + "//tablecodec", + "//testkit", + "//testkit/testdata", + "//testkit/testmain", + "//testkit/testsetup", + "//testkit/testutil", + "//types", + "//types/json", + "//types/parser_driver", + "//util", + "//util/benchdaily", + "//util/chunk", + "//util/codec", + "//util/collate", + "//util/hack", + "//util/kvcache", + "//util/mathutil", + "//util/mock", + "//util/printer", + "//util/sem", + "//util/sqlexec", + "//util/timeutil", + "//util/versioninfo", + "@com_github_gogo_protobuf//proto", + "@com_github_google_uuid//:uuid", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_pingcap_tipb//go-tipb", + "@com_github_stretchr_testify//assert", + "@com_github_stretchr_testify//require", + "@com_github_tikv_client_go_v2//oracle", + "@com_github_tikv_client_go_v2//tikv", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/expression/aggregation/BUILD.bazel b/expression/aggregation/BUILD.bazel new file mode 100644 index 0000000000000..d46e4f30e9383 --- /dev/null +++ b/expression/aggregation/BUILD.bazel @@ -0,0 +1,74 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "aggregation", + srcs = [ + "agg_to_pb.go", + "aggregation.go", + "avg.go", + "base_func.go", + "bit_and.go", + "bit_or.go", + "bit_xor.go", + "concat.go", + "count.go", + "descriptor.go", + "explain.go", + "first_row.go", + "max_min.go", + "sum.go", + "util.go", + "window_func.go", + ], + importpath = "github.com/pingcap/tidb/expression/aggregation", + visibility = ["//visibility:public"], + deps = [ + "//expression", + "//kv", + "//parser/ast", + "//parser/charset", + "//parser/mysql", + "//parser/terror", + "//planner/util", + "//sessionctx", + "//sessionctx/stmtctx", + "//sessionctx/variable", + "//types", + "//util/chunk", + "//util/codec", + "//util/collate", + "//util/mathutil", + "//util/mvmap", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_tipb//go-tipb", + ], +) + +go_test( + name = "aggregation_test", + srcs = [ + "agg_to_pb_test.go", + "aggregation_test.go", + "base_func_test.go", + "bench_test.go", + "main_test.go", + "util_test.go", + ], + embed = [":aggregation"], + flaky = True, + deps = [ + "//expression", + "//kv", + "//parser/ast", + "//parser/mysql", + "//sessionctx", + "//sessionctx/stmtctx", + "//sessionctx/variable", + "//testkit/testsetup", + "//types", + "//util/chunk", + "//util/mock", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/expression/aggregation/agg_to_pb.go b/expression/aggregation/agg_to_pb.go index b72d76d04e7b7..2377c40f953f2 100644 --- a/expression/aggregation/agg_to_pb.go +++ b/expression/aggregation/agg_to_pb.go @@ -99,46 +99,49 @@ 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) *tipb.Expr { +func AggFuncToPBExpr(sctx sessionctx.Context, client kv.Client, aggFunc *AggFuncDesc, storeType kv.StoreType) (*tipb.Expr, error) { pc := expression.NewPBConverter(client, sctx.GetSessionVars().StmtCtx) tp := aggFunc.GetTiPBExpr(false) if !client.IsRequestTypeSupported(kv.ReqTypeSelect, int64(tp)) { - return nil + return nil, errors.New("select request is not supported by client") } children := make([]*tipb.Expr, 0, len(aggFunc.Args)) for _, arg := range aggFunc.Args { pbArg := pc.ExprToPB(arg) if pbArg == nil { - return nil + return nil, errors.New(aggFunc.String() + " can't be converted to PB.") } children = append(children, pbArg) } + retType, err := expression.ToPBFieldTypeWithCheck(aggFunc.RetTp, storeType) + if err != nil { + return nil, errors.Trace(err) + } + 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) if pbArg == nil { - return nil + return nil, errors.New(aggFunc.String() + " can't be converted to PB.") } orderBy = append(orderBy, pbArg) } // encode GroupConcatMaxLen GCMaxLen, err := variable.GetSessionOrGlobalSystemVar(sctx.GetSessionVars(), variable.GroupConcatMaxLen) if err != nil { - sc.AppendWarning(errors.Errorf("Error happened when buildGroupConcat: no system variable named '%s'", variable.GroupConcatMaxLen)) - return nil + return nil, errors.Errorf("Error happened when buildGroupConcat: no system variable named '%s'", variable.GroupConcatMaxLen) } maxLen, err := strconv.ParseUint(GCMaxLen, 10, 64) // Should never happen if err != nil { - sc.AppendWarning(errors.Errorf("Error happened when buildGroupConcat: %s", err.Error())) - return nil + return nil, errors.Errorf("Error happened when buildGroupConcat: %s", err.Error()) } - return &tipb.Expr{Tp: tp, Val: codec.EncodeUint(nil, maxLen), Children: children, FieldType: expression.ToPBFieldType(aggFunc.RetTp), HasDistinct: aggFunc.HasDistinct, OrderBy: orderBy, AggFuncMode: AggFunctionModeToPB(aggFunc.Mode)} + return &tipb.Expr{Tp: tp, Val: codec.EncodeUint(nil, maxLen), Children: children, FieldType: retType, HasDistinct: aggFunc.HasDistinct, OrderBy: orderBy, AggFuncMode: AggFunctionModeToPB(aggFunc.Mode)}, nil } - return &tipb.Expr{Tp: tp, Children: children, FieldType: expression.ToPBFieldType(aggFunc.RetTp), HasDistinct: aggFunc.HasDistinct, AggFuncMode: AggFunctionModeToPB(aggFunc.Mode)} + return &tipb.Expr{Tp: tp, Children: children, FieldType: retType, HasDistinct: aggFunc.HasDistinct, AggFuncMode: AggFunctionModeToPB(aggFunc.Mode)}, nil } // AggFunctionModeToPB converts aggregate function mode to PB. diff --git a/expression/aggregation/agg_to_pb_test.go b/expression/aggregation/agg_to_pb_test.go index 31558d16c7467..45251badf2f9e 100644 --- a/expression/aggregation/agg_to_pb_test.go +++ b/expression/aggregation/agg_to_pb_test.go @@ -20,6 +20,7 @@ import ( "testing" "github.com/pingcap/tidb/expression" + "github.com/pingcap/tidb/kv" "github.com/pingcap/tidb/parser/ast" "github.com/pingcap/tidb/parser/mysql" "github.com/pingcap/tidb/types" @@ -65,7 +66,8 @@ func TestAggFunc2Pb(t *testing.T) { aggFunc, err := NewAggFuncDesc(ctx, funcName, args, hasDistinct) require.NoError(t, err) aggFunc.RetTp = funcTypes[i] - pbExpr := AggFuncToPBExpr(ctx, client, aggFunc) + pbExpr, err := AggFuncToPBExpr(ctx, client, aggFunc, kv.UnSpecified) + require.NoError(t, err) js, err := json.Marshal(pbExpr) require.NoError(t, err) require.Equal(t, fmt.Sprintf(jsons[i], hasDistinct), string(js)) diff --git a/expression/aggregation/base_func.go b/expression/aggregation/base_func.go index ffed0ddcee3a3..7f72b94ea15a6 100644 --- a/expression/aggregation/base_func.go +++ b/expression/aggregation/base_func.go @@ -185,21 +185,14 @@ func (a *baseFuncDesc) typeInfer4Sum(ctx sessionctx.Context) { switch a.Args[0].GetType().GetType() { case mysql.TypeTiny, mysql.TypeShort, mysql.TypeInt24, mysql.TypeLong, mysql.TypeLonglong, mysql.TypeYear: a.RetTp = types.NewFieldType(mysql.TypeNewDecimal) - a.RetTp.SetFlen(mathutil.Min(a.Args[0].GetType().GetFlen()+21, mysql.MaxDecimalWidth)) + a.RetTp.SetFlenUnderLimit(a.Args[0].GetType().GetFlen() + 21) a.RetTp.SetDecimal(0) - if a.Args[0].GetType().GetFlen() < 0 || a.RetTp.GetFlen() > mysql.MaxDecimalWidth { + if a.Args[0].GetType().GetFlen() < 0 { a.RetTp.SetFlen(mysql.MaxDecimalWidth) } case mysql.TypeNewDecimal: a.RetTp = types.NewFieldType(mysql.TypeNewDecimal) - a.RetTp.SetFlen(a.Args[0].GetType().GetFlen() + 22) - a.RetTp.SetDecimal(a.Args[0].GetType().GetDecimal()) - if a.Args[0].GetType().GetFlen() < 0 || a.RetTp.GetFlen() > mysql.MaxDecimalWidth { - a.RetTp.SetFlen(mysql.MaxDecimalWidth) - } - if a.RetTp.GetDecimal() < 0 || a.RetTp.GetDecimal() > mysql.MaxDecimalScale { - a.RetTp.SetDecimal(mysql.MaxDecimalScale) - } + a.RetTp.UpdateFlenAndDecimalUnderLimit(a.Args[0].GetType(), 0, 22) case mysql.TypeDouble, mysql.TypeFloat: a.RetTp = types.NewFieldType(mysql.TypeDouble) a.RetTp.SetFlen(mysql.MaxRealWidth) @@ -226,20 +219,12 @@ func (a *baseFuncDesc) typeInfer4Avg(ctx sessionctx.Context) { switch a.Args[0].GetType().GetType() { case mysql.TypeTiny, mysql.TypeShort, mysql.TypeInt24, mysql.TypeLong, mysql.TypeLonglong: a.RetTp = types.NewFieldType(mysql.TypeNewDecimal) - a.RetTp.SetDecimal(types.DivFracIncr) + a.RetTp.SetDecimalUnderLimit(types.DivFracIncr) flen, _ := mysql.GetDefaultFieldLengthAndDecimal(a.Args[0].GetType().GetType()) - a.RetTp.SetFlen(flen + types.DivFracIncr) + a.RetTp.SetFlenUnderLimit(flen + types.DivFracIncr) case mysql.TypeYear, mysql.TypeNewDecimal: a.RetTp = types.NewFieldType(mysql.TypeNewDecimal) - if a.Args[0].GetType().GetDecimal() < 0 { - a.RetTp.SetDecimal(mysql.MaxDecimalScale) - } else { - a.RetTp.SetDecimal(mathutil.Min(a.Args[0].GetType().GetDecimal()+types.DivFracIncr, mysql.MaxDecimalScale)) - } - a.RetTp.SetFlen(mathutil.Min(mysql.MaxDecimalWidth, a.Args[0].GetType().GetFlen()+types.DivFracIncr)) - if a.Args[0].GetType().GetFlen() < 0 { - a.RetTp.SetFlen(mysql.MaxDecimalWidth) - } + a.RetTp.UpdateFlenAndDecimalUnderLimit(a.Args[0].GetType(), types.DivFracIncr, types.DivFracIncr) case mysql.TypeDouble, mysql.TypeFloat: a.RetTp = types.NewFieldType(mysql.TypeDouble) a.RetTp.SetFlen(mysql.MaxRealWidth) diff --git a/expression/bench_test.go b/expression/bench_test.go index 86803ae527008..a8b3da39c5fe8 100644 --- a/expression/bench_test.go +++ b/expression/bench_test.go @@ -19,6 +19,7 @@ package expression import ( "flag" "fmt" + "math" "math/rand" "net" "reflect" @@ -715,6 +716,20 @@ func (g *randHexStrGener) gen() interface{} { return string(buf) } +// dateGener is used to generate a date +type dateGener struct { + randGen *defaultRandGen +} + +func (g dateGener) gen() interface{} { + year := 1970 + g.randGen.Intn(100) + month := g.randGen.Intn(10) + 1 + day := g.randGen.Intn(20) + 1 + gt := types.FromDate(year, month, day, 0, 0, 0, 0) + d := types.NewTime(gt, mysql.TypeDate, types.DefaultFsp) + return d +} + // dateTimeGener is used to generate a dataTime type dateTimeGener struct { Fsp int @@ -744,7 +759,9 @@ func (g *dateTimeGener) gen() interface{} { return t } -// dateTimeStrGener is used to generate strings which are dataTime format +// dateTimeStrGener is used to generate strings which are dateTime format. +// Fsp must be -1 to 9 otherwise will be ignored. -1 will generate a 0 to 9 random length fsp part, otherwise the fsp part will be of fixed length. +// Fsp more than 6 is to test robustness of fsp part parsing. type dateTimeStrGener struct { Fsp int Year int @@ -763,14 +780,17 @@ func (g *dateTimeStrGener) gen() interface{} { if g.Day == 0 { g.Day = g.randGen.Intn(20) + 1 } + if g.Fsp == -1 { + g.Fsp = g.randGen.Intn(10) + } hour := g.randGen.Intn(12) minute := g.randGen.Intn(60) second := g.randGen.Intn(60) dataTimeStr := fmt.Sprintf("%d-%d-%d %d:%d:%d", g.Year, g.Month, g.Day, hour, minute, second) - if g.Fsp > 0 && g.Fsp <= 6 { + if g.Fsp > 0 && g.Fsp <= 9 { microFmt := fmt.Sprintf(".%%0%dd", g.Fsp) - return dataTimeStr + fmt.Sprintf(microFmt, g.randGen.Int()%(10^g.Fsp)) + return dataTimeStr + fmt.Sprintf(microFmt, g.randGen.Int()%int(math.Pow10(g.Fsp))) } return dataTimeStr @@ -803,6 +823,21 @@ func (g *dateStrGener) gen() interface{} { return fmt.Sprintf("%d-%d-%d", g.Year, g.Month, g.Day) } +// dateOrDatetimeStrGener is used to generate strings which are date or datetime format. +type dateOrDatetimeStrGener struct { + dateRatio float64 + dateStrGener + dateTimeStrGener +} + +func (g dateOrDatetimeStrGener) gen() interface{} { + if g.dateRatio > 1e-6 && g.dateStrGener.randGen.Float64() < g.dateRatio { + return g.dateStrGener.gen() + } + + return g.dateTimeStrGener.gen() +} + // timeStrGener is used to generate strings which are time format type timeStrGener struct { nullRation float64 @@ -820,24 +855,194 @@ func (g *timeStrGener) gen() interface{} { return fmt.Sprintf("%d:%d:%d", hour, minute, second) } +// dateIntGener is used to generate int values which are date format. +type dateIntGener struct { + dateGener +} + +func (g dateIntGener) gen() interface{} { + t := g.dateGener.gen().(types.Time) + num, err := t.ToNumber().ToInt() + if err != nil { + panic(err) + } + return num +} + +// dateTimeIntGener is used to generate int values which are dateTime format. type dateTimeIntGener struct { dateTimeGener - nullRation float64 } -func (g *dateTimeIntGener) gen() interface{} { - if g.randGen.Float64() < g.nullRation { - return nil +func (g dateTimeIntGener) gen() interface{} { + t := g.dateTimeGener.gen().(types.Time) + num, err := t.ToNumber().ToInt() + if err != nil { + panic(err) } + return num +} + +// dateOrDatetimeIntGener is used to generate int values which are date or datetime format. +type dateOrDatetimeIntGener struct { + dateRatio float64 + dateIntGener + dateTimeIntGener +} + +func (g dateOrDatetimeIntGener) gen() interface{} { + if g.dateRatio > 1e-6 && g.dateGener.randGen.Float64() < g.dateRatio { + return g.dateIntGener.gen() + } + + return g.dateTimeIntGener.gen() +} +// dateRealGener is used to generate floating point values which are date format. +// `fspRatio` is used to control the ratio of values with fractional part. I.e., 20010203.000456789 is a valid representation of a date. +type dateRealGener struct { + fspRatio float64 + dateGener +} + +func (g dateRealGener) gen() interface{} { + t := g.dateGener.gen().(types.Time) + num, err := t.ToNumber().ToFloat64() + if err != nil { + panic(err) + } + + if g.randGen.Float64() >= g.fspRatio { + return num + } + + num += g.randGen.Float64() + return num +} + +// dateTimeRealGener is used to generate floating point values which are dateTime format. +// `fspRatio` is used to control the ratio of values with fractional part. +type dateTimeRealGener struct { + fspRatio float64 + dateTimeGener +} + +func (g dateTimeRealGener) gen() interface{} { t := g.dateTimeGener.gen().(types.Time) - num, err := t.ToNumber().ToInt() + tmp, err := t.ToNumber().ToInt() if err != nil { panic(err) } + num := float64(tmp) + + if g.randGen.Float64() >= g.fspRatio { + return num + } + + // Not using `t`'s us part since it's too regular. + // Instead, generating a more arbitrary fractional part, e.g. with more than 6 digits. + // We want the parsing logic to be strong enough to deal with this arbitrary fractional number. + num += g.randGen.Float64() return num } +// dateOrDatetimeRealGener is used to generate floating point values which are date or datetime format. +type dateOrDatetimeRealGener struct { + dateRatio float64 + dateRealGener + dateTimeRealGener +} + +func (g dateOrDatetimeRealGener) gen() interface{} { + if g.dateRatio > 1e-6 && g.dateGener.randGen.Float64() < g.dateRatio { + return g.dateRealGener.gen() + } + + return g.dateTimeRealGener.gen() +} + +// dateDecimalGener is used to generate decimals which are date format. +// `fspRatio` is used to control the ratio of values with fractional part. I.e., 20010203.000456789 is a valid representation of a date. +type dateDecimalGener struct { + fspRatio float64 + dateGener +} + +func (g dateDecimalGener) gen() interface{} { + t := g.dateGener.gen().(types.Time) + intPart := t.ToNumber() + + if g.randGen.Float64() >= g.fspRatio { + return intPart + } + + // Generate a fractional part that is at most 9 digits. + fracDigits := g.randGen.Intn(1000000000) + fracPart := new(types.MyDecimal).FromInt(int64(fracDigits)) + if err := fracPart.Shift(-9); err != nil { + panic(err) + } + + res := new(types.MyDecimal) + err := types.DecimalAdd(intPart, fracPart, res) + if err != nil { + panic(err) + } + return res +} + +// dateTimeDecimalGener is used to generate decimals which are dateTime format. +type dateTimeDecimalGener struct { + fspRatio float64 + dateTimeGener +} + +func (g dateTimeDecimalGener) gen() interface{} { + t := g.dateTimeGener.gen().(types.Time) + num := t.ToNumber() + // Not using `num`'s fractional part so that we can: + // 1. Return early for non-fsp values. + // 2. Generate a more arbitrary fractional part if needed. + i, err := num.ToInt() + if err != nil { + panic(err) + } + intPart := new(types.MyDecimal).FromInt(i) + + if g.randGen.Float64() >= g.fspRatio { + return intPart + } + + // Generate a fractional part that is at most 9 digits. + fracDigits := g.randGen.Intn(1000000000) + fracPart := new(types.MyDecimal).FromInt(int64(fracDigits)) + if err := fracPart.Shift(-9); err != nil { + panic(err) + } + + res := new(types.MyDecimal) + err = types.DecimalAdd(intPart, fracPart, res) + if err != nil { + panic(err) + } + return res +} + +// dateOrDatetimeDecimalGener is used to generate decimals which are date or datetime format. +type dateOrDatetimeDecimalGener struct { + dateRatio float64 + dateDecimalGener + dateTimeDecimalGener +} + +func (g dateOrDatetimeDecimalGener) gen() interface{} { + if g.dateRatio > 1e-6 && g.dateGener.randGen.Float64() < g.dateRatio { + return g.dateDecimalGener.gen() + } + + return g.dateTimeDecimalGener.gen() +} + // constStrGener always returns the given string type constStrGener struct { s string diff --git a/expression/builtin.go b/expression/builtin.go index af6d78ab2e161..ebd37910dd279 100644 --- a/expression/builtin.go +++ b/expression/builtin.go @@ -570,10 +570,10 @@ var funcs = map[string]functionClass{ ast.Truncate: &truncateFunctionClass{baseFunctionClass{ast.Truncate, 2, 2}}, // time functions - ast.AddDate: &addDateFunctionClass{baseFunctionClass{ast.AddDate, 3, 3}}, - ast.DateAdd: &addDateFunctionClass{baseFunctionClass{ast.DateAdd, 3, 3}}, - ast.SubDate: &subDateFunctionClass{baseFunctionClass{ast.SubDate, 3, 3}}, - ast.DateSub: &subDateFunctionClass{baseFunctionClass{ast.DateSub, 3, 3}}, + ast.AddDate: &addSubDateFunctionClass{baseFunctionClass{ast.AddDate, 3, 3}, addTime, addDuration, setAdd}, + ast.DateAdd: &addSubDateFunctionClass{baseFunctionClass{ast.DateAdd, 3, 3}, addTime, addDuration, setAdd}, + ast.SubDate: &addSubDateFunctionClass{baseFunctionClass{ast.SubDate, 3, 3}, subTime, subDuration, setSub}, + ast.DateSub: &addSubDateFunctionClass{baseFunctionClass{ast.DateSub, 3, 3}, subTime, subDuration, setSub}, ast.AddTime: &addTimeFunctionClass{baseFunctionClass{ast.AddTime, 2, 2}}, ast.ConvertTz: &convertTzFunctionClass{baseFunctionClass{ast.ConvertTz, 3, 3}}, ast.Curdate: ¤tDateFunctionClass{baseFunctionClass{ast.Curdate, 0, 0}}, @@ -887,11 +887,11 @@ func GetBuiltinList() []string { } func (b *baseBuiltinFunc) setDecimalAndFlenForDatetime(fsp int) { - b.tp.SetDecimal(fsp) - b.tp.SetFlen(mysql.MaxDatetimeWidthNoFsp + fsp) + b.tp.SetDecimalUnderLimit(fsp) + b.tp.SetFlenUnderLimit(mysql.MaxDatetimeWidthNoFsp + fsp) if fsp > 0 { // Add the length for `.`. - b.tp.SetFlen(b.tp.GetFlen() + 1) + b.tp.SetFlenUnderLimit(b.tp.GetFlen() + 1) } } @@ -902,10 +902,10 @@ func (b *baseBuiltinFunc) setDecimalAndFlenForDate() { } func (b *baseBuiltinFunc) setDecimalAndFlenForTime(fsp int) { - b.tp.SetDecimal(fsp) - b.tp.SetFlen(mysql.MaxDurationWidthNoFsp + fsp) + b.tp.SetDecimalUnderLimit(fsp) + b.tp.SetFlenUnderLimit(mysql.MaxDurationWidthNoFsp + fsp) if fsp > 0 { // Add the length for `.`. - b.tp.SetFlen(b.tp.GetFlen() + 1) + b.tp.SetFlenUnderLimit(b.tp.GetFlen() + 1) } } diff --git a/expression/builtin_arithmetic.go b/expression/builtin_arithmetic.go index 3a9f42f3f17e7..29579fb06a3f1 100644 --- a/expression/builtin_arithmetic.go +++ b/expression/builtin_arithmetic.go @@ -90,9 +90,9 @@ func numericContextResultType(ft *types.FieldType) types.EvalType { func setFlenDecimal4RealOrDecimal(ctx sessionctx.Context, retTp *types.FieldType, arg0, arg1 Expression, isReal bool, isMultiply bool) { a, b := arg0.GetType(), arg1.GetType() if a.GetDecimal() != types.UnspecifiedLength && b.GetDecimal() != types.UnspecifiedLength { - retTp.SetDecimal(a.GetDecimal() + b.GetDecimal()) + retTp.SetDecimalUnderLimit(a.GetDecimal() + b.GetDecimal()) if !isMultiply { - retTp.SetDecimal(mathutil.Max(a.GetDecimal(), b.GetDecimal())) + retTp.SetDecimalUnderLimit(mathutil.Max(a.GetDecimal(), b.GetDecimal())) } if !isReal && retTp.GetDecimal() > mysql.MaxDecimalScale { retTp.SetDecimal(mysql.MaxDecimalScale) @@ -105,12 +105,12 @@ func setFlenDecimal4RealOrDecimal(ctx sessionctx.Context, retTp *types.FieldType if isMultiply { digitsInt = a.GetFlen() - a.GetDecimal() + b.GetFlen() - b.GetDecimal() } - retTp.SetFlen(digitsInt + retTp.GetDecimal() + 1) + retTp.SetFlenUnderLimit(digitsInt + retTp.GetDecimal() + 1) if isReal { retTp.SetFlen(mathutil.Min(retTp.GetFlen(), mysql.MaxRealWidth)) return } - retTp.SetFlen(mathutil.Min(retTp.GetFlen(), mysql.MaxDecimalWidth)) + retTp.SetFlenUnderLimit(mathutil.Min(retTp.GetFlen(), mysql.MaxDecimalWidth)) return } if isReal { @@ -130,20 +130,14 @@ func (c *arithmeticDivideFunctionClass) setType4DivDecimal(retTp, a, b *types.Fi if decb == types.UnspecifiedFsp { decb = 0 } - retTp.SetDecimal(deca + precIncrement) - if retTp.GetDecimal() > mysql.MaxDecimalScale { - retTp.SetDecimal(mysql.MaxDecimalScale) - } + retTp.SetDecimalUnderLimit(deca + precIncrement) if a.GetFlen() == types.UnspecifiedLength { retTp.SetFlen(mysql.MaxDecimalWidth) return } aPrec := types.DecimalLength2Precision(a.GetFlen(), a.GetDecimal(), mysql.HasUnsignedFlag(a.GetFlag())) - retTp.SetFlen(aPrec + decb + precIncrement) - retTp.SetFlen(types.Precision2LengthNoTruncation(retTp.GetFlen(), retTp.GetDecimal(), mysql.HasUnsignedFlag(retTp.GetFlag()))) - if retTp.GetFlen() > mysql.MaxDecimalWidth { - retTp.SetFlen(mysql.MaxDecimalWidth) - } + retTp.SetFlenUnderLimit(aPrec + decb + precIncrement) + retTp.SetFlenUnderLimit(types.Precision2LengthNoTruncation(retTp.GetFlen(), retTp.GetDecimal(), mysql.HasUnsignedFlag(retTp.GetFlag()))) } func (c *arithmeticDivideFunctionClass) setType4DivReal(retTp *types.FieldType) { @@ -883,10 +877,7 @@ func (c *arithmeticModFunctionClass) setType4ModRealOrDecimal(retTp, a, b *types if a.GetDecimal() == types.UnspecifiedLength || b.GetDecimal() == types.UnspecifiedLength { retTp.SetDecimal(types.UnspecifiedLength) } else { - retTp.SetDecimal(mathutil.Max(a.GetDecimal(), b.GetDecimal())) - if isDecimal && retTp.GetDecimal() > mysql.MaxDecimalScale { - retTp.SetDecimal(mysql.MaxDecimalScale) - } + retTp.SetDecimalUnderLimit(mathutil.Max(a.GetDecimal(), b.GetDecimal())) } if a.GetFlen() == types.UnspecifiedLength || b.GetFlen() == types.UnspecifiedLength { @@ -894,7 +885,7 @@ func (c *arithmeticModFunctionClass) setType4ModRealOrDecimal(retTp, a, b *types } else { retTp.SetFlen(mathutil.Max(a.GetFlen(), b.GetFlen())) if isDecimal { - retTp.SetFlen(mathutil.Min(retTp.GetFlen(), mysql.MaxDecimalWidth)) + retTp.SetFlenUnderLimit(retTp.GetFlen()) return } retTp.SetFlen(mathutil.Min(retTp.GetFlen(), mysql.MaxRealWidth)) diff --git a/expression/builtin_cast.go b/expression/builtin_cast.go index ac580985a8e54..cc7b9d3683b71 100644 --- a/expression/builtin_cast.go +++ b/expression/builtin_cast.go @@ -29,6 +29,7 @@ import ( "github.com/pingcap/errors" "github.com/pingcap/tidb/parser/ast" + "github.com/pingcap/tidb/parser/charset" "github.com/pingcap/tidb/parser/model" "github.com/pingcap/tidb/parser/mysql" "github.com/pingcap/tidb/parser/terror" @@ -916,7 +917,7 @@ func (b *builtinCastRealAsDurationSig) evalDuration(row chunk.Row) (res types.Du if isNull || err != nil { return res, isNull, err } - res, err = types.ParseDuration(b.ctx.GetSessionVars().StmtCtx, strconv.FormatFloat(val, 'f', -1, 64), b.tp.GetDecimal()) + res, _, err = types.ParseDuration(b.ctx.GetSessionVars().StmtCtx, strconv.FormatFloat(val, 'f', -1, 64), b.tp.GetDecimal()) if err != nil { if types.ErrTruncatedWrongVal.Equal(err) { err = b.ctx.GetSessionVars().StmtCtx.HandleTruncate(err) @@ -1094,7 +1095,7 @@ func (b *builtinCastDecimalAsDurationSig) evalDuration(row chunk.Row) (res types if isNull || err != nil { return res, true, err } - res, err = types.ParseDuration(b.ctx.GetSessionVars().StmtCtx, string(val.ToString()), b.tp.GetDecimal()) + res, _, err = types.ParseDuration(b.ctx.GetSessionVars().StmtCtx, string(val.ToString()), b.tp.GetDecimal()) if types.ErrTruncatedWrongVal.Equal(err) { err = b.ctx.GetSessionVars().StmtCtx.HandleTruncate(err) // ErrTruncatedWrongVal needs to be considered NULL. @@ -1317,16 +1318,12 @@ func (b *builtinCastStringAsDurationSig) evalDuration(row chunk.Row) (res types. if isNull || err != nil { return res, isNull, err } - res, err = types.ParseDuration(b.ctx.GetSessionVars().StmtCtx, val, b.tp.GetDecimal()) + res, isNull, err = types.ParseDuration(b.ctx.GetSessionVars().StmtCtx, val, b.tp.GetDecimal()) if types.ErrTruncatedWrongVal.Equal(err) { sc := b.ctx.GetSessionVars().StmtCtx err = sc.HandleTruncate(err) - // ZeroDuration of error ErrTruncatedWrongVal needs to be considered NULL. - if res == types.ZeroDuration { - return res, true, err - } } - return res, false, err + return res, isNull, err } type builtinCastTimeAsTimeSig struct { @@ -1764,7 +1761,7 @@ func (b *builtinCastJSONAsDurationSig) evalDuration(row chunk.Row) (res types.Du if err != nil { return res, false, err } - res, err = types.ParseDuration(b.ctx.GetSessionVars().StmtCtx, s, b.tp.GetDecimal()) + res, _, err = types.ParseDuration(b.ctx.GetSessionVars().StmtCtx, s, b.tp.GetDecimal()) if types.ErrTruncatedWrongVal.Equal(err) { sc := b.ctx.GetSessionVars().StmtCtx err = sc.HandleTruncate(err) @@ -1840,6 +1837,15 @@ func BuildCastCollationFunction(ctx sessionctx.Context, expr Expression, ec *Exp } else { return expr } + } else if ec.Charset == charset.CharsetBin { + // When cast character string to binary string, if we still use fixed length representation, + // then 0 padding will be used, which can affect later execution. + // e.g. https://github.com/pingcap/tidb/issues/34823. + // On the other hand, we can not directly return origin expr back, + // since we need binary collation to do string comparison later. + // e.g. https://github.com/pingcap/tidb/pull/35053#discussion_r894155052 + // Here we use VarString type of cast, i.e `cast(a as binary)`, to avoid this problem. + tp.SetType(mysql.TypeVarString) } tp.SetCharset(ec.Charset) tp.SetCollate(ec.Collation) @@ -1934,8 +1940,8 @@ func WrapWithCastAsDecimal(ctx sessionctx.Context, expr Expression) Expression { return expr } tp := types.NewFieldType(mysql.TypeNewDecimal) - tp.SetFlen(expr.GetType().GetFlen()) - tp.SetDecimal(expr.GetType().GetDecimal()) + tp.SetFlenUnderLimit(expr.GetType().GetFlen()) + tp.SetDecimalUnderLimit(expr.GetType().GetDecimal()) if expr.GetType().EvalType() == types.ETInt { tp.SetFlen(mysql.MaxIntWidth) @@ -1952,14 +1958,8 @@ func WrapWithCastAsDecimal(ctx sessionctx.Context, expr Expression) Expression { if !isnull && err == nil { precision, frac := val.PrecisionAndFrac() castTp := castExpr.GetType() - castTp.SetDecimal(frac) - castTp.SetFlen(precision) - if castTp.GetFlen() > mysql.MaxDecimalWidth { - castTp.SetFlen(mysql.MaxDecimalWidth) - } - if castTp.GetDecimal() > mysql.MaxDecimalScale { - castTp.SetDecimal(mysql.MaxDecimalScale) - } + castTp.SetDecimalUnderLimit(frac) + castTp.SetFlenUnderLimit(precision) } } return castExpr diff --git a/expression/builtin_cast_vec.go b/expression/builtin_cast_vec.go index ee29a768dd702..141ff49c26f13 100644 --- a/expression/builtin_cast_vec.go +++ b/expression/builtin_cast_vec.go @@ -939,7 +939,7 @@ func (b *builtinCastStringAsDurationSig) vecEvalDuration(input *chunk.Chunk, res if result.IsNull(i) { continue } - dur, err := types.ParseDuration(b.ctx.GetSessionVars().StmtCtx, buf.GetString(i), b.tp.GetDecimal()) + dur, isNull, err := types.ParseDuration(b.ctx.GetSessionVars().StmtCtx, buf.GetString(i), b.tp.GetDecimal()) if err != nil { if types.ErrTruncatedWrongVal.Equal(err) { err = b.ctx.GetSessionVars().StmtCtx.HandleTruncate(err) @@ -947,7 +947,7 @@ func (b *builtinCastStringAsDurationSig) vecEvalDuration(input *chunk.Chunk, res if err != nil { return err } - if dur == types.ZeroDuration { + if isNull { result.SetNull(i, true) continue } @@ -1213,7 +1213,7 @@ func (b *builtinCastRealAsDurationSig) vecEvalDuration(input *chunk.Chunk, resul if result.IsNull(i) { continue } - dur, err := types.ParseDuration(b.ctx.GetSessionVars().StmtCtx, strconv.FormatFloat(f64s[i], 'f', -1, 64), b.tp.GetDecimal()) + dur, _, err := types.ParseDuration(b.ctx.GetSessionVars().StmtCtx, 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) @@ -1793,7 +1793,7 @@ func (b *builtinCastDecimalAsDurationSig) vecEvalDuration(input *chunk.Chunk, re if result.IsNull(i) { continue } - dur, err := types.ParseDuration(b.ctx.GetSessionVars().StmtCtx, string(args[i].ToString()), b.tp.GetDecimal()) + dur, _, err := types.ParseDuration(b.ctx.GetSessionVars().StmtCtx, string(args[i].ToString()), b.tp.GetDecimal()) if err != nil { if types.ErrTruncatedWrongVal.Equal(err) { err = b.ctx.GetSessionVars().StmtCtx.HandleTruncate(err) @@ -1880,7 +1880,7 @@ func (b *builtinCastJSONAsDurationSig) vecEvalDuration(input *chunk.Chunk, resul if err != nil { return nil } - dur, err = types.ParseDuration(ctx, s, b.tp.GetDecimal()) + dur, _, err = types.ParseDuration(ctx, s, b.tp.GetDecimal()) if types.ErrTruncatedWrongVal.Equal(err) { err = ctx.HandleTruncate(err) } diff --git a/expression/builtin_compare.go b/expression/builtin_compare.go index 5a5f5936ec072..3fc5c9a58adf0 100644 --- a/expression/builtin_compare.go +++ b/expression/builtin_compare.go @@ -152,6 +152,8 @@ func (c *coalesceFunctionClass) getFunction(ctx sessionctx.Context, args []Expre // Set retType to BINARY(0) if all arguments are of type NULL. if resultFieldType.GetType() == mysql.TypeNull { types.SetBinChsClnFlag(bf.tp) + resultFieldType.SetFlen(0) + resultFieldType.SetDecimal(0) } else { maxIntLen := 0 maxFlen := 0 @@ -160,7 +162,7 @@ func (c *coalesceFunctionClass) getFunction(ctx sessionctx.Context, args []Expre // and max integer-part length in `maxIntLen`. for _, argTp := range fieldTps { if argTp.GetDecimal() > resultFieldType.GetDecimal() { - resultFieldType.SetDecimal(argTp.GetDecimal()) + resultFieldType.SetDecimalUnderLimit(argTp.GetDecimal()) } argIntLen := argTp.GetFlen() if argTp.GetDecimal() > 0 { @@ -181,12 +183,12 @@ func (c *coalesceFunctionClass) getFunction(ctx sessionctx.Context, args []Expre // For integer, field length = maxIntLen + (1/0 for sign bit) // For decimal, field length = maxIntLen + maxDecimal + (1/0 for sign bit) if resultEvalType == types.ETInt || resultEvalType == types.ETDecimal { - resultFieldType.SetFlen(maxIntLen + resultFieldType.GetDecimal()) + resultFieldType.SetFlenUnderLimit(maxIntLen + resultFieldType.GetDecimal()) if resultFieldType.GetDecimal() > 0 { - resultFieldType.SetFlen(resultFieldType.GetFlen() + 1) + resultFieldType.SetFlenUnderLimit(resultFieldType.GetFlen() + 1) } if !mysql.HasUnsignedFlag(resultFieldType.GetFlag()) { - resultFieldType.SetFlen(resultFieldType.GetFlen() + 1) + resultFieldType.SetFlenUnderLimit(resultFieldType.GetFlen() + 1) } bf.tp = resultFieldType } else { @@ -551,8 +553,8 @@ func (c *greatestFunctionClass) getFunction(ctx sessionctx.Context, args []Expre } flen, decimal := fixFlenAndDecimalForGreatestAndLeast(args) - sig.getRetTp().SetFlen(flen) - sig.getRetTp().SetDecimal(decimal) + sig.getRetTp().SetFlenUnderLimit(flen) + sig.getRetTp().SetDecimalUnderLimit(decimal) return sig, nil } @@ -863,8 +865,8 @@ func (c *leastFunctionClass) getFunction(ctx sessionctx.Context, args []Expressi } } flen, decimal := fixFlenAndDecimalForGreatestAndLeast(args) - sig.getRetTp().SetFlen(flen) - sig.getRetTp().SetDecimal(decimal) + sig.getRetTp().SetFlenUnderLimit(flen) + sig.getRetTp().SetDecimalUnderLimit(decimal) return sig, nil } diff --git a/expression/builtin_control.go b/expression/builtin_control.go index 998cafc97a7d0..cb6717de7dd15 100644 --- a/expression/builtin_control.go +++ b/expression/builtin_control.go @@ -95,7 +95,7 @@ func InferType4ControlFuncs(ctx sessionctx.Context, funcName string, lexp, rexp if lhs.GetDecimal() == types.UnspecifiedLength || rhs.GetDecimal() == types.UnspecifiedLength { resultFieldType.SetDecimal(types.UnspecifiedLength) } else { - resultFieldType.SetDecimal(mathutil.Max(lhs.GetDecimal(), rhs.GetDecimal())) + resultFieldType.SetDecimalUnderLimit(mathutil.Max(lhs.GetDecimal(), rhs.GetDecimal())) } } @@ -146,7 +146,7 @@ func InferType4ControlFuncs(ctx sessionctx.Context, funcName string, lexp, rexp rhsFlen -= rhs.GetDecimal() } flen := maxlen(lhsFlen, rhsFlen) + resultFieldType.GetDecimal() + 1 // account for -1 len fields - resultFieldType.SetFlen(mathutil.Min(flen, mysql.MaxDecimalWidth)) // make sure it doesn't overflow + resultFieldType.SetFlenUnderLimit(flen) } else { resultFieldType.SetFlen(maxlen(lhs.GetFlen(), rhs.GetFlen())) @@ -225,7 +225,7 @@ func (c *caseWhenFunctionClass) getFunction(ctx sessionctx.Context, args []Expre // Set retType to BINARY(0) if all arguments are of type NULL. if fieldTp.GetType() == mysql.TypeNull { fieldTp.SetFlen(0) - fieldTp.SetDecimal(types.UnspecifiedLength) + fieldTp.SetDecimal(0) types.SetBinChsClnFlag(fieldTp) } argTps := make([]types.EvalType, 0, l) @@ -748,7 +748,7 @@ func (c *ifNullFunctionClass) getFunction(ctx sessionctx.Context, args []Express if lhs.GetType() == mysql.TypeNull && rhs.GetType() == mysql.TypeNull { retTp.SetType(mysql.TypeNull) retTp.SetFlen(0) - retTp.SetDecimal(-1) + retTp.SetDecimal(0) types.SetBinChsClnFlag(retTp) } evalTps := retTp.EvalType() diff --git a/expression/builtin_math.go b/expression/builtin_math.go index ff7f89a514087..7cdff524fe110 100644 --- a/expression/builtin_math.go +++ b/expression/builtin_math.go @@ -138,8 +138,8 @@ func (c *absFunctionClass) getFunction(ctx sessionctx.Context, args []Expression bf.tp.SetFlen(flen) bf.tp.SetDecimal(decimal) } else { - bf.tp.SetFlen(argFieldTp.GetFlen()) - bf.tp.SetDecimal(argFieldTp.GetDecimal()) + bf.tp.SetFlenUnderLimit(argFieldTp.GetFlen()) + bf.tp.SetDecimalUnderLimit(argFieldTp.GetDecimal()) } var sig builtinFunc switch argTp { @@ -276,14 +276,14 @@ func (c *roundFunctionClass) getFunction(ctx sessionctx.Context, args []Expressi // ETInt or ETReal is set correctly by newBaseBuiltinFuncWithTp, only need to handle ETDecimal. if argTp == types.ETDecimal { - bf.tp.SetFlen(argFieldTp.GetFlen()) - bf.tp.SetDecimal(calculateDecimal4RoundAndTruncate(ctx, args, argTp)) + bf.tp.SetFlenUnderLimit(argFieldTp.GetFlen()) + bf.tp.SetDecimalUnderLimit(calculateDecimal4RoundAndTruncate(ctx, args, argTp)) if bf.tp.GetDecimal() != types.UnspecifiedLength { if argFieldTp.GetDecimal() != types.UnspecifiedLength { decimalDelta := bf.tp.GetDecimal() - argFieldTp.GetDecimal() - bf.tp.SetFlen(bf.tp.GetFlen() + mathutil.Max(decimalDelta, 0)) + bf.tp.SetFlenUnderLimit(bf.tp.GetFlen() + mathutil.Max(decimalDelta, 0)) } else { - bf.tp.SetFlen(argFieldTp.GetFlen() + bf.tp.GetDecimal()) + bf.tp.SetFlenUnderLimit(argFieldTp.GetFlen() + bf.tp.GetDecimal()) } } } @@ -493,7 +493,7 @@ func (c *ceilFunctionClass) getFunction(ctx sessionctx.Context, args []Expressio setFlag4FloorAndCeil(bf.tp, args[0]) // ETInt or ETReal is set correctly by newBaseBuiltinFuncWithTp, only need to handle ETDecimal. if retTp == types.ETDecimal { - bf.tp.SetFlen(args[0].GetType().GetFlen()) + bf.tp.SetFlenUnderLimit(args[0].GetType().GetFlen()) bf.tp.SetDecimal(0) } @@ -685,7 +685,7 @@ func (c *floorFunctionClass) getFunction(ctx sessionctx.Context, args []Expressi // ETInt or ETReal is set correctly by newBaseBuiltinFuncWithTp, only need to handle ETDecimal. if retTp == types.ETDecimal { - bf.tp.SetFlen(args[0].GetType().GetFlen()) + bf.tp.SetFlenUnderLimit(args[0].GetType().GetFlen()) bf.tp.SetDecimal(0) } switch argTp { @@ -1911,8 +1911,8 @@ func (c *truncateFunctionClass) getFunction(ctx sessionctx.Context, args []Expre } // ETInt or ETReal is set correctly by newBaseBuiltinFuncWithTp, only need to handle ETDecimal. if argTp == types.ETDecimal { - bf.tp.SetDecimal(calculateDecimal4RoundAndTruncate(ctx, args, argTp)) - bf.tp.SetFlen(args[0].GetType().GetFlen() - args[0].GetType().GetDecimal() + bf.tp.GetDecimal()) + bf.tp.SetDecimalUnderLimit(calculateDecimal4RoundAndTruncate(ctx, args, argTp)) + bf.tp.SetFlenUnderLimit(args[0].GetType().GetFlen() - args[0].GetType().GetDecimal() + bf.tp.GetDecimal()) } bf.tp.AddFlag(args[0].GetType().GetFlag()) diff --git a/expression/builtin_op.go b/expression/builtin_op.go index f84d3ee9f310c..cbb2afcc9377a 100644 --- a/expression/builtin_op.go +++ b/expression/builtin_op.go @@ -882,7 +882,7 @@ func (c *unaryMinusFunctionClass) getFunction(ctx sessionctx.Context, args []Exp if err != nil { return nil, err } - bf.tp.SetDecimal(argExprTp.GetDecimal()) + bf.tp.SetDecimalUnderLimit(argExprTp.GetDecimal()) sig = &builtinUnaryMinusDecimalSig{bf, false} sig.setPbCode(tipb.ScalarFuncSig_UnaryMinusDecimal) case types.ETReal: @@ -910,7 +910,7 @@ func (c *unaryMinusFunctionClass) getFunction(ctx sessionctx.Context, args []Exp sig.setPbCode(tipb.ScalarFuncSig_UnaryMinusReal) } } - bf.tp.SetFlen(argExprTp.GetFlen() + 1) + bf.tp.SetFlenUnderLimit(argExprTp.GetFlen() + 1) return sig, err } diff --git a/expression/builtin_other.go b/expression/builtin_other.go index cff48e5f22fd7..5a35255f18b19 100644 --- a/expression/builtin_other.go +++ b/expression/builtin_other.go @@ -732,7 +732,7 @@ func (c *setVarFunctionClass) getFunction(ctx sessionctx.Context, args []Express if err != nil { return nil, err } - bf.tp.SetFlen(args[1].GetType().GetFlen()) + bf.tp.SetFlenUnderLimit(args[1].GetType().GetFlen()) switch argTp { case types.ETString: sig = &builtinSetStringVarSig{bf} @@ -1087,7 +1087,7 @@ func (c *getDecimalVarFunctionClass) getFunction(ctx sessionctx.Context, args [] if err != nil { return nil, err } - bf.tp.SetFlen(c.tp.GetFlen()) + bf.tp.SetFlenUnderLimit(c.tp.GetFlen()) sig = &builtinGetDecimalVarSig{bf} return sig, nil } diff --git a/expression/builtin_string.go b/expression/builtin_string.go index e46490e1cf31d..55ab3d15c7486 100644 --- a/expression/builtin_string.go +++ b/expression/builtin_string.go @@ -324,6 +324,7 @@ func (b *builtinConcatSig) Clone() builtinFunc { // evalString evals a builtinConcatSig // See https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_concat func (b *builtinConcatSig) evalString(row chunk.Row) (d string, isNull bool, err error) { + //nolint: prealloc var s []byte for _, a := range b.getArgs() { d, isNull, err = a.EvalString(b.ctx, row) diff --git a/expression/builtin_time.go b/expression/builtin_time.go index 0b4a7ecb62857..d5d17bd4a6ecb 100644 --- a/expression/builtin_time.go +++ b/expression/builtin_time.go @@ -123,8 +123,7 @@ var ( _ functionClass = ×tampFunctionClass{} _ functionClass = ×tampLiteralFunctionClass{} _ functionClass = &lastDayFunctionClass{} - _ functionClass = &addDateFunctionClass{} - _ functionClass = &subDateFunctionClass{} + _ functionClass = &addSubDateFunctionClass{} ) var ( @@ -224,30 +223,9 @@ var ( _ builtinFunc = &builtinExtractDatetimeFromStringSig{} _ builtinFunc = &builtinExtractDatetimeSig{} _ builtinFunc = &builtinExtractDurationSig{} - _ builtinFunc = &builtinAddDateStringStringSig{} - _ builtinFunc = &builtinAddDateStringIntSig{} - _ builtinFunc = &builtinAddDateStringRealSig{} - _ builtinFunc = &builtinAddDateStringDecimalSig{} - _ builtinFunc = &builtinAddDateIntStringSig{} - _ builtinFunc = &builtinAddDateIntIntSig{} - _ builtinFunc = &builtinAddDateIntRealSig{} - _ builtinFunc = &builtinAddDateIntDecimalSig{} - _ builtinFunc = &builtinAddDateDatetimeStringSig{} - _ builtinFunc = &builtinAddDateDatetimeIntSig{} - _ builtinFunc = &builtinAddDateDatetimeRealSig{} - _ builtinFunc = &builtinAddDateDatetimeDecimalSig{} - _ builtinFunc = &builtinSubDateStringStringSig{} - _ builtinFunc = &builtinSubDateStringIntSig{} - _ builtinFunc = &builtinSubDateStringRealSig{} - _ builtinFunc = &builtinSubDateStringDecimalSig{} - _ builtinFunc = &builtinSubDateIntStringSig{} - _ builtinFunc = &builtinSubDateIntIntSig{} - _ builtinFunc = &builtinSubDateIntRealSig{} - _ builtinFunc = &builtinSubDateIntDecimalSig{} - _ builtinFunc = &builtinSubDateDatetimeStringSig{} - _ builtinFunc = &builtinSubDateDatetimeIntSig{} - _ builtinFunc = &builtinSubDateDatetimeRealSig{} - _ builtinFunc = &builtinSubDateDatetimeDecimalSig{} + _ builtinFunc = &builtinAddSubDateAsStringSig{} + _ builtinFunc = &builtinAddSubDateDatetimeAnySig{} + _ builtinFunc = &builtinAddSubDateDurationAnySig{} ) func convertTimeToMysqlTime(t time.Time, fsp int, roundMode types.RoundMode) (types.Time, error) { @@ -265,13 +243,6 @@ func convertTimeToMysqlTime(t time.Time, fsp int, roundMode types.RoundMode) (ty return types.NewTime(types.FromGoTime(tr), mysql.TypeDatetime, fsp), nil } -func getDateAddOrSubReturnTypeByUnit(dateType uint8, unit string) uint8 { - if dateType == mysql.TypeDatetime || types.IsClockUnit(unit) { - return mysql.TypeDatetime - } - return mysql.TypeDate -} - type dateFunctionClass struct { baseFunctionClass } @@ -2187,7 +2158,7 @@ func (b *builtinCurrentTime0ArgSig) evalDuration(row chunk.Row) (types.Duration, return types.Duration{}, true, err } dur := nowTs.In(tz).Format(types.TimeFormat) - res, err := types.ParseDuration(b.ctx.GetSessionVars().StmtCtx, dur, types.MinFsp) + res, _, err := types.ParseDuration(b.ctx.GetSessionVars().StmtCtx, dur, types.MinFsp) if err != nil { return types.Duration{}, true, err } @@ -2215,7 +2186,7 @@ func (b *builtinCurrentTime1ArgSig) evalDuration(row chunk.Row) (types.Duration, return types.Duration{}, true, err } dur := nowTs.In(tz).Format(types.TimeFSPFormat) - res, err := types.ParseDuration(b.ctx.GetSessionVars().StmtCtx, dur, int(fsp)) + res, _, err := types.ParseDuration(b.ctx.GetSessionVars().StmtCtx, dur, int(fsp)) if err != nil { return types.Duration{}, true, err } @@ -2275,7 +2246,7 @@ func (b *builtinTimeSig) evalDuration(row chunk.Row) (res types.Duration, isNull fsp = tmpFsp sc := b.ctx.GetSessionVars().StmtCtx - res, err = types.ParseDuration(sc, expr, fsp) + res, _, err = types.ParseDuration(sc, expr, fsp) if types.ErrTruncatedWrongVal.Equal(err) { err = sc.HandleTruncate(err) } @@ -2302,7 +2273,7 @@ func (c *timeLiteralFunctionClass) getFunction(ctx sessionctx.Context, args []Ex if !isDuration(str) { return nil, types.ErrWrongValue.GenWithStackByArgs(types.TimeStr, str) } - duration, err := types.ParseDuration(ctx.GetSessionVars().StmtCtx, str, types.GetFsp(str)) + duration, _, err := types.ParseDuration(ctx.GetSessionVars().StmtCtx, str, types.GetFsp(str)) if err != nil { return nil, err } @@ -2668,7 +2639,7 @@ func (b *builtinExtractDatetimeFromStringSig) evalInt(row chunk.Row) (int64, boo sc := b.ctx.GetSessionVars().StmtCtx switch strings.ToUpper(unit) { case "DAY_MICROSECOND", "DAY_SECOND", "DAY_MINUTE", "DAY_HOUR": - dur, err := types.ParseDuration(sc, dtStr, types.GetFsp(dtStr)) + dur, _, err := types.ParseDuration(sc, dtStr, types.GetFsp(dtStr)) if err != nil { return 0, true, err } @@ -2803,11 +2774,51 @@ func (du *baseDateArithmetical) getDateFromInt(ctx sessionctx.Context, args []Ex return types.ZeroTime, true, handleInvalidTimeError(ctx, err) } - dateTp := mysql.TypeDate - if date.Type() == mysql.TypeDatetime || date.Type() == mysql.TypeTimestamp || types.IsClockUnit(unit) { - dateTp = mysql.TypeDatetime + // The actual date.Type() might be date or datetime. + // When the unit contains clock, the date part is treated as datetime even though it might be actually a date. + if types.IsClockUnit(unit) { + date.SetType(mysql.TypeDatetime) + } + return date, false, nil +} + +func (du *baseDateArithmetical) getDateFromReal(ctx sessionctx.Context, args []Expression, row chunk.Row, unit string) (types.Time, bool, error) { + dateReal, isNull, err := args[0].EvalReal(ctx, row) + if isNull || err != nil { + return types.ZeroTime, true, err + } + + sc := ctx.GetSessionVars().StmtCtx + date, err := types.ParseTimeFromFloat64(sc, dateReal) + if err != nil { + return types.ZeroTime, true, handleInvalidTimeError(ctx, err) + } + + // The actual date.Type() might be date or datetime. + // When the unit contains clock, the date part is treated as datetime even though it might be actually a date. + if types.IsClockUnit(unit) { + date.SetType(mysql.TypeDatetime) + } + return date, false, nil +} + +func (du *baseDateArithmetical) getDateFromDecimal(ctx sessionctx.Context, args []Expression, row chunk.Row, unit string) (types.Time, bool, error) { + dateDec, isNull, err := args[0].EvalDecimal(ctx, row) + if isNull || err != nil { + return types.ZeroTime, true, err + } + + sc := ctx.GetSessionVars().StmtCtx + date, err := types.ParseTimeFromDecimal(sc, dateDec) + if err != nil { + return types.ZeroTime, true, handleInvalidTimeError(ctx, err) + } + + // The actual date.Type() might be date or datetime. + // When the unit contains clock, the date part is treated as datetime even though it might be actually a date. + if types.IsClockUnit(unit) { + date.SetType(mysql.TypeDatetime) } - date.SetType(dateTp) return date, false, nil } @@ -2817,7 +2828,11 @@ func (du *baseDateArithmetical) getDateFromDatetime(ctx sessionctx.Context, args return types.ZeroTime, true, err } - if types.IsClockUnit(unit) { + // The actual date.Type() might be date, datetime or timestamp. + // Datetime is treated as is. + // Timestamp is treated as datetime, as MySQL manual says: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_date-add + // When the unit contains clock, the date part is treated as datetime even though it might be actually a date. + if types.IsClockUnit(unit) || date.Type() == mysql.TypeTimestamp { date.SetType(mysql.TypeDatetime) } return date, false, nil @@ -2911,15 +2926,15 @@ func (du *baseDateArithmetical) getIntervalFromReal(ctx sessionctx.Context, args return strconv.FormatFloat(interval, 'f', args[1].GetType().GetDecimal(), 64), false, nil } -func (du *baseDateArithmetical) add(ctx sessionctx.Context, date types.Time, interval string, unit string) (types.Time, bool, error) { +func (du *baseDateArithmetical) add(ctx sessionctx.Context, date types.Time, interval, unit string, resultFsp int) (types.Time, bool, error) { year, month, day, nano, _, err := types.ParseDurationValue(unit, interval) if err := handleInvalidTimeError(ctx, err); err != nil { return types.ZeroTime, true, err } - return du.addDate(ctx, date, year, month, day, nano) + return du.addDate(ctx, date, year, month, day, nano, resultFsp) } -func (du *baseDateArithmetical) addDate(ctx sessionctx.Context, date types.Time, year, month, day, nano int64) (types.Time, bool, error) { +func (du *baseDateArithmetical) addDate(ctx sessionctx.Context, date types.Time, year, month, day, nano int64, resultFsp int) (types.Time, bool, error) { goTime, err := date.GoTime(time.UTC) if err := handleInvalidTimeError(ctx, err); err != nil { return types.ZeroTime, true, err @@ -2928,11 +2943,8 @@ func (du *baseDateArithmetical) addDate(ctx sessionctx.Context, date types.Time, goTime = goTime.Add(time.Duration(nano)) goTime = types.AddDate(year, month, day, goTime) - if goTime.Nanosecond() == 0 { - date.SetFsp(0) - } else { - date.SetFsp(6) - } + // Adjust fsp as required by outer - always respect type inference. + date.SetFsp(resultFsp) // fix https://github.com/pingcap/tidb/issues/11329 if goTime.Year() == 0 { @@ -2956,36 +2968,42 @@ func (du *baseDateArithmetical) addDate(ctx sessionctx.Context, date types.Time, return date, false, nil } -func (du *baseDateArithmetical) addDuration(ctx sessionctx.Context, d types.Duration, interval string, unit string) (types.Duration, bool, error) { +type funcDurationOp func(d, interval types.Duration) (types.Duration, error) + +func (du *baseDateArithmetical) opDuration(ctx sessionctx.Context, op funcDurationOp, d types.Duration, interval string, unit string, resultFsp int) (types.Duration, bool, error) { dur, err := types.ExtractDurationValue(unit, interval) if err != nil { return types.ZeroDuration, true, handleInvalidTimeError(ctx, err) } - retDur, err := d.Add(dur) + retDur, err := op(d, dur) if err != nil { return types.ZeroDuration, true, err } + // Adjust fsp as required by outer - always respect type inference. + retDur.Fsp = resultFsp return retDur, false, nil } -func (du *baseDateArithmetical) subDuration(ctx sessionctx.Context, d types.Duration, interval string, unit string) (types.Duration, bool, error) { - dur, err := types.ExtractDurationValue(unit, interval) - if err != nil { - return types.ZeroDuration, true, handleInvalidTimeError(ctx, err) +func (du *baseDateArithmetical) addDuration(ctx sessionctx.Context, d types.Duration, interval string, unit string, resultFsp int) (types.Duration, bool, error) { + add := func(d, interval types.Duration) (types.Duration, error) { + return d.Add(interval) } - retDur, err := d.Sub(dur) - if err != nil { - return types.ZeroDuration, true, err + return du.opDuration(ctx, add, d, interval, unit, resultFsp) +} + +func (du *baseDateArithmetical) subDuration(ctx sessionctx.Context, d types.Duration, interval string, unit string, resultFsp int) (types.Duration, bool, error) { + sub := func(d, interval types.Duration) (types.Duration, error) { + return d.Sub(interval) } - return retDur, false, nil + return du.opDuration(ctx, sub, d, interval, unit, resultFsp) } -func (du *baseDateArithmetical) sub(ctx sessionctx.Context, date types.Time, interval string, unit string) (types.Time, bool, error) { +func (du *baseDateArithmetical) sub(ctx sessionctx.Context, date types.Time, interval string, unit string, resultFsp int) (types.Time, bool, error) { year, month, day, nano, _, err := types.ParseDurationValue(unit, interval) if err := handleInvalidTimeError(ctx, err); err != nil { return types.ZeroTime, true, err } - return du.addDate(ctx, date, -year, -month, -day, -nano) + 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 { @@ -3020,11 +3038,95 @@ func (du *baseDateArithmetical) vecGetDateFromInt(b *baseBuiltinFunc, input *chu continue } - dateTp := mysql.TypeDate - if date.Type() == mysql.TypeDatetime || date.Type() == mysql.TypeTimestamp || isClockUnit { - dateTp = mysql.TypeDatetime + // The actual date.Type() might be date or datetime. + // When the unit contains clock, the date part is treated as datetime even though it might be actually a date. + if isClockUnit { + date.SetType(mysql.TypeDatetime) + } + dates[i] = date + } + return nil +} + +func (du *baseDateArithmetical) vecGetDateFromReal(b *baseBuiltinFunc, 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 { + return err + } + + result.ResizeTime(n, false) + result.MergeNulls(buf) + dates := result.Times() + f64s := buf.Float64s() + sc := b.ctx.GetSessionVars().StmtCtx + isClockUnit := types.IsClockUnit(unit) + for i := 0; i < n; i++ { + if result.IsNull(i) { + continue + } + + date, err := types.ParseTimeFromFloat64(sc, f64s[i]) + if err != nil { + err = handleInvalidTimeError(b.ctx, err) + if err != nil { + return err + } + result.SetNull(i, true) + continue + } + + // The actual date.Type() might be date or datetime. + // When the unit contains clock, the date part is treated as datetime even though it might be actually a date. + if isClockUnit { + date.SetType(mysql.TypeDatetime) + } + dates[i] = date + } + return nil +} + +func (du *baseDateArithmetical) vecGetDateFromDecimal(b *baseBuiltinFunc, 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 { + return err + } + + result.ResizeTime(n, false) + result.MergeNulls(buf) + dates := result.Times() + sc := b.ctx.GetSessionVars().StmtCtx + isClockUnit := types.IsClockUnit(unit) + for i := 0; i < n; i++ { + if result.IsNull(i) { + continue + } + + dec := buf.GetDecimal(i) + date, err := types.ParseTimeFromDecimal(sc, dec) + if err != nil { + err = handleInvalidTimeError(b.ctx, err) + if err != nil { + return err + } + result.SetNull(i, true) + continue + } + + // The actual date.Type() might be date or datetime. + // When the unit contains clock, the date part is treated as datetime even though it might be actually a date. + if isClockUnit { + date.SetType(mysql.TypeDatetime) } - date.SetType(dateTp) dates[i] = date } return nil @@ -3088,7 +3190,11 @@ func (du *baseDateArithmetical) vecGetDateFromDatetime(b *baseBuiltinFunc, input continue } - if isClockUnit { + // The actual date[i].Type() might be date, datetime or timestamp. + // Datetime is treated as is. + // Timestamp is treated as datetime, as MySQL manual says: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_date-add + // When the unit contains clock, the date part is treated as datetime even though it might be actually a date. + if isClockUnit || dates[i].Type() == mysql.TypeTimestamp { dates[i].SetType(mysql.TypeDatetime) } } @@ -3280,1535 +3386,600 @@ func (du *baseDateArithmetical) vecGetIntervalFromReal(b *baseBuiltinFunc, input return nil } -type addDateFunctionClass struct { +type funcTimeOpForDateAddSub func(da *baseDateArithmetical, ctx sessionctx.Context, date types.Time, interval, unit string, resultFsp int) (types.Time, bool, error) + +func addTime(da *baseDateArithmetical, ctx sessionctx.Context, date types.Time, interval, unit string, resultFsp int) (types.Time, bool, error) { + return da.add(ctx, date, interval, unit, resultFsp) +} + +func subTime(da *baseDateArithmetical, ctx sessionctx.Context, date types.Time, interval, unit string, resultFsp int) (types.Time, bool, error) { + return da.sub(ctx, date, interval, unit, resultFsp) +} + +type funcDurationOpForDateAddSub func(da *baseDateArithmetical, ctx sessionctx.Context, d types.Duration, interval, unit string, resultFsp int) (types.Duration, bool, error) + +func addDuration(da *baseDateArithmetical, ctx sessionctx.Context, d types.Duration, interval, unit string, resultFsp int) (types.Duration, bool, error) { + return da.addDuration(ctx, d, interval, unit, resultFsp) +} + +func subDuration(da *baseDateArithmetical, ctx sessionctx.Context, d types.Duration, interval, unit string, resultFsp int) (types.Duration, bool, error) { + return da.subDuration(ctx, d, interval, unit, resultFsp) +} + +type funcSetPbCodeOp func(b builtinFunc, add, sub tipb.ScalarFuncSig) + +func setAdd(b builtinFunc, add, sub tipb.ScalarFuncSig) { + b.setPbCode(add) +} + +func setSub(b builtinFunc, add, sub tipb.ScalarFuncSig) { + b.setPbCode(sub) +} + +type funcGetDateForDateAddSub func(da *baseDateArithmetical, ctx sessionctx.Context, args []Expression, row chunk.Row, unit string) (types.Time, bool, error) + +func getDateFromString(da *baseDateArithmetical, ctx sessionctx.Context, args []Expression, row chunk.Row, unit string) (types.Time, bool, error) { + return da.getDateFromString(ctx, args, row, unit) +} + +func getDateFromInt(da *baseDateArithmetical, ctx sessionctx.Context, args []Expression, row chunk.Row, unit string) (types.Time, bool, error) { + return da.getDateFromInt(ctx, args, row, unit) +} + +func getDateFromReal(da *baseDateArithmetical, ctx sessionctx.Context, args []Expression, row chunk.Row, unit string) (types.Time, bool, error) { + return da.getDateFromReal(ctx, args, row, unit) +} + +func getDateFromDecimal(da *baseDateArithmetical, ctx sessionctx.Context, args []Expression, row chunk.Row, unit string) (types.Time, bool, error) { + return da.getDateFromDecimal(ctx, args, row, unit) +} + +type funcVecGetDateForDateAddSub func(da *baseDateArithmetical, 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 vecGetDateFromInt(da *baseDateArithmetical, b *baseBuiltinFunc, input *chunk.Chunk, unit string, result *chunk.Column) error { + return da.vecGetDateFromInt(b, 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 vecGetDateFromDecimal(da *baseDateArithmetical, b *baseBuiltinFunc, input *chunk.Chunk, unit string, result *chunk.Column) error { + return da.vecGetDateFromDecimal(b, input, unit, result) +} + +type funcGetIntervalForDateAddSub func(da *baseDateArithmetical, ctx sessionctx.Context, args []Expression, row chunk.Row, unit string) (string, bool, error) + +func getIntervalFromString(da *baseDateArithmetical, ctx sessionctx.Context, args []Expression, row chunk.Row, unit string) (string, bool, error) { + return da.getIntervalFromString(ctx, args, row, unit) +} + +func getIntervalFromInt(da *baseDateArithmetical, ctx sessionctx.Context, args []Expression, row chunk.Row, unit string) (string, bool, error) { + return da.getIntervalFromInt(ctx, args, row, unit) +} + +func getIntervalFromReal(da *baseDateArithmetical, ctx sessionctx.Context, args []Expression, row chunk.Row, unit string) (string, bool, error) { + return da.getIntervalFromReal(ctx, args, row, unit) +} + +func getIntervalFromDecimal(da *baseDateArithmetical, ctx sessionctx.Context, args []Expression, row chunk.Row, unit string) (string, bool, error) { + return da.getIntervalFromDecimal(ctx, args, row, unit) +} + +type funcVecGetIntervalForDateAddSub func(da *baseDateArithmetical, 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 vecGetIntervalFromInt(da *baseDateArithmetical, b *baseBuiltinFunc, input *chunk.Chunk, unit string, result *chunk.Column) error { + return da.vecGetIntervalFromInt(b, 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 vecGetIntervalFromDecimal(da *baseDateArithmetical, b *baseBuiltinFunc, input *chunk.Chunk, unit string, result *chunk.Column) error { + return da.vecGetIntervalFromDecimal(b, input, unit, result) +} + +type addSubDateFunctionClass struct { baseFunctionClass + timeOp funcTimeOpForDateAddSub + durationOp funcDurationOpForDateAddSub + setPbCodeOp funcSetPbCodeOp } -func (c *addDateFunctionClass) getFunction(ctx sessionctx.Context, args []Expression) (sig builtinFunc, err error) { +func (c *addSubDateFunctionClass) getFunction(ctx sessionctx.Context, args []Expression) (sig builtinFunc, err error) { if err = c.verifyArgs(args); err != nil { return nil, err } dateEvalTp := args[0].GetType().EvalType() - if dateEvalTp != types.ETString && dateEvalTp != types.ETInt && dateEvalTp != types.ETDuration { + // Some special evaluation type treatment. + // Note that it could be more elegant if we always evaluate datetime for int, real, decimal and string, by leveraging existing implicit casts. + // However, MySQL has a weird behavior for date_add(string, ...), whose result depends on the content of the first argument. + // E.g., date_add('2000-01-02 00:00:00', interval 1 day) evaluates to '2021-01-03 00:00:00' (which is normal), + // whereas date_add('2000-01-02', interval 1 day) evaluates to '2000-01-03' instead of '2021-01-03 00:00:00'. + // This requires a customized parsing of the content of the first argument, by recognizing if it is a pure date format or contains HMS part. + // So implicit casts are not viable here. + if dateEvalTp == types.ETTimestamp { dateEvalTp = types.ETDatetime + } else if dateEvalTp == types.ETJson { + dateEvalTp = types.ETString } intervalEvalTp := args[1].GetType().EvalType() - if intervalEvalTp != types.ETString && intervalEvalTp != types.ETDecimal && intervalEvalTp != types.ETReal { + if intervalEvalTp == types.ETJson { + intervalEvalTp = types.ETString + } else if intervalEvalTp != types.ETString && intervalEvalTp != types.ETDecimal && intervalEvalTp != types.ETReal { intervalEvalTp = types.ETInt } - argTps := []types.EvalType{dateEvalTp, intervalEvalTp, types.ETString} - var bf baseBuiltinFunc unit, _, err := args[2].EvalString(ctx, chunk.Row{}) if err != nil { return nil, err } - if dateEvalTp == types.ETDuration { - internalFsp := 0 - switch unit { - // If the unit has micro second, then the fsp must be the MaxFsp. - case "MICROSECOND", "SECOND_MICROSECOND", "MINUTE_MICROSECOND", "HOUR_MICROSECOND", "DAY_MICROSECOND": - internalFsp = types.MaxFsp - // If the unit is second, the fsp is related with the arg[1]'s. - case "SECOND": - internalFsp = types.MaxFsp - if intervalEvalTp != types.ETString { - internalFsp = mathutil.Min(args[1].GetType().GetDecimal(), types.MaxFsp) - } - // Otherwise, the fsp should be 0. - } - bf, err = newBaseBuiltinFuncWithTp(ctx, c.funcName, args, types.ETDuration, argTps...) - if err != nil { - return nil, err - } - arg0Dec, err := getExpressionFsp(ctx, args[0]) - if err != nil { - return nil, err - } - bf.setDecimalAndFlenForTime(mathutil.Max(arg0Dec, internalFsp)) - } else if dateEvalTp == types.ETString { - bf, err = newBaseBuiltinFuncWithTp(ctx, c.funcName, args, types.ETString, argTps...) - if err != nil { - return nil, err - } - bf.tp.SetFlen(mysql.MaxDatetimeFullWidth) - } else { - bf, err = newBaseBuiltinFuncWithTp(ctx, c.funcName, args, types.ETDatetime, argTps...) - if err != nil { - return nil, err - } - if dateEvalTp == types.ETDatetime && args[0].GetType().GetType() == mysql.TypeTimestamp { - tp := types.NewFieldType(mysql.TypeDatetime) - tp.SetDecimal(args[0].GetType().GetDecimal()) - tp.SetFlen(mysql.MaxDatetimeWidthNoFsp) - if tp.GetDecimal() > 0 { - tp.SetFlen(tp.GetFlen() + 1 + tp.GetDecimal()) - } - args[0] = BuildCastFunction(ctx, args[0], tp) + resultTp := mysql.TypeVarString + resultEvalTp := types.ETString + if args[0].GetType().GetType() == mysql.TypeDate { + if !types.IsClockUnit(unit) { + // First arg is date and unit contains no HMS, return date. + resultTp = mysql.TypeDate + resultEvalTp = types.ETDatetime + } else { + // First arg is date and unit contains HMS, return datetime. + resultTp = mysql.TypeDatetime + resultEvalTp = types.ETDatetime + } + } else if dateEvalTp == types.ETDuration { + if types.IsDateUnit(unit) && unit != "DAY_MICROSECOND" { + // First arg is time and unit contains YMD (except DAY_MICROSECOND), return datetime. + resultTp = mysql.TypeDatetime + resultEvalTp = types.ETDatetime + } else { + // First arg is time and unit contains no YMD or is DAY_MICROSECOND, return time. + resultTp = mysql.TypeDuration + resultEvalTp = types.ETDuration } - bf.setDecimalAndFlenForDatetime(int(types.MaxFsp)) + } else if dateEvalTp == types.ETDatetime { + // First arg is datetime or timestamp, return datetime. + resultTp = mysql.TypeDatetime + resultEvalTp = types.ETDatetime + } + + argTps := []types.EvalType{dateEvalTp, intervalEvalTp, types.ETString} + var bf baseBuiltinFunc + bf, err = newBaseBuiltinFuncWithTp(ctx, c.funcName, args, resultEvalTp, argTps...) + bf.tp.SetType(resultTp) - if dateEvalTp == types.ETDatetime && args[0].GetType().GetType() == mysql.TypeDate { - switch strings.ToUpper(unit) { - // If the unit is YMD, the return type is date. - case "YEAR", "MONTH", "DAY", "YEAR_MONTH": - bf.setDecimalAndFlenForDate() + var resultFsp int + if types.IsMicrosecondUnit(unit) { + resultFsp = types.MaxFsp + } else { + intervalFsp := types.MinFsp + if unit == "SECOND" { + if intervalEvalTp == types.ETString || intervalEvalTp == types.ETReal { + intervalFsp = types.MaxFsp + } else { + intervalFsp = mathutil.Min(types.MaxFsp, args[1].GetType().GetDecimal()) } } + resultFsp = mathutil.Min(types.MaxFsp, mathutil.Max(args[0].GetType().GetDecimal(), intervalFsp)) + } + switch resultTp { + case mysql.TypeDate: + bf.setDecimalAndFlenForDate() + case mysql.TypeDuration: + bf.setDecimalAndFlenForTime(resultFsp) + case mysql.TypeDatetime: + bf.setDecimalAndFlenForDatetime(resultFsp) + case mysql.TypeVarString: + bf.tp.SetFlen(mysql.MaxDatetimeFullWidth) + bf.tp.SetDecimal(types.MinFsp) } switch { case dateEvalTp == types.ETString && intervalEvalTp == types.ETString: - sig = &builtinAddDateStringStringSig{ + sig = &builtinAddSubDateAsStringSig{ baseBuiltinFunc: bf, baseDateArithmetical: newDateArithmeticalUtil(), + getDate: getDateFromString, + vecGetDate: vecGetDateFromString, + getInterval: getIntervalFromString, + vecGetInterval: vecGetIntervalFromString, + timeOp: c.timeOp, } - sig.setPbCode(tipb.ScalarFuncSig_AddDateStringString) + c.setPbCodeOp(sig, tipb.ScalarFuncSig_AddDateStringString, tipb.ScalarFuncSig_SubDateStringString) case dateEvalTp == types.ETString && intervalEvalTp == types.ETInt: - sig = &builtinAddDateStringIntSig{ + sig = &builtinAddSubDateAsStringSig{ baseBuiltinFunc: bf, baseDateArithmetical: newDateArithmeticalUtil(), + getDate: getDateFromString, + vecGetDate: vecGetDateFromString, + getInterval: getIntervalFromInt, + vecGetInterval: vecGetIntervalFromInt, + timeOp: c.timeOp, } - sig.setPbCode(tipb.ScalarFuncSig_AddDateStringInt) + c.setPbCodeOp(sig, tipb.ScalarFuncSig_AddDateStringInt, tipb.ScalarFuncSig_SubDateStringInt) case dateEvalTp == types.ETString && intervalEvalTp == types.ETReal: - sig = &builtinAddDateStringRealSig{ + sig = &builtinAddSubDateAsStringSig{ baseBuiltinFunc: bf, baseDateArithmetical: newDateArithmeticalUtil(), + getDate: getDateFromString, + vecGetDate: vecGetDateFromString, + getInterval: getIntervalFromReal, + vecGetInterval: vecGetIntervalFromReal, + timeOp: c.timeOp, } - sig.setPbCode(tipb.ScalarFuncSig_AddDateStringReal) + c.setPbCodeOp(sig, tipb.ScalarFuncSig_AddDateStringReal, tipb.ScalarFuncSig_SubDateStringReal) case dateEvalTp == types.ETString && intervalEvalTp == types.ETDecimal: - sig = &builtinAddDateStringDecimalSig{ + sig = &builtinAddSubDateAsStringSig{ baseBuiltinFunc: bf, baseDateArithmetical: newDateArithmeticalUtil(), + getDate: getDateFromString, + vecGetDate: vecGetDateFromString, + getInterval: getIntervalFromDecimal, + vecGetInterval: vecGetIntervalFromDecimal, + timeOp: c.timeOp, } - sig.setPbCode(tipb.ScalarFuncSig_AddDateStringDecimal) + c.setPbCodeOp(sig, tipb.ScalarFuncSig_AddDateStringDecimal, tipb.ScalarFuncSig_SubDateStringDecimal) case dateEvalTp == types.ETInt && intervalEvalTp == types.ETString: - sig = &builtinAddDateIntStringSig{ + sig = &builtinAddSubDateAsStringSig{ baseBuiltinFunc: bf, baseDateArithmetical: newDateArithmeticalUtil(), + getDate: getDateFromInt, + vecGetDate: vecGetDateFromInt, + getInterval: getIntervalFromString, + vecGetInterval: vecGetIntervalFromString, + timeOp: c.timeOp, } - sig.setPbCode(tipb.ScalarFuncSig_AddDateIntString) + c.setPbCodeOp(sig, tipb.ScalarFuncSig_AddDateIntString, tipb.ScalarFuncSig_SubDateIntString) case dateEvalTp == types.ETInt && intervalEvalTp == types.ETInt: - sig = &builtinAddDateIntIntSig{ + sig = &builtinAddSubDateAsStringSig{ baseBuiltinFunc: bf, baseDateArithmetical: newDateArithmeticalUtil(), + getDate: getDateFromInt, + vecGetDate: vecGetDateFromInt, + getInterval: getIntervalFromInt, + vecGetInterval: vecGetIntervalFromInt, + timeOp: c.timeOp, } - sig.setPbCode(tipb.ScalarFuncSig_AddDateIntInt) + c.setPbCodeOp(sig, tipb.ScalarFuncSig_AddDateIntInt, tipb.ScalarFuncSig_SubDateIntInt) case dateEvalTp == types.ETInt && intervalEvalTp == types.ETReal: - sig = &builtinAddDateIntRealSig{ + sig = &builtinAddSubDateAsStringSig{ baseBuiltinFunc: bf, baseDateArithmetical: newDateArithmeticalUtil(), + getDate: getDateFromInt, + vecGetDate: vecGetDateFromInt, + getInterval: getIntervalFromReal, + vecGetInterval: vecGetIntervalFromReal, + timeOp: c.timeOp, } - sig.setPbCode(tipb.ScalarFuncSig_AddDateIntReal) + c.setPbCodeOp(sig, tipb.ScalarFuncSig_AddDateIntReal, tipb.ScalarFuncSig_SubDateIntReal) case dateEvalTp == types.ETInt && intervalEvalTp == types.ETDecimal: - sig = &builtinAddDateIntDecimalSig{ + sig = &builtinAddSubDateAsStringSig{ + baseBuiltinFunc: bf, + baseDateArithmetical: newDateArithmeticalUtil(), + getDate: getDateFromInt, + vecGetDate: vecGetDateFromInt, + getInterval: getIntervalFromDecimal, + vecGetInterval: vecGetIntervalFromDecimal, + timeOp: c.timeOp, + } + c.setPbCodeOp(sig, tipb.ScalarFuncSig_AddDateIntDecimal, tipb.ScalarFuncSig_SubDateIntDecimal) + case dateEvalTp == types.ETReal && intervalEvalTp == types.ETString: + sig = &builtinAddSubDateAsStringSig{ + baseBuiltinFunc: bf, + baseDateArithmetical: newDateArithmeticalUtil(), + getDate: getDateFromReal, + vecGetDate: vecGetDateFromReal, + getInterval: getIntervalFromString, + vecGetInterval: vecGetIntervalFromString, + timeOp: c.timeOp, + } + c.setPbCodeOp(sig, tipb.ScalarFuncSig_AddDateRealString, tipb.ScalarFuncSig_SubDateRealString) + case dateEvalTp == types.ETReal && intervalEvalTp == types.ETInt: + sig = &builtinAddSubDateAsStringSig{ + baseBuiltinFunc: bf, + baseDateArithmetical: newDateArithmeticalUtil(), + getDate: getDateFromReal, + vecGetDate: vecGetDateFromReal, + getInterval: getIntervalFromInt, + vecGetInterval: vecGetIntervalFromInt, + timeOp: c.timeOp, + } + c.setPbCodeOp(sig, tipb.ScalarFuncSig_AddDateRealInt, tipb.ScalarFuncSig_SubDateRealInt) + case dateEvalTp == types.ETReal && intervalEvalTp == types.ETReal: + sig = &builtinAddSubDateAsStringSig{ + baseBuiltinFunc: bf, + baseDateArithmetical: newDateArithmeticalUtil(), + getDate: getDateFromReal, + vecGetDate: vecGetDateFromReal, + getInterval: getIntervalFromReal, + vecGetInterval: vecGetIntervalFromReal, + timeOp: c.timeOp, + } + c.setPbCodeOp(sig, tipb.ScalarFuncSig_AddDateRealReal, tipb.ScalarFuncSig_SubDateRealReal) + case dateEvalTp == types.ETReal && intervalEvalTp == types.ETDecimal: + sig = &builtinAddSubDateAsStringSig{ + baseBuiltinFunc: bf, + baseDateArithmetical: newDateArithmeticalUtil(), + getDate: getDateFromReal, + vecGetDate: vecGetDateFromReal, + getInterval: getIntervalFromDecimal, + vecGetInterval: vecGetIntervalFromDecimal, + timeOp: c.timeOp, + } + c.setPbCodeOp(sig, tipb.ScalarFuncSig_AddDateRealDecimal, tipb.ScalarFuncSig_SubDateRealDecimal) + case dateEvalTp == types.ETDecimal && intervalEvalTp == types.ETString: + sig = &builtinAddSubDateAsStringSig{ + baseBuiltinFunc: bf, + baseDateArithmetical: newDateArithmeticalUtil(), + getDate: getDateFromDecimal, + vecGetDate: vecGetDateFromDecimal, + getInterval: getIntervalFromString, + vecGetInterval: vecGetIntervalFromString, + timeOp: c.timeOp, + } + c.setPbCodeOp(sig, tipb.ScalarFuncSig_AddDateDecimalString, tipb.ScalarFuncSig_SubDateDecimalString) + case dateEvalTp == types.ETDecimal && intervalEvalTp == types.ETInt: + sig = &builtinAddSubDateAsStringSig{ + baseBuiltinFunc: bf, + baseDateArithmetical: newDateArithmeticalUtil(), + getDate: getDateFromDecimal, + vecGetDate: vecGetDateFromDecimal, + getInterval: getIntervalFromInt, + vecGetInterval: vecGetIntervalFromInt, + timeOp: c.timeOp, + } + c.setPbCodeOp(sig, tipb.ScalarFuncSig_AddDateDecimalInt, tipb.ScalarFuncSig_SubDateDecimalInt) + case dateEvalTp == types.ETDecimal && intervalEvalTp == types.ETReal: + sig = &builtinAddSubDateAsStringSig{ + baseBuiltinFunc: bf, + baseDateArithmetical: newDateArithmeticalUtil(), + getDate: getDateFromDecimal, + vecGetDate: vecGetDateFromDecimal, + getInterval: getIntervalFromReal, + vecGetInterval: vecGetIntervalFromReal, + timeOp: c.timeOp, + } + c.setPbCodeOp(sig, tipb.ScalarFuncSig_AddDateDecimalReal, tipb.ScalarFuncSig_SubDateDecimalReal) + case dateEvalTp == types.ETDecimal && intervalEvalTp == types.ETDecimal: + sig = &builtinAddSubDateAsStringSig{ baseBuiltinFunc: bf, baseDateArithmetical: newDateArithmeticalUtil(), + getDate: getDateFromDecimal, + vecGetDate: vecGetDateFromDecimal, + getInterval: getIntervalFromDecimal, + vecGetInterval: vecGetIntervalFromDecimal, + timeOp: c.timeOp, } - sig.setPbCode(tipb.ScalarFuncSig_AddDateIntDecimal) + c.setPbCodeOp(sig, tipb.ScalarFuncSig_AddDateDecimalDecimal, tipb.ScalarFuncSig_SubDateDecimalDecimal) case dateEvalTp == types.ETDatetime && intervalEvalTp == types.ETString: - sig = &builtinAddDateDatetimeStringSig{ + sig = &builtinAddSubDateDatetimeAnySig{ baseBuiltinFunc: bf, baseDateArithmetical: newDateArithmeticalUtil(), + getInterval: getIntervalFromString, + vecGetInterval: vecGetIntervalFromString, + timeOp: c.timeOp, } - sig.setPbCode(tipb.ScalarFuncSig_AddDateDatetimeString) + c.setPbCodeOp(sig, tipb.ScalarFuncSig_AddDateDatetimeString, tipb.ScalarFuncSig_SubDateDatetimeString) case dateEvalTp == types.ETDatetime && intervalEvalTp == types.ETInt: - sig = &builtinAddDateDatetimeIntSig{ + sig = &builtinAddSubDateDatetimeAnySig{ baseBuiltinFunc: bf, baseDateArithmetical: newDateArithmeticalUtil(), + getInterval: getIntervalFromInt, + vecGetInterval: vecGetIntervalFromInt, + timeOp: c.timeOp, } - sig.setPbCode(tipb.ScalarFuncSig_AddDateDatetimeInt) + c.setPbCodeOp(sig, tipb.ScalarFuncSig_AddDateDatetimeInt, tipb.ScalarFuncSig_SubDateDatetimeInt) case dateEvalTp == types.ETDatetime && intervalEvalTp == types.ETReal: - sig = &builtinAddDateDatetimeRealSig{ + sig = &builtinAddSubDateDatetimeAnySig{ baseBuiltinFunc: bf, baseDateArithmetical: newDateArithmeticalUtil(), + getInterval: getIntervalFromReal, + vecGetInterval: vecGetIntervalFromReal, + timeOp: c.timeOp, } - sig.setPbCode(tipb.ScalarFuncSig_AddDateDatetimeReal) + c.setPbCodeOp(sig, tipb.ScalarFuncSig_AddDateDatetimeReal, tipb.ScalarFuncSig_SubDateDatetimeReal) case dateEvalTp == types.ETDatetime && intervalEvalTp == types.ETDecimal: - sig = &builtinAddDateDatetimeDecimalSig{ + sig = &builtinAddSubDateDatetimeAnySig{ baseBuiltinFunc: bf, baseDateArithmetical: newDateArithmeticalUtil(), + getInterval: getIntervalFromDecimal, + vecGetInterval: vecGetIntervalFromDecimal, + timeOp: c.timeOp, } - sig.setPbCode(tipb.ScalarFuncSig_AddDateDatetimeDecimal) + c.setPbCodeOp(sig, tipb.ScalarFuncSig_AddDateDatetimeDecimal, tipb.ScalarFuncSig_SubDateDatetimeDecimal) case dateEvalTp == types.ETDuration && intervalEvalTp == types.ETString: - sig = &builtinAddDateDurationStringSig{ + sig = &builtinAddSubDateDurationAnySig{ baseBuiltinFunc: bf, baseDateArithmetical: newDateArithmeticalUtil(), + getInterval: getIntervalFromString, + vecGetInterval: vecGetIntervalFromString, + timeOp: c.timeOp, + durationOp: c.durationOp, } - sig.setPbCode(tipb.ScalarFuncSig_AddDateDurationString) + c.setPbCodeOp(sig, tipb.ScalarFuncSig_AddDateDurationString, tipb.ScalarFuncSig_SubDateDurationString) case dateEvalTp == types.ETDuration && intervalEvalTp == types.ETInt: - sig = &builtinAddDateDurationIntSig{ + sig = &builtinAddSubDateDurationAnySig{ baseBuiltinFunc: bf, baseDateArithmetical: newDateArithmeticalUtil(), + getInterval: getIntervalFromInt, + vecGetInterval: vecGetIntervalFromInt, + timeOp: c.timeOp, + durationOp: c.durationOp, } - sig.setPbCode(tipb.ScalarFuncSig_AddDateDurationInt) + c.setPbCodeOp(sig, tipb.ScalarFuncSig_AddDateDurationInt, tipb.ScalarFuncSig_SubDateDurationInt) case dateEvalTp == types.ETDuration && intervalEvalTp == types.ETReal: - sig = &builtinAddDateDurationRealSig{ + sig = &builtinAddSubDateDurationAnySig{ baseBuiltinFunc: bf, baseDateArithmetical: newDateArithmeticalUtil(), + getInterval: getIntervalFromReal, + vecGetInterval: vecGetIntervalFromReal, + timeOp: c.timeOp, + durationOp: c.durationOp, } - sig.setPbCode(tipb.ScalarFuncSig_AddDateDurationReal) + c.setPbCodeOp(sig, tipb.ScalarFuncSig_AddDateDurationReal, tipb.ScalarFuncSig_SubDateDurationReal) case dateEvalTp == types.ETDuration && intervalEvalTp == types.ETDecimal: - sig = &builtinAddDateDurationDecimalSig{ + sig = &builtinAddSubDateDurationAnySig{ baseBuiltinFunc: bf, baseDateArithmetical: newDateArithmeticalUtil(), + getInterval: getIntervalFromDecimal, + vecGetInterval: vecGetIntervalFromDecimal, + timeOp: c.timeOp, + durationOp: c.durationOp, } - sig.setPbCode(tipb.ScalarFuncSig_AddDateDurationDecimal) + c.setPbCodeOp(sig, tipb.ScalarFuncSig_AddDateDurationDecimal, tipb.ScalarFuncSig_SubDateDurationDecimal) } return sig, nil } -type builtinAddDateStringStringSig struct { +type builtinAddSubDateAsStringSig struct { baseBuiltinFunc baseDateArithmetical + getDate funcGetDateForDateAddSub + vecGetDate funcVecGetDateForDateAddSub + getInterval funcGetIntervalForDateAddSub + vecGetInterval funcVecGetIntervalForDateAddSub + timeOp funcTimeOpForDateAddSub } -func (b *builtinAddDateStringStringSig) Clone() builtinFunc { - newSig := &builtinAddDateStringStringSig{baseDateArithmetical: b.baseDateArithmetical} +func (b *builtinAddSubDateAsStringSig) Clone() builtinFunc { + newSig := &builtinAddSubDateAsStringSig{ + baseDateArithmetical: b.baseDateArithmetical, + getDate: b.getDate, + vecGetDate: b.vecGetDate, + getInterval: b.getInterval, + vecGetInterval: b.vecGetInterval, + timeOp: b.timeOp, + } newSig.cloneFrom(&b.baseBuiltinFunc) return newSig } -// evalTime evals ADDDATE(date,INTERVAL expr unit). -// See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_adddate -func (b *builtinAddDateStringStringSig) evalTime(row chunk.Row) (types.Time, bool, error) { +func (b *builtinAddSubDateAsStringSig) evalString(row chunk.Row) (string, bool, error) { unit, isNull, err := b.args[2].EvalString(b.ctx, row) if isNull || err != nil { - return types.ZeroTime, true, err + return types.ZeroTime.String(), true, err } - date, isNull, err := b.getDateFromString(b.ctx, b.args, row, unit) + date, isNull, err := b.getDate(&b.baseDateArithmetical, b.ctx, b.args, row, unit) if isNull || err != nil { - return types.ZeroTime, true, err + return types.ZeroTime.String(), true, err } if date.InvalidZero() { - return types.ZeroTime, true, handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, date.String())) - } - interval, isNull, err := b.getIntervalFromString(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - result, isNull, err := b.add(b.ctx, date, interval, unit) - return result, isNull || err != nil, err -} - -func (b *builtinAddDateStringStringSig) evalString(row chunk.Row) (string, bool, error) { - - unit, isNull, err := b.args[2].EvalString(b.ctx, row) - if isNull || err != nil { - return types.ZeroTime.String(), isNull, err + return types.ZeroTime.String(), true, handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, date.String())) } - date, isNull, err := b.getDateFromString(b.ctx, b.args, row, unit) + interval, isNull, err := b.getInterval(&b.baseDateArithmetical, b.ctx, b.args, row, unit) if isNull || err != nil { return types.ZeroTime.String(), true, err } - interval, isNull, err := b.getIntervalFromString(b.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()) + if result.Microsecond() == 0 { + result.SetFsp(types.MinFsp) + } else { + result.SetFsp(types.MaxFsp) } - result, isNull, err := b.add(b.ctx, date, interval, unit) - - result.SetType(getDateAddOrSubReturnTypeByUnit(date.Type(), unit)) return result.String(), isNull, err } -type builtinAddDateStringIntSig struct { +type builtinAddSubDateDatetimeAnySig struct { baseBuiltinFunc baseDateArithmetical + getInterval funcGetIntervalForDateAddSub + vecGetInterval funcVecGetIntervalForDateAddSub + timeOp funcTimeOpForDateAddSub } -func (b *builtinAddDateStringIntSig) Clone() builtinFunc { - newSig := &builtinAddDateStringIntSig{baseDateArithmetical: b.baseDateArithmetical} +func (b *builtinAddSubDateDatetimeAnySig) Clone() builtinFunc { + newSig := &builtinAddSubDateDatetimeAnySig{ + baseDateArithmetical: b.baseDateArithmetical, + getInterval: b.getInterval, + vecGetInterval: b.vecGetInterval, + timeOp: b.timeOp, + } newSig.cloneFrom(&b.baseBuiltinFunc) return newSig } -// evalTime evals ADDDATE(date,INTERVAL expr unit). -// See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_adddate -func (b *builtinAddDateStringIntSig) evalTime(row chunk.Row) (types.Time, bool, error) { +func (b *builtinAddSubDateDatetimeAnySig) evalTime(row chunk.Row) (types.Time, bool, error) { unit, isNull, err := b.args[2].EvalString(b.ctx, row) if isNull || err != nil { return types.ZeroTime, true, err } - date, isNull, err := b.getDateFromString(b.ctx, b.args, row, unit) + date, isNull, err := b.getDateFromDatetime(b.ctx, b.args, row, unit) if isNull || err != nil { return types.ZeroTime, true, err } - interval, isNull, err := b.getIntervalFromInt(b.ctx, b.args, row, unit) + interval, isNull, err := b.getInterval(&b.baseDateArithmetical, b.ctx, b.args, row, unit) if isNull || err != nil { return types.ZeroTime, true, err } - result, isNull, err := b.add(b.ctx, date, interval, unit) + result, isNull, err := b.timeOp(&b.baseDateArithmetical, b.ctx, date, interval, unit, b.tp.GetDecimal()) return result, isNull || err != nil, err } -func (b *builtinAddDateStringIntSig) evalString(row chunk.Row) (string, bool, error) { +type builtinAddSubDateDurationAnySig struct { + baseBuiltinFunc + baseDateArithmetical + getInterval funcGetIntervalForDateAddSub + vecGetInterval funcVecGetIntervalForDateAddSub + timeOp funcTimeOpForDateAddSub + durationOp funcDurationOpForDateAddSub +} + +func (b *builtinAddSubDateDurationAnySig) Clone() builtinFunc { + newSig := &builtinAddSubDateDurationAnySig{ + baseDateArithmetical: b.baseDateArithmetical, + getInterval: b.getInterval, + vecGetInterval: b.vecGetInterval, + timeOp: b.timeOp, + durationOp: b.durationOp, + } + newSig.cloneFrom(&b.baseBuiltinFunc) + return newSig +} +func (b *builtinAddSubDateDurationAnySig) evalTime(row chunk.Row) (types.Time, bool, error) { unit, isNull, err := b.args[2].EvalString(b.ctx, row) if isNull || err != nil { - return types.ZeroTime.String(), true, err + return types.ZeroTime, true, err } - date, isNull, err := b.getDateFromString(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroTime.String(), true, err - } - - interval, isNull, err := b.getIntervalFromInt(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroTime.String(), true, err - } - - result, isNull, err := b.add(b.ctx, date, interval, unit) - - result.SetType(getDateAddOrSubReturnTypeByUnit(date.Type(), unit)) - return result.String(), isNull, err -} - -type builtinAddDateStringRealSig struct { - baseBuiltinFunc - baseDateArithmetical -} - -func (b *builtinAddDateStringRealSig) Clone() builtinFunc { - newSig := &builtinAddDateStringRealSig{baseDateArithmetical: b.baseDateArithmetical} - newSig.cloneFrom(&b.baseBuiltinFunc) - return newSig -} - -// evalTime evals ADDDATE(date,INTERVAL expr unit). -// See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_adddate -func (b *builtinAddDateStringRealSig) evalTime(row chunk.Row) (types.Time, bool, error) { - unit, isNull, err := b.args[2].EvalString(b.ctx, row) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - date, isNull, err := b.getDateFromString(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - interval, isNull, err := b.getIntervalFromReal(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - result, isNull, err := b.add(b.ctx, date, interval, unit) - return result, isNull || err != nil, err -} - -func (b *builtinAddDateStringRealSig) evalString(row chunk.Row) (string, bool, error) { - - unit, isNull, err := b.args[2].EvalString(b.ctx, row) - if isNull || err != nil { - return types.ZeroTime.String(), true, err - } - - date, isNull, err := b.getDateFromString(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroTime.String(), true, err - } - - interval, isNull, err := b.getIntervalFromReal(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroTime.String(), true, err - } - - result, isNull, err := b.add(b.ctx, date, interval, unit) - - result.SetType(getDateAddOrSubReturnTypeByUnit(date.Type(), unit)) - return result.String(), isNull, err -} - -type builtinAddDateStringDecimalSig struct { - baseBuiltinFunc - baseDateArithmetical -} - -func (b *builtinAddDateStringDecimalSig) Clone() builtinFunc { - newSig := &builtinAddDateStringDecimalSig{baseDateArithmetical: b.baseDateArithmetical} - newSig.cloneFrom(&b.baseBuiltinFunc) - return newSig -} - -// evalTime evals ADDDATE(date,INTERVAL expr unit). -// See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_adddate -func (b *builtinAddDateStringDecimalSig) evalTime(row chunk.Row) (types.Time, bool, error) { - unit, isNull, err := b.args[2].EvalString(b.ctx, row) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - date, isNull, err := b.getDateFromString(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - interval, isNull, err := b.getIntervalFromDecimal(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - result, isNull, err := b.add(b.ctx, date, interval, unit) - return result, isNull || err != nil, err -} - -func (b *builtinAddDateStringDecimalSig) evalString(row chunk.Row) (string, bool, error) { - - unit, isNull, err := b.args[2].EvalString(b.ctx, row) - if isNull || err != nil { - return types.ZeroTime.String(), true, err - } - - date, isNull, err := b.getDateFromString(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroTime.String(), true, err - } - - interval, isNull, err := b.getIntervalFromDecimal(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroTime.String(), true, err - } - - result, isNull, err := b.add(b.ctx, date, interval, unit) - - result.SetType(getDateAddOrSubReturnTypeByUnit(date.Type(), unit)) - return result.String(), isNull, err -} - -type builtinAddDateIntStringSig struct { - baseBuiltinFunc - baseDateArithmetical -} - -func (b *builtinAddDateIntStringSig) Clone() builtinFunc { - newSig := &builtinAddDateIntStringSig{baseDateArithmetical: b.baseDateArithmetical} - newSig.cloneFrom(&b.baseBuiltinFunc) - return newSig -} - -// evalTime evals ADDDATE(date,INTERVAL expr unit). -// See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_adddate -func (b *builtinAddDateIntStringSig) evalTime(row chunk.Row) (types.Time, bool, error) { - unit, isNull, err := b.args[2].EvalString(b.ctx, row) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - date, isNull, err := b.getDateFromInt(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - interval, isNull, err := b.getIntervalFromString(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - result, isNull, err := b.add(b.ctx, date, interval, unit) - return result, isNull || err != nil, err -} - -type builtinAddDateIntIntSig struct { - baseBuiltinFunc - baseDateArithmetical -} - -func (b *builtinAddDateIntIntSig) Clone() builtinFunc { - newSig := &builtinAddDateIntIntSig{baseDateArithmetical: b.baseDateArithmetical} - newSig.cloneFrom(&b.baseBuiltinFunc) - return newSig -} - -// evalTime evals ADDDATE(date,INTERVAL expr unit). -// See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_adddate -func (b *builtinAddDateIntIntSig) evalTime(row chunk.Row) (types.Time, bool, error) { - unit, isNull, err := b.args[2].EvalString(b.ctx, row) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - date, isNull, err := b.getDateFromInt(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - interval, isNull, err := b.getIntervalFromInt(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - result, isNull, err := b.add(b.ctx, date, interval, unit) - return result, isNull || err != nil, err -} - -type builtinAddDateIntRealSig struct { - baseBuiltinFunc - baseDateArithmetical -} - -func (b *builtinAddDateIntRealSig) Clone() builtinFunc { - newSig := &builtinAddDateIntRealSig{baseDateArithmetical: b.baseDateArithmetical} - newSig.cloneFrom(&b.baseBuiltinFunc) - return newSig -} - -// evalTime evals ADDDATE(date,INTERVAL expr unit). -// See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_adddate -func (b *builtinAddDateIntRealSig) evalTime(row chunk.Row) (types.Time, bool, error) { - unit, isNull, err := b.args[2].EvalString(b.ctx, row) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - date, isNull, err := b.getDateFromInt(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - interval, isNull, err := b.getIntervalFromReal(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - result, isNull, err := b.add(b.ctx, date, interval, unit) - return result, isNull || err != nil, err -} - -type builtinAddDateIntDecimalSig struct { - baseBuiltinFunc - baseDateArithmetical -} - -func (b *builtinAddDateIntDecimalSig) Clone() builtinFunc { - newSig := &builtinAddDateIntDecimalSig{baseDateArithmetical: b.baseDateArithmetical} - newSig.cloneFrom(&b.baseBuiltinFunc) - return newSig -} - -// evalTime evals ADDDATE(date,INTERVAL expr unit). -// See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_adddate -func (b *builtinAddDateIntDecimalSig) evalTime(row chunk.Row) (types.Time, bool, error) { - unit, isNull, err := b.args[2].EvalString(b.ctx, row) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - date, isNull, err := b.getDateFromInt(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - interval, isNull, err := b.getIntervalFromDecimal(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - result, isNull, err := b.add(b.ctx, date, interval, unit) - return result, isNull || err != nil, err -} - -type builtinAddDateDatetimeStringSig struct { - baseBuiltinFunc - baseDateArithmetical -} - -func (b *builtinAddDateDatetimeStringSig) Clone() builtinFunc { - newSig := &builtinAddDateDatetimeStringSig{baseDateArithmetical: b.baseDateArithmetical} - newSig.cloneFrom(&b.baseBuiltinFunc) - return newSig -} - -// evalTime evals ADDDATE(date,INTERVAL expr unit). -// See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_adddate -func (b *builtinAddDateDatetimeStringSig) evalTime(row chunk.Row) (types.Time, bool, error) { - unit, isNull, err := b.args[2].EvalString(b.ctx, row) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - date, isNull, err := b.getDateFromDatetime(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - interval, isNull, err := b.getIntervalFromString(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - result, isNull, err := b.add(b.ctx, date, interval, unit) - return result, isNull || err != nil, err -} - -type builtinAddDateDatetimeIntSig struct { - baseBuiltinFunc - baseDateArithmetical -} - -func (b *builtinAddDateDatetimeIntSig) Clone() builtinFunc { - newSig := &builtinAddDateDatetimeIntSig{baseDateArithmetical: b.baseDateArithmetical} - newSig.cloneFrom(&b.baseBuiltinFunc) - return newSig -} - -// evalTime evals ADDDATE(date,INTERVAL expr unit). -// See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_adddate -func (b *builtinAddDateDatetimeIntSig) evalTime(row chunk.Row) (types.Time, bool, error) { - unit, isNull, err := b.args[2].EvalString(b.ctx, row) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - date, isNull, err := b.getDateFromDatetime(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - interval, isNull, err := b.getIntervalFromInt(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - result, isNull, err := b.add(b.ctx, date, interval, unit) - return result, isNull || err != nil, err -} - -type builtinAddDateDatetimeRealSig struct { - baseBuiltinFunc - baseDateArithmetical -} - -func (b *builtinAddDateDatetimeRealSig) Clone() builtinFunc { - newSig := &builtinAddDateDatetimeRealSig{baseDateArithmetical: b.baseDateArithmetical} - newSig.cloneFrom(&b.baseBuiltinFunc) - return newSig -} - -// evalTime evals ADDDATE(date,INTERVAL expr unit). -// See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_adddate -func (b *builtinAddDateDatetimeRealSig) evalTime(row chunk.Row) (types.Time, bool, error) { - unit, isNull, err := b.args[2].EvalString(b.ctx, row) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - date, isNull, err := b.getDateFromDatetime(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - interval, isNull, err := b.getIntervalFromReal(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - result, isNull, err := b.add(b.ctx, date, interval, unit) - return result, isNull || err != nil, err -} - -type builtinAddDateDatetimeDecimalSig struct { - baseBuiltinFunc - baseDateArithmetical -} - -func (b *builtinAddDateDatetimeDecimalSig) Clone() builtinFunc { - newSig := &builtinAddDateDatetimeDecimalSig{baseDateArithmetical: b.baseDateArithmetical} - newSig.cloneFrom(&b.baseBuiltinFunc) - return newSig -} - -// evalTime evals ADDDATE(date,INTERVAL expr unit). -// See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_adddate -func (b *builtinAddDateDatetimeDecimalSig) evalTime(row chunk.Row) (types.Time, bool, error) { - unit, isNull, err := b.args[2].EvalString(b.ctx, row) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - date, isNull, err := b.getDateFromDatetime(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - interval, isNull, err := b.getIntervalFromDecimal(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - result, isNull, err := b.add(b.ctx, date, interval, unit) - return result, isNull || err != nil, err -} - -type builtinAddDateDurationStringSig struct { - baseBuiltinFunc - baseDateArithmetical -} - -func (b *builtinAddDateDurationStringSig) Clone() builtinFunc { - newSig := &builtinAddDateDurationStringSig{baseDateArithmetical: b.baseDateArithmetical} - newSig.cloneFrom(&b.baseBuiltinFunc) - return newSig -} - -func (b *builtinAddDateDurationStringSig) evalDuration(row chunk.Row) (types.Duration, bool, error) { - unit, isNull, err := b.args[2].EvalString(b.ctx, row) - if isNull || err != nil { - return types.ZeroDuration, true, err - } - - dur, isNull, err := b.args[0].EvalDuration(b.ctx, row) - if isNull || err != nil { - return types.ZeroDuration, true, err - } - - interval, isNull, err := b.getIntervalFromString(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroDuration, true, err - } - - result, isNull, err := b.addDuration(b.ctx, dur, interval, unit) - return result, isNull || err != nil, err -} - -type builtinAddDateDurationIntSig struct { - baseBuiltinFunc - baseDateArithmetical -} - -func (b *builtinAddDateDurationIntSig) Clone() builtinFunc { - newSig := &builtinAddDateDurationIntSig{baseDateArithmetical: b.baseDateArithmetical} - newSig.cloneFrom(&b.baseBuiltinFunc) - return newSig -} - -func (b *builtinAddDateDurationIntSig) evalDuration(row chunk.Row) (types.Duration, bool, error) { - unit, isNull, err := b.args[2].EvalString(b.ctx, row) - if isNull || err != nil { - return types.ZeroDuration, true, err - } - - dur, isNull, err := b.args[0].EvalDuration(b.ctx, row) - if isNull || err != nil { - return types.ZeroDuration, true, err - } - interval, isNull, err := b.getIntervalFromInt(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroDuration, true, err - } - - result, isNull, err := b.addDuration(b.ctx, dur, interval, unit) - return result, isNull || err != nil, err -} - -type builtinAddDateDurationDecimalSig struct { - baseBuiltinFunc - baseDateArithmetical -} - -func (b *builtinAddDateDurationDecimalSig) Clone() builtinFunc { - newSig := &builtinAddDateDurationDecimalSig{baseDateArithmetical: b.baseDateArithmetical} - newSig.cloneFrom(&b.baseBuiltinFunc) - return newSig -} - -func (b *builtinAddDateDurationDecimalSig) evalDuration(row chunk.Row) (types.Duration, bool, error) { - unit, isNull, err := b.args[2].EvalString(b.ctx, row) - if isNull || err != nil { - return types.ZeroDuration, true, err - } - - dur, isNull, err := b.args[0].EvalDuration(b.ctx, row) - if isNull || err != nil { - return types.ZeroDuration, true, err - } - interval, isNull, err := b.getIntervalFromDecimal(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroDuration, true, err - } - - result, isNull, err := b.addDuration(b.ctx, dur, interval, unit) - return result, isNull || err != nil, err -} - -type builtinAddDateDurationRealSig struct { - baseBuiltinFunc - baseDateArithmetical -} - -func (b *builtinAddDateDurationRealSig) Clone() builtinFunc { - newSig := &builtinAddDateDurationRealSig{baseDateArithmetical: b.baseDateArithmetical} - newSig.cloneFrom(&b.baseBuiltinFunc) - return newSig -} - -func (b *builtinAddDateDurationRealSig) evalDuration(row chunk.Row) (types.Duration, bool, error) { - unit, isNull, err := b.args[2].EvalString(b.ctx, row) - if isNull || err != nil { - return types.ZeroDuration, true, err - } - - dur, isNull, err := b.args[0].EvalDuration(b.ctx, row) - if isNull || err != nil { - return types.ZeroDuration, true, err - } - interval, isNull, err := b.getIntervalFromReal(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroDuration, true, err - } - - result, isNull, err := b.addDuration(b.ctx, dur, interval, unit) - return result, isNull || err != nil, err -} - -type subDateFunctionClass struct { - baseFunctionClass -} - -func (c *subDateFunctionClass) getFunction(ctx sessionctx.Context, args []Expression) (sig builtinFunc, err error) { - if err = c.verifyArgs(args); err != nil { - return nil, err - } - - dateEvalTp := args[0].GetType().EvalType() - if dateEvalTp != types.ETString && dateEvalTp != types.ETInt && dateEvalTp != types.ETDuration { - dateEvalTp = types.ETDatetime - } - - intervalEvalTp := args[1].GetType().EvalType() - if intervalEvalTp != types.ETString && intervalEvalTp != types.ETDecimal && intervalEvalTp != types.ETReal { - intervalEvalTp = types.ETInt - } - - argTps := []types.EvalType{dateEvalTp, intervalEvalTp, types.ETString} - var bf baseBuiltinFunc - unit, _, err := args[2].EvalString(ctx, chunk.Row{}) - if err != nil { - return nil, err - } - if dateEvalTp == types.ETDuration { - internalFsp := 0 - switch unit { - // If the unit has micro second, then the fsp must be the MaxFsp. - case "MICROSECOND", "SECOND_MICROSECOND", "MINUTE_MICROSECOND", "HOUR_MICROSECOND", "DAY_MICROSECOND": - internalFsp = types.MaxFsp - // If the unit is second, the fsp is related with the arg[1]'s. - case "SECOND": - internalFsp = types.MaxFsp - if intervalEvalTp != types.ETString { - internalFsp = mathutil.Min(args[1].GetType().GetDecimal(), types.MaxFsp) - } - // Otherwise, the fsp should be 0. - } - arg0Dec, err := getExpressionFsp(ctx, args[0]) - if err != nil { - return nil, err - } - bf, err = newBaseBuiltinFuncWithTp(ctx, c.funcName, args, types.ETDuration, argTps...) - if err != nil { - return nil, err - } - bf.setDecimalAndFlenForTime(mathutil.Max(arg0Dec, internalFsp)) - } else if dateEvalTp == types.ETString { - bf, err = newBaseBuiltinFuncWithTp(ctx, c.funcName, args, types.ETString, argTps...) - if err != nil { - return nil, err - } - bf.tp.SetFlen(mysql.MaxDatetimeFullWidth) - } else { - bf, err = newBaseBuiltinFuncWithTp(ctx, c.funcName, args, types.ETDatetime, argTps...) - if err != nil { - return nil, err - } - if dateEvalTp == types.ETDatetime && args[0].GetType().GetType() == mysql.TypeTimestamp { - tp := types.NewFieldType(mysql.TypeDatetime) - tp.SetDecimal(args[0].GetType().GetDecimal()) - tp.SetFlen(mysql.MaxDatetimeWidthNoFsp) - if tp.GetDecimal() > 0 { - tp.SetFlen(tp.GetFlen() + 1 + tp.GetDecimal()) - } - args[0] = BuildCastFunction(ctx, args[0], tp) - } - bf.setDecimalAndFlenForDatetime(int(types.MaxFsp)) - - if dateEvalTp == types.ETDatetime && args[0].GetType().GetType() == mysql.TypeDate { - switch strings.ToUpper(unit) { - // If the unit is YMD, the return type is date. - case "YEAR", "MONTH", "DAY", "YEAR_MONTH": - bf.setDecimalAndFlenForDate() - } - } - } - - switch { - case dateEvalTp == types.ETString && intervalEvalTp == types.ETString: - sig = &builtinSubDateStringStringSig{ - baseBuiltinFunc: bf, - baseDateArithmetical: newDateArithmeticalUtil(), - } - sig.setPbCode(tipb.ScalarFuncSig_SubDateStringString) - case dateEvalTp == types.ETString && intervalEvalTp == types.ETInt: - sig = &builtinSubDateStringIntSig{ - baseBuiltinFunc: bf, - baseDateArithmetical: newDateArithmeticalUtil(), - } - sig.setPbCode(tipb.ScalarFuncSig_SubDateStringInt) - case dateEvalTp == types.ETString && intervalEvalTp == types.ETReal: - sig = &builtinSubDateStringRealSig{ - baseBuiltinFunc: bf, - baseDateArithmetical: newDateArithmeticalUtil(), - } - sig.setPbCode(tipb.ScalarFuncSig_SubDateStringReal) - case dateEvalTp == types.ETString && intervalEvalTp == types.ETDecimal: - sig = &builtinSubDateStringDecimalSig{ - baseBuiltinFunc: bf, - baseDateArithmetical: newDateArithmeticalUtil(), - } - sig.setPbCode(tipb.ScalarFuncSig_SubDateStringDecimal) - case dateEvalTp == types.ETInt && intervalEvalTp == types.ETString: - sig = &builtinSubDateIntStringSig{ - baseBuiltinFunc: bf, - baseDateArithmetical: newDateArithmeticalUtil(), - } - sig.setPbCode(tipb.ScalarFuncSig_SubDateIntString) - case dateEvalTp == types.ETInt && intervalEvalTp == types.ETInt: - sig = &builtinSubDateIntIntSig{ - baseBuiltinFunc: bf, - baseDateArithmetical: newDateArithmeticalUtil(), - } - sig.setPbCode(tipb.ScalarFuncSig_SubDateIntInt) - case dateEvalTp == types.ETInt && intervalEvalTp == types.ETReal: - sig = &builtinSubDateIntRealSig{ - baseBuiltinFunc: bf, - baseDateArithmetical: newDateArithmeticalUtil(), - } - sig.setPbCode(tipb.ScalarFuncSig_SubDateIntReal) - case dateEvalTp == types.ETInt && intervalEvalTp == types.ETDecimal: - sig = &builtinSubDateIntDecimalSig{ - baseBuiltinFunc: bf, - baseDateArithmetical: newDateArithmeticalUtil(), - } - sig.setPbCode(tipb.ScalarFuncSig_SubDateIntDecimal) - case dateEvalTp == types.ETDatetime && intervalEvalTp == types.ETString: - sig = &builtinSubDateDatetimeStringSig{ - baseBuiltinFunc: bf, - baseDateArithmetical: newDateArithmeticalUtil(), - } - sig.setPbCode(tipb.ScalarFuncSig_SubDateDatetimeString) - case dateEvalTp == types.ETDatetime && intervalEvalTp == types.ETInt: - sig = &builtinSubDateDatetimeIntSig{ - baseBuiltinFunc: bf, - baseDateArithmetical: newDateArithmeticalUtil(), - } - sig.setPbCode(tipb.ScalarFuncSig_SubDateDatetimeInt) - case dateEvalTp == types.ETDatetime && intervalEvalTp == types.ETReal: - sig = &builtinSubDateDatetimeRealSig{ - baseBuiltinFunc: bf, - baseDateArithmetical: newDateArithmeticalUtil(), - } - sig.setPbCode(tipb.ScalarFuncSig_SubDateDatetimeReal) - case dateEvalTp == types.ETDatetime && intervalEvalTp == types.ETDecimal: - sig = &builtinSubDateDatetimeDecimalSig{ - baseBuiltinFunc: bf, - baseDateArithmetical: newDateArithmeticalUtil(), - } - sig.setPbCode(tipb.ScalarFuncSig_SubDateDatetimeDecimal) - case dateEvalTp == types.ETDuration && intervalEvalTp == types.ETString: - sig = &builtinSubDateDurationStringSig{ - baseBuiltinFunc: bf, - baseDateArithmetical: newDateArithmeticalUtil(), - } - sig.setPbCode(tipb.ScalarFuncSig_SubDateDurationString) - case dateEvalTp == types.ETDuration && intervalEvalTp == types.ETInt: - sig = &builtinSubDateDurationIntSig{ - baseBuiltinFunc: bf, - baseDateArithmetical: newDateArithmeticalUtil(), - } - sig.setPbCode(tipb.ScalarFuncSig_SubDateDurationInt) - case dateEvalTp == types.ETDuration && intervalEvalTp == types.ETReal: - sig = &builtinSubDateDurationRealSig{ - baseBuiltinFunc: bf, - baseDateArithmetical: newDateArithmeticalUtil(), - } - sig.setPbCode(tipb.ScalarFuncSig_SubDateDurationReal) - case dateEvalTp == types.ETDuration && intervalEvalTp == types.ETDecimal: - sig = &builtinSubDateDurationDecimalSig{ - baseBuiltinFunc: bf, - baseDateArithmetical: newDateArithmeticalUtil(), - } - sig.setPbCode(tipb.ScalarFuncSig_SubDateDurationDecimal) - } - return sig, nil -} - -type builtinSubDateStringStringSig struct { - baseBuiltinFunc - baseDateArithmetical -} - -func (b *builtinSubDateStringStringSig) Clone() builtinFunc { - newSig := &builtinSubDateStringStringSig{baseDateArithmetical: b.baseDateArithmetical} - newSig.cloneFrom(&b.baseBuiltinFunc) - return newSig -} - -// evalTime evals SUBDATE(date,INTERVAL expr unit). -// See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_subdate -func (b *builtinSubDateStringStringSig) evalTime(row chunk.Row) (types.Time, bool, error) { - unit, isNull, err := b.args[2].EvalString(b.ctx, row) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - date, isNull, err := b.getDateFromString(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroTime, true, err - } - if date.InvalidZero() { - return types.ZeroTime, true, handleInvalidTimeError(b.ctx, types.ErrWrongValue.GenWithStackByArgs(types.DateTimeStr, date.String())) - } - interval, isNull, err := b.getIntervalFromString(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - result, isNull, err := b.sub(b.ctx, date, interval, unit) - return result, isNull || err != nil, err -} - -func (b *builtinSubDateStringStringSig) evalString(row chunk.Row) (string, bool, error) { - unit, isNull, err := b.args[2].EvalString(b.ctx, row) - if isNull || err != nil { - return types.ZeroTime.String(), true, err - } - - date, isNull, err := b.getDateFromString(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroTime.String(), true, err - } - - interval, isNull, err := b.getIntervalFromString(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroTime.String(), true, err - } - - result, isNull, err := b.sub(b.ctx, date, interval, unit) - - result.SetType(getDateAddOrSubReturnTypeByUnit(date.Type(), unit)) - return result.String(), isNull, err -} - -type builtinSubDateStringIntSig struct { - baseBuiltinFunc - baseDateArithmetical -} - -func (b *builtinSubDateStringIntSig) Clone() builtinFunc { - newSig := &builtinSubDateStringIntSig{baseDateArithmetical: b.baseDateArithmetical} - newSig.cloneFrom(&b.baseBuiltinFunc) - return newSig -} - -// evalTime evals SUBDATE(date,INTERVAL expr unit). -// See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_subdate -func (b *builtinSubDateStringIntSig) evalTime(row chunk.Row) (types.Time, bool, error) { - unit, isNull, err := b.args[2].EvalString(b.ctx, row) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - date, isNull, err := b.getDateFromString(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - interval, isNull, err := b.getIntervalFromInt(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - result, isNull, err := b.sub(b.ctx, date, interval, unit) - return result, isNull || err != nil, err -} - -func (b *builtinSubDateStringIntSig) evalString(row chunk.Row) (string, bool, error) { - unit, isNull, err := b.args[2].EvalString(b.ctx, row) - if isNull || err != nil { - return types.ZeroTime.String(), true, err - } - - date, isNull, err := b.getDateFromString(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroTime.String(), true, err - } - - interval, isNull, err := b.getIntervalFromInt(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroTime.String(), true, err - } - - result, isNull, err := b.sub(b.ctx, date, interval, unit) - - result.SetType(getDateAddOrSubReturnTypeByUnit(date.Type(), unit)) - return result.String(), isNull, err -} - -type builtinSubDateStringRealSig struct { - baseBuiltinFunc - baseDateArithmetical -} - -func (b *builtinSubDateStringRealSig) Clone() builtinFunc { - newSig := &builtinSubDateStringRealSig{baseDateArithmetical: b.baseDateArithmetical} - newSig.cloneFrom(&b.baseBuiltinFunc) - return newSig -} - -// evalTime evals SUBDATE(date,INTERVAL expr unit). -// See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_subdate -func (b *builtinSubDateStringRealSig) evalTime(row chunk.Row) (types.Time, bool, error) { - unit, isNull, err := b.args[2].EvalString(b.ctx, row) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - date, isNull, err := b.getDateFromString(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - interval, isNull, err := b.getIntervalFromReal(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - result, isNull, err := b.sub(b.ctx, date, interval, unit) - return result, isNull || err != nil, err -} - -func (b *builtinSubDateStringRealSig) evalString(row chunk.Row) (string, bool, error) { - unit, isNull, err := b.args[2].EvalString(b.ctx, row) - if isNull || err != nil { - return types.ZeroTime.String(), true, err - } - - date, isNull, err := b.getDateFromString(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroTime.String(), true, err - } - - interval, isNull, err := b.getIntervalFromReal(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroTime.String(), true, err - } - - result, isNull, err := b.sub(b.ctx, date, interval, unit) - result.SetType(getDateAddOrSubReturnTypeByUnit(date.Type(), unit)) - return result.String(), isNull, err -} - -type builtinSubDateStringDecimalSig struct { - baseBuiltinFunc - baseDateArithmetical -} - -func (b *builtinSubDateStringDecimalSig) Clone() builtinFunc { - newSig := &builtinSubDateStringDecimalSig{baseDateArithmetical: b.baseDateArithmetical} - newSig.cloneFrom(&b.baseBuiltinFunc) - return newSig -} - -func (b *builtinSubDateStringDecimalSig) evalTime(row chunk.Row) (types.Time, bool, error) { - unit, isNull, err := b.args[2].EvalString(b.ctx, row) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - date, isNull, err := b.getDateFromString(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - interval, isNull, err := b.getIntervalFromDecimal(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - result, isNull, err := b.sub(b.ctx, date, interval, unit) - return result, isNull || err != nil, err -} - -func (b *builtinSubDateStringDecimalSig) evalString(row chunk.Row) (string, bool, error) { - unit, isNull, err := b.args[2].EvalString(b.ctx, row) - if isNull || err != nil { - return types.ZeroTime.String(), true, err - } - - date, isNull, err := b.getDateFromString(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroTime.String(), true, err - } - - interval, isNull, err := b.getIntervalFromDecimal(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroTime.String(), true, err - } - - result, isNull, err := b.sub(b.ctx, date, interval, unit) - - result.SetType(getDateAddOrSubReturnTypeByUnit(date.Type(), unit)) - return result.String(), isNull, err -} - -type builtinSubDateIntStringSig struct { - baseBuiltinFunc - baseDateArithmetical -} - -func (b *builtinSubDateIntStringSig) Clone() builtinFunc { - newSig := &builtinSubDateIntStringSig{baseDateArithmetical: b.baseDateArithmetical} - newSig.cloneFrom(&b.baseBuiltinFunc) - return newSig -} - -// evalTime evals SUBDATE(date,INTERVAL expr unit). -// See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_subdate -func (b *builtinSubDateIntStringSig) evalTime(row chunk.Row) (types.Time, bool, error) { - unit, isNull, err := b.args[2].EvalString(b.ctx, row) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - date, isNull, err := b.getDateFromInt(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - interval, isNull, err := b.getIntervalFromString(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - result, isNull, err := b.sub(b.ctx, date, interval, unit) - return result, isNull || err != nil, err -} - -type builtinSubDateIntIntSig struct { - baseBuiltinFunc - baseDateArithmetical -} - -func (b *builtinSubDateIntIntSig) Clone() builtinFunc { - newSig := &builtinSubDateIntIntSig{baseDateArithmetical: b.baseDateArithmetical} - newSig.cloneFrom(&b.baseBuiltinFunc) - return newSig -} - -// evalTime evals SUBDATE(date,INTERVAL expr unit). -// See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_subdate -func (b *builtinSubDateIntIntSig) evalTime(row chunk.Row) (types.Time, bool, error) { - unit, isNull, err := b.args[2].EvalString(b.ctx, row) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - date, isNull, err := b.getDateFromInt(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - interval, isNull, err := b.getIntervalFromInt(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - result, isNull, err := b.sub(b.ctx, date, interval, unit) - return result, isNull || err != nil, err -} - -type builtinSubDateIntRealSig struct { - baseBuiltinFunc - baseDateArithmetical -} - -func (b *builtinSubDateIntRealSig) Clone() builtinFunc { - newSig := &builtinSubDateIntRealSig{baseDateArithmetical: b.baseDateArithmetical} - newSig.cloneFrom(&b.baseBuiltinFunc) - return newSig -} - -// evalTime evals SUBDATE(date,INTERVAL expr unit). -// See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_subdate -func (b *builtinSubDateIntRealSig) evalTime(row chunk.Row) (types.Time, bool, error) { - unit, isNull, err := b.args[2].EvalString(b.ctx, row) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - date, isNull, err := b.getDateFromInt(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - interval, isNull, err := b.getIntervalFromReal(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - result, isNull, err := b.sub(b.ctx, date, interval, unit) - return result, isNull || err != nil, err -} - -type builtinSubDateDatetimeStringSig struct { - baseBuiltinFunc - baseDateArithmetical -} - -type builtinSubDateIntDecimalSig struct { - baseBuiltinFunc - baseDateArithmetical -} - -func (b *builtinSubDateIntDecimalSig) Clone() builtinFunc { - newSig := &builtinSubDateIntDecimalSig{baseDateArithmetical: b.baseDateArithmetical} - newSig.cloneFrom(&b.baseBuiltinFunc) - return newSig -} - -// evalTime evals SUBDATE(date,INTERVAL expr unit). -// See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_subdate -func (b *builtinSubDateIntDecimalSig) evalTime(row chunk.Row) (types.Time, bool, error) { - unit, isNull, err := b.args[2].EvalString(b.ctx, row) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - date, isNull, err := b.getDateFromInt(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - interval, isNull, err := b.getIntervalFromDecimal(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - result, isNull, err := b.sub(b.ctx, date, interval, unit) - return result, isNull || err != nil, err -} - -func (b *builtinSubDateDatetimeStringSig) Clone() builtinFunc { - newSig := &builtinSubDateDatetimeStringSig{baseDateArithmetical: b.baseDateArithmetical} - newSig.cloneFrom(&b.baseBuiltinFunc) - return newSig -} - -// evalTime evals SUBDATE(date,INTERVAL expr unit). -// See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_subdate -func (b *builtinSubDateDatetimeStringSig) evalTime(row chunk.Row) (types.Time, bool, error) { - unit, isNull, err := b.args[2].EvalString(b.ctx, row) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - date, isNull, err := b.getDateFromDatetime(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - interval, isNull, err := b.getIntervalFromString(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - result, isNull, err := b.sub(b.ctx, date, interval, unit) - return result, isNull || err != nil, err -} - -type builtinSubDateDatetimeIntSig struct { - baseBuiltinFunc - baseDateArithmetical -} - -func (b *builtinSubDateDatetimeIntSig) Clone() builtinFunc { - newSig := &builtinSubDateDatetimeIntSig{baseDateArithmetical: b.baseDateArithmetical} - newSig.cloneFrom(&b.baseBuiltinFunc) - return newSig -} - -// evalTime evals SUBDATE(date,INTERVAL expr unit). -// See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_subdate -func (b *builtinSubDateDatetimeIntSig) evalTime(row chunk.Row) (types.Time, bool, error) { - unit, isNull, err := b.args[2].EvalString(b.ctx, row) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - date, isNull, err := b.getDateFromDatetime(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - interval, isNull, err := b.getIntervalFromInt(b.ctx, b.args, row, unit) + d, isNull, err := b.args[0].EvalDuration(b.ctx, row) if isNull || err != nil { return types.ZeroTime, true, err } - result, isNull, err := b.sub(b.ctx, date, interval, unit) - return result, isNull || err != nil, err -} - -type builtinSubDateDatetimeRealSig struct { - baseBuiltinFunc - baseDateArithmetical -} - -func (b *builtinSubDateDatetimeRealSig) Clone() builtinFunc { - newSig := &builtinSubDateDatetimeRealSig{baseDateArithmetical: b.baseDateArithmetical} - newSig.cloneFrom(&b.baseBuiltinFunc) - return newSig -} - -// evalTime evals SUBDATE(date,INTERVAL expr unit). -// See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_subdate -func (b *builtinSubDateDatetimeRealSig) evalTime(row chunk.Row) (types.Time, bool, error) { - unit, isNull, err := b.args[2].EvalString(b.ctx, row) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - date, isNull, err := b.getDateFromDatetime(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - interval, isNull, err := b.getIntervalFromReal(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - result, isNull, err := b.sub(b.ctx, date, interval, unit) - return result, isNull || err != nil, err -} - -type builtinSubDateDatetimeDecimalSig struct { - baseBuiltinFunc - baseDateArithmetical -} - -func (b *builtinSubDateDatetimeDecimalSig) Clone() builtinFunc { - newSig := &builtinSubDateDatetimeDecimalSig{baseDateArithmetical: b.baseDateArithmetical} - newSig.cloneFrom(&b.baseBuiltinFunc) - return newSig -} - -// evalTime evals SUBDATE(date,INTERVAL expr unit). -// See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_subdate -func (b *builtinSubDateDatetimeDecimalSig) evalTime(row chunk.Row) (types.Time, bool, error) { - unit, isNull, err := b.args[2].EvalString(b.ctx, row) - if isNull || err != nil { - return types.ZeroTime, true, err - } - - date, isNull, err := b.getDateFromDatetime(b.ctx, b.args, row, unit) + interval, isNull, err := b.getInterval(&b.baseDateArithmetical, b.ctx, b.args, row, unit) if isNull || err != nil { return types.ZeroTime, true, err } - interval, isNull, err := b.getIntervalFromDecimal(b.ctx, b.args, row, unit) - if isNull || err != nil { + sc := b.ctx.GetSessionVars().StmtCtx + t, err := d.ConvertToTime(sc, mysql.TypeDatetime) + if err != nil { return types.ZeroTime, true, err } - - result, isNull, err := b.sub(b.ctx, date, interval, unit) - return result, isNull || err != nil, err -} - -type builtinSubDateDurationStringSig struct { - baseBuiltinFunc - baseDateArithmetical -} - -func (b *builtinSubDateDurationStringSig) Clone() builtinFunc { - newSig := &builtinSubDateDurationStringSig{baseDateArithmetical: b.baseDateArithmetical} - newSig.cloneFrom(&b.baseBuiltinFunc) - return newSig -} - -func (b *builtinSubDateDurationStringSig) evalDuration(row chunk.Row) (types.Duration, bool, error) { - unit, isNull, err := b.args[2].EvalString(b.ctx, row) - if isNull || err != nil { - return types.ZeroDuration, true, err - } - - dur, isNull, err := b.args[0].EvalDuration(b.ctx, row) - if isNull || err != nil { - return types.ZeroDuration, true, err - } - - interval, isNull, err := b.getIntervalFromString(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroDuration, true, err - } - - result, isNull, err := b.subDuration(b.ctx, dur, interval, unit) - return result, isNull || err != nil, err -} - -type builtinSubDateDurationIntSig struct { - baseBuiltinFunc - baseDateArithmetical -} - -func (b *builtinSubDateDurationIntSig) Clone() builtinFunc { - newSig := &builtinSubDateDurationIntSig{baseDateArithmetical: b.baseDateArithmetical} - newSig.cloneFrom(&b.baseBuiltinFunc) - return newSig -} - -func (b *builtinSubDateDurationIntSig) evalDuration(row chunk.Row) (types.Duration, bool, error) { - unit, isNull, err := b.args[2].EvalString(b.ctx, row) - if isNull || err != nil { - return types.ZeroDuration, true, err - } - - dur, isNull, err := b.args[0].EvalDuration(b.ctx, row) - if isNull || err != nil { - return types.ZeroDuration, true, err - } - - interval, isNull, err := b.getIntervalFromInt(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroDuration, true, err - } - - result, isNull, err := b.subDuration(b.ctx, dur, interval, unit) + result, isNull, err := b.timeOp(&b.baseDateArithmetical, b.ctx, t, interval, unit, b.tp.GetDecimal()) return result, isNull || err != nil, err } -type builtinSubDateDurationDecimalSig struct { - baseBuiltinFunc - baseDateArithmetical -} - -func (b *builtinSubDateDurationDecimalSig) Clone() builtinFunc { - newSig := &builtinSubDateDurationDecimalSig{baseDateArithmetical: b.baseDateArithmetical} - newSig.cloneFrom(&b.baseBuiltinFunc) - return newSig -} - -func (b *builtinSubDateDurationDecimalSig) evalDuration(row chunk.Row) (types.Duration, bool, error) { +func (b *builtinAddSubDateDurationAnySig) evalDuration(row chunk.Row) (types.Duration, bool, error) { unit, isNull, err := b.args[2].EvalString(b.ctx, row) if isNull || err != nil { return types.ZeroDuration, true, err @@ -4819,42 +3990,12 @@ func (b *builtinSubDateDurationDecimalSig) evalDuration(row chunk.Row) (types.Du return types.ZeroDuration, true, err } - interval, isNull, err := b.getIntervalFromDecimal(b.ctx, b.args, row, unit) - if isNull || err != nil { - return types.ZeroDuration, true, err - } - - result, isNull, err := b.subDuration(b.ctx, dur, interval, unit) - return result, isNull || err != nil, err -} - -type builtinSubDateDurationRealSig struct { - baseBuiltinFunc - baseDateArithmetical -} - -func (b *builtinSubDateDurationRealSig) Clone() builtinFunc { - newSig := &builtinSubDateDurationRealSig{baseDateArithmetical: b.baseDateArithmetical} - newSig.cloneFrom(&b.baseBuiltinFunc) - return newSig -} - -func (b *builtinSubDateDurationRealSig) evalDuration(row chunk.Row) (types.Duration, bool, error) { - unit, isNull, err := b.args[2].EvalString(b.ctx, row) - if isNull || err != nil { - return types.ZeroDuration, true, err - } - - dur, isNull, err := b.args[0].EvalDuration(b.ctx, row) - if isNull || err != nil { - return types.ZeroDuration, true, err - } - interval, isNull, err := b.getIntervalFromReal(b.ctx, b.args, row, unit) + interval, isNull, err := b.getInterval(&b.baseDateArithmetical, b.ctx, b.args, row, unit) if isNull || err != nil { return types.ZeroDuration, true, err } - result, isNull, err := b.subDuration(b.ctx, dur, interval, unit) + result, isNull, err := b.durationOp(&b.baseDateArithmetical, b.ctx, dur, interval, unit, b.tp.GetDecimal()) return result, isNull || err != nil, err } @@ -4969,8 +4110,8 @@ func (c *unixTimestampFunctionClass) getFunction(ctx sessionctx.Context, args [] if err != nil { return nil, err } - bf.tp.SetFlen(retFLen) - bf.tp.SetDecimal(retDecimal) + bf.tp.SetFlenUnderLimit(retFLen) + bf.tp.SetDecimalUnderLimit(retDecimal) var sig builtinFunc if len(args) == 0 { @@ -4988,9 +4129,13 @@ func (c *unixTimestampFunctionClass) getFunction(ctx sessionctx.Context, args [] // goTimeToMysqlUnixTimestamp converts go time into MySQL's Unix timestamp. // MySQL's Unix timestamp ranges in int32. Values out of range should be rewritten to 0. +// https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_unix-timestamp func goTimeToMysqlUnixTimestamp(t time.Time, decimal int) (*types.MyDecimal, error) { nanoSeconds := t.UnixNano() - if nanoSeconds < 0 || (nanoSeconds/1e3) >= (math.MaxInt32+1)*1e6 { + // Prior to MySQL 8.0.28, the valid range of argument values is the same as for the TIMESTAMP data type: + // '1970-01-01 00:00:01.000000' UTC to '2038-01-19 03:14:07.999999' UTC. + // This is also the case in MySQL 8.0.28 and later for 32-bit platforms. + if nanoSeconds < 1e9 || (nanoSeconds/1e3) >= (math.MaxInt32+1)*1e6 { return new(types.MyDecimal), nil } dec := new(types.MyDecimal) @@ -5228,7 +4373,7 @@ func (b *builtinTimestamp2ArgsSig) evalTime(row chunk.Row) (types.Time, bool, er if !isDuration(arg1) { return types.ZeroTime, true, nil } - duration, err := types.ParseDuration(sc, arg1, types.GetFsp(arg1)) + duration, _, err := types.ParseDuration(sc, arg1, types.GetFsp(arg1)) if err != nil { return types.ZeroTime, true, handleInvalidTimeError(b.ctx, err) } @@ -5390,7 +4535,7 @@ func strDatetimeAddDuration(sc *stmtctx.StatementContext, d string, arg1 types.D // strDurationAddDuration adds duration to duration string, returns a string value. func strDurationAddDuration(sc *stmtctx.StatementContext, d string, arg1 types.Duration) (string, error) { - arg0, err := types.ParseDuration(sc, d, types.MaxFsp) + arg0, _, err := types.ParseDuration(sc, d, types.MaxFsp) if err != nil { return "", err } @@ -5427,7 +4572,7 @@ func strDatetimeSubDuration(sc *stmtctx.StatementContext, d string, arg1 types.D // strDurationSubDuration subtracts duration from duration string, returns a string value. func strDurationSubDuration(sc *stmtctx.StatementContext, d string, arg1 types.Duration) (string, error) { - arg0, err := types.ParseDuration(sc, d, types.MaxFsp) + arg0, _, err := types.ParseDuration(sc, d, types.MaxFsp) if err != nil { return "", err } @@ -5576,7 +4721,7 @@ func (b *builtinAddDatetimeAndStringSig) evalTime(row chunk.Row) (types.Time, bo return types.ZeroDatetime, true, nil } sc := b.ctx.GetSessionVars().StmtCtx - arg1, err := types.ParseDuration(sc, s, types.GetFsp(s)) + arg1, _, err := types.ParseDuration(sc, s, types.GetFsp(s)) if err != nil { if terror.ErrorEqual(err, types.ErrTruncatedWrongVal) { sc.AppendWarning(err) @@ -5657,7 +4802,7 @@ func (b *builtinAddDurationAndStringSig) evalDuration(row chunk.Row) (types.Dura return types.ZeroDuration, true, nil } sc := b.ctx.GetSessionVars().StmtCtx - arg1, err := types.ParseDuration(sc, s, types.GetFsp(s)) + arg1, _, err := types.ParseDuration(sc, s, types.GetFsp(s)) if err != nil { if terror.ErrorEqual(err, types.ErrTruncatedWrongVal) { sc.AppendWarning(err) @@ -5759,7 +4904,7 @@ func (b *builtinAddStringAndStringSig) evalString(row chunk.Row) (result string, return "", isNull, err } sc := b.ctx.GetSessionVars().StmtCtx - arg1, err = types.ParseDuration(sc, arg1Str, getFsp4TimeAddSub(arg1Str)) + arg1, _, err = types.ParseDuration(sc, arg1Str, getFsp4TimeAddSub(arg1Str)) if err != nil { if terror.ErrorEqual(err, types.ErrTruncatedWrongVal) { sc.AppendWarning(err) @@ -5842,7 +4987,7 @@ func (b *builtinAddDateAndStringSig) evalString(row chunk.Row) (string, bool, er return "", true, nil } sc := b.ctx.GetSessionVars().StmtCtx - arg1, err := types.ParseDuration(sc, s, getFsp4TimeAddSub(s)) + arg1, _, err := types.ParseDuration(sc, s, getFsp4TimeAddSub(s)) if err != nil { if terror.ErrorEqual(err, types.ErrTruncatedWrongVal) { sc.AppendWarning(err) @@ -6108,7 +5253,8 @@ func (b *builtinMakeTimeSig) makeTime(hour int64, minute int64, second float64, second = 59 } fsp := b.tp.GetDecimal() - return types.ParseDuration(b.ctx.GetSessionVars().StmtCtx, fmt.Sprintf("%02d:%02d:%v", hour, minute, second), fsp) + d, _, err := types.ParseDuration(b.ctx.GetSessionVars().StmtCtx, fmt.Sprintf("%02d:%02d:%v", hour, minute, second), fsp) + return d, err } // evalDuration evals a builtinMakeTimeIntSig. @@ -6402,7 +5548,7 @@ func (b *builtinSecToTimeSig) evalDuration(row chunk.Row) (types.Duration, bool, secondDemical = float64(second) + demical var dur types.Duration - dur, err = types.ParseDuration(b.ctx.GetSessionVars().StmtCtx, fmt.Sprintf("%s%02d:%02d:%s", negative, hour, minute, strconv.FormatFloat(secondDemical, 'f', -1, 64)), b.tp.GetDecimal()) + dur, _, err = types.ParseDuration(b.ctx.GetSessionVars().StmtCtx, 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 } @@ -6531,7 +5677,7 @@ func (b *builtinSubDatetimeAndStringSig) evalTime(row chunk.Row) (types.Time, bo return types.ZeroDatetime, true, nil } sc := b.ctx.GetSessionVars().StmtCtx - arg1, err := types.ParseDuration(sc, s, types.GetFsp(s)) + arg1, _, err := types.ParseDuration(sc, s, types.GetFsp(s)) if err != nil { if terror.ErrorEqual(err, types.ErrTruncatedWrongVal) { sc.AppendWarning(err) @@ -6630,7 +5776,7 @@ func (b *builtinSubStringAndStringSig) evalString(row chunk.Row) (result string, return "", isNull, err } sc := b.ctx.GetSessionVars().StmtCtx - arg1, err = types.ParseDuration(sc, s, getFsp4TimeAddSub(s)) + arg1, _, err = types.ParseDuration(sc, s, getFsp4TimeAddSub(s)) if err != nil { if terror.ErrorEqual(err, types.ErrTruncatedWrongVal) { sc.AppendWarning(err) @@ -6722,7 +5868,7 @@ func (b *builtinSubDurationAndStringSig) evalDuration(row chunk.Row) (types.Dura return types.ZeroDuration, true, nil } sc := b.ctx.GetSessionVars().StmtCtx - arg1, err := types.ParseDuration(sc, s, types.GetFsp(s)) + arg1, _, err := types.ParseDuration(sc, s, types.GetFsp(s)) if err != nil { if terror.ErrorEqual(err, types.ErrTruncatedWrongVal) { sc.AppendWarning(err) @@ -6800,7 +5946,7 @@ func (b *builtinSubDateAndStringSig) evalString(row chunk.Row) (string, bool, er return "", true, nil } sc := b.ctx.GetSessionVars().StmtCtx - arg1, err := types.ParseDuration(sc, s, getFsp4TimeAddSub(s)) + arg1, _, err := types.ParseDuration(sc, s, getFsp4TimeAddSub(s)) if err != nil { if terror.ErrorEqual(err, types.ErrTruncatedWrongVal) { sc.AppendWarning(err) @@ -7165,7 +6311,7 @@ func (b *builtinUTCTimeWithoutArgSig) evalDuration(row chunk.Row) (types.Duratio if err != nil { return types.Duration{}, true, err } - v, err := types.ParseDuration(b.ctx.GetSessionVars().StmtCtx, nowTs.UTC().Format(types.TimeFormat), 0) + v, _, err := types.ParseDuration(b.ctx.GetSessionVars().StmtCtx, nowTs.UTC().Format(types.TimeFormat), 0) return v, false, err } @@ -7196,7 +6342,7 @@ func (b *builtinUTCTimeWithArgSig) evalDuration(row chunk.Row) (types.Duration, if err != nil { return types.Duration{}, true, err } - v, err := types.ParseDuration(b.ctx.GetSessionVars().StmtCtx, nowTs.UTC().Format(types.TimeFSPFormat), int(fsp)) + v, _, err := types.ParseDuration(b.ctx.GetSessionVars().StmtCtx, nowTs.UTC().Format(types.TimeFSPFormat), int(fsp)) return v, false, err } diff --git a/expression/builtin_time_test.go b/expression/builtin_time_test.go index 3fb374027608e..fb8387eb022fb 100644 --- a/expression/builtin_time_test.go +++ b/expression/builtin_time_test.go @@ -946,7 +946,7 @@ func TestAddTimeSig(t *testing.T) { resetStmtContext(ctx) now, _, err := evalNowWithFsp(ctx, 0) require.NoError(t, err) - res, _, err := du.add(ctx, now, "1", "MICROSECOND") + res, _, err := du.add(ctx, now, "1", "MICROSECOND", 6) require.NoError(t, err) require.Equal(t, 6, res.Fsp()) @@ -962,7 +962,7 @@ func TestAddTimeSig(t *testing.T) { {"-110:00:00", "1 02:00:00", "-84:00:00"}, } for _, c := range tbl { - dur, err := types.ParseDuration(ctx.GetSessionVars().StmtCtx, c.Input, types.GetFsp(c.Input)) + dur, _, err := types.ParseDuration(ctx.GetSessionVars().StmtCtx, c.Input, types.GetFsp(c.Input)) require.NoError(t, err) tmpInput := types.NewDurationDatum(dur) tmpInputDuration := types.NewStringDatum(c.InputDuration) @@ -1063,7 +1063,7 @@ func TestSubTimeSig(t *testing.T) { {"235959", "00:00:01", "23:59:58"}, } for _, c := range tbl { - dur, err := types.ParseDuration(ctx.GetSessionVars().StmtCtx, c.Input, types.GetFsp(c.Input)) + dur, _, err := types.ParseDuration(ctx.GetSessionVars().StmtCtx, c.Input, types.GetFsp(c.Input)) require.NoError(t, err) tmpInput := types.NewDurationDatum(dur) tmpInputDuration := types.NewStringDatum(c.InputDuration) @@ -2003,84 +2003,94 @@ func TestDateArithFuncs(t *testing.T) { } testDurations := []struct { - fc functionClass - dur string - fsp int - unit string - format interface{} - expected string + fc functionClass + dur string + fsp int + unit string + format interface{} + expected string + checkHmsOnly bool // Duration + day returns datetime with current date padded, only check HMS part for them. }{ { - fc: fcAdd, - dur: "00:00:00", - fsp: 0, - unit: "MICROSECOND", - format: "100", - expected: "00:00:00.000100", + fc: fcAdd, + dur: "00:00:00", + fsp: 0, + unit: "MICROSECOND", + format: "100", + expected: "00:00:00.000100", + checkHmsOnly: false, }, { - fc: fcAdd, - dur: "00:00:00", - fsp: 0, - unit: "MICROSECOND", - format: 100.0, - expected: "00:00:00.000100", + fc: fcAdd, + dur: "00:00:00", + fsp: 0, + unit: "MICROSECOND", + format: 100.0, + expected: "00:00:00.000100", + checkHmsOnly: false, }, { - fc: fcSub, - dur: "00:00:01", - fsp: 0, - unit: "MICROSECOND", - format: "100", - expected: "00:00:00.999900", + fc: fcSub, + dur: "00:00:01", + fsp: 0, + unit: "MICROSECOND", + format: "100", + expected: "00:00:00.999900", + checkHmsOnly: false, }, { - fc: fcAdd, - dur: "00:00:00", - fsp: 0, - unit: "DAY", - format: "1", - expected: "24:00:00", + fc: fcAdd, + dur: "01:00:00", + fsp: 0, + unit: "DAY", + format: "1", + expected: "01:00:00", + checkHmsOnly: true, }, { - fc: fcAdd, - dur: "00:00:00", - fsp: 0, - unit: "SECOND", - format: 1, - expected: "00:00:01", + fc: fcAdd, + dur: "00:00:00", + fsp: 0, + unit: "SECOND", + format: 1, + expected: "00:00:01", + checkHmsOnly: false, }, { - fc: fcAdd, - dur: "00:00:00", - fsp: 0, - unit: "DAY", - format: types.NewDecFromInt(1), - expected: "24:00:00", + fc: fcAdd, + dur: "01:00:00", + fsp: 0, + unit: "DAY", + format: types.NewDecFromInt(1), + expected: "01:00:00", + checkHmsOnly: true, }, { - fc: fcAdd, - dur: "00:00:00", - fsp: 0, - unit: "DAY", - format: 1.0, - expected: "24:00:00", + fc: fcAdd, + dur: "01:00:00", + fsp: 0, + unit: "DAY", + format: 1.0, + expected: "01:00:00", + checkHmsOnly: true, }, { - fc: fcSub, - dur: "26:00:00", - fsp: 0, - unit: "DAY", - format: "1", - expected: "02:00:00", + fc: fcSub, + dur: "26:00:00", + fsp: 0, + unit: "DAY", + format: "1", + expected: "02:00:00", + checkHmsOnly: true, }, { - fc: fcSub, - dur: "26:00:00", - fsp: 0, - unit: "DAY", - format: 1, - expected: "02:00:00", + fc: fcSub, + dur: "26:00:00", + fsp: 0, + unit: "DAY", + format: 1, + expected: "02:00:00", + checkHmsOnly: true, }, { fc: fcSub, @@ -2091,12 +2101,13 @@ func TestDateArithFuncs(t *testing.T) { expected: "25:59:59", }, { - fc: fcSub, - dur: "27:00:00", - fsp: 0, - unit: "DAY", - format: 1.0, - expected: "03:00:00", + fc: fcSub, + dur: "27:00:00", + fsp: 0, + unit: "DAY", + format: 1.0, + expected: "03:00:00", + checkHmsOnly: true, }, } for _, tt := range testDurations { @@ -2109,7 +2120,12 @@ func TestDateArithFuncs(t *testing.T) { require.NotNil(t, f) v, err = evalBuiltinFunc(f, chunk.Row{}) require.NoError(t, err) - require.Equal(t, tt.expected, v.GetMysqlDuration().String()) + if tt.checkHmsOnly { + s := v.GetMysqlTime().String() + require.Truef(t, strings.HasSuffix(s, tt.expected), "Suffix mismatch: %v, %v", s, tt.expected) + } else { + require.Equal(t, tt.expected, v.GetMysqlDuration().String()) + } } } diff --git a/expression/builtin_time_vec.go b/expression/builtin_time_vec.go index b6bab705d27bd..0d6b4321095f5 100644 --- a/expression/builtin_time_vec.go +++ b/expression/builtin_time_vec.go @@ -421,7 +421,7 @@ func (b *builtinUTCTimeWithArgSig) vecEvalDuration(input *chunk.Chunk, result *c if fsp < int64(types.MinFsp) { return errors.Errorf("Invalid negative %d specified, must in [0, 6]", fsp) } - res, err := types.ParseDuration(stmtCtx, utc, int(fsp)) + res, _, err := types.ParseDuration(stmtCtx, utc, int(fsp)) if err != nil { return err } @@ -1954,7 +1954,7 @@ func (b *builtinSecToTimeSig) vecEvalDuration(input *chunk.Chunk, result *chunk. second = seconds % 60 } secondDemical := float64(second) + demical - duration, err := types.ParseDuration(b.ctx.GetSessionVars().StmtCtx, fmt.Sprintf("%s%02d:%02d:%s", negative, hour, minute, strconv.FormatFloat(secondDemical, 'f', -1, 64)), b.tp.GetDecimal()) + duration, _, err := types.ParseDuration(b.ctx.GetSessionVars().StmtCtx, fmt.Sprintf("%s%02d:%02d:%s", negative, hour, minute, strconv.FormatFloat(secondDemical, 'f', -1, 64)), b.tp.GetDecimal()) if err != nil { return err } @@ -1975,7 +1975,7 @@ func (b *builtinUTCTimeWithoutArgSig) vecEvalDuration(input *chunk.Chunk, result if err != nil { return err } - res, err := types.ParseDuration(b.ctx.GetSessionVars().StmtCtx, nowTs.UTC().Format(types.TimeFormat), types.DefaultFsp) + res, _, err := types.ParseDuration(b.ctx.GetSessionVars().StmtCtx, nowTs.UTC().Format(types.TimeFormat), types.DefaultFsp) if err != nil { return err } @@ -2378,7 +2378,7 @@ func (b *builtinCurrentTime0ArgSig) vecEvalDuration(input *chunk.Chunk, result * } tz := b.ctx.GetSessionVars().Location() dur := nowTs.In(tz).Format(types.TimeFormat) - res, err := types.ParseDuration(b.ctx.GetSessionVars().StmtCtx, dur, types.MinFsp) + res, _, err := types.ParseDuration(b.ctx.GetSessionVars().StmtCtx, dur, types.MinFsp) if err != nil { return err } @@ -2426,7 +2426,7 @@ func (b *builtinTimeSig) vecEvalDuration(input *chunk.Chunk, result *chunk.Colum } fsp = tmpFsp - res, err := types.ParseDuration(sc, expr, fsp) + res, _, err := types.ParseDuration(sc, expr, fsp) if types.ErrTruncatedWrongVal.Equal(err) { err = sc.HandleTruncate(err) } @@ -2572,7 +2572,7 @@ func (b *builtinCurrentTime1ArgSig) vecEvalDuration(input *chunk.Chunk, result * result.ResizeGoDuration(n, false) durations := result.GoDurations() for i := 0; i < n; i++ { - res, err := types.ParseDuration(stmtCtx, dur, int(i64s[i])) + res, _, err := types.ParseDuration(stmtCtx, dur, int(i64s[i])) if err != nil { return err } @@ -2751,7 +2751,7 @@ func (b *builtinTimestamp2ArgsSig) vecEvalTime(input *chunk.Chunk, result *chunk continue } - duration, err := types.ParseDuration(sc, arg1, types.GetFsp(arg1)) + duration, _, err := types.ParseDuration(sc, arg1, types.GetFsp(arg1)) if err != nil { if err = handleInvalidTimeError(b.ctx, err); err != nil { return err @@ -2798,3 +2798,217 @@ func (b *builtinDayOfMonthSig) vecEvalInt(input *chunk.Chunk, result *chunk.Colu func (b *builtinDayOfMonthSig) vectorized() bool { return true } + +func (b *builtinAddSubDateAsStringSig) vecEvalString(input *chunk.Chunk, result *chunk.Column) error { + n := input.NumRows() + unit, isNull, err := b.args[2].EvalString(b.ctx, chunk.Row{}) + if err != nil { + return err + } + if isNull { + result.ReserveString(n) + result.SetNulls(0, n, true) + return nil + } + + intervalBuf, err := b.bufAllocator.get() + if err != nil { + return err + } + defer b.bufAllocator.put(intervalBuf) + if err := b.vecGetInterval(&b.baseDateArithmetical, &b.baseBuiltinFunc, input, unit, intervalBuf); err != nil { + return err + } + + dateBuf, err := b.bufAllocator.get() + if err != nil { + return err + } + defer b.bufAllocator.put(dateBuf) + if err := b.vecGetDate(&b.baseDateArithmetical, &b.baseBuiltinFunc, input, unit, dateBuf); err != nil { + return err + } + + result.ReserveString(n) + + dateBuf.MergeNulls(intervalBuf) + for i := 0; i < n; i++ { + if dateBuf.IsNull(i) { + result.AppendNull() + continue + } + resDate, isNull, err := b.timeOp(&b.baseDateArithmetical, b.ctx, dateBuf.Times()[i], intervalBuf.GetString(i), unit, b.tp.GetDecimal()) + if err != nil { + return err + } + if isNull { + result.AppendNull() + } else { + if resDate.Microsecond() == 0 { + resDate.SetFsp(types.MinFsp) + } else { + resDate.SetFsp(types.MaxFsp) + } + result.AppendString(resDate.String()) + } + } + return nil +} + +func (b *builtinAddSubDateAsStringSig) vectorized() bool { + return true +} + +func (b *builtinAddSubDateDatetimeAnySig) vecEvalTime(input *chunk.Chunk, result *chunk.Column) error { + n := input.NumRows() + unit, isNull, err := b.args[2].EvalString(b.ctx, chunk.Row{}) + if err != nil { + return err + } + if isNull { + result.ResizeTime(n, true) + return nil + } + + intervalBuf, err := b.bufAllocator.get() + if err != nil { + return err + } + defer b.bufAllocator.put(intervalBuf) + if err := b.vecGetInterval(&b.baseDateArithmetical, &b.baseBuiltinFunc, input, unit, intervalBuf); err != nil { + return err + } + + if err := b.vecGetDateFromDatetime(&b.baseBuiltinFunc, input, unit, result); err != nil { + return err + } + + result.MergeNulls(intervalBuf) + resDates := result.Times() + for i := 0; i < n; i++ { + if result.IsNull(i) { + continue + } + resDate, isNull, err := b.timeOp(&b.baseDateArithmetical, b.ctx, resDates[i], intervalBuf.GetString(i), unit, b.tp.GetDecimal()) + if err != nil { + return err + } + if isNull { + result.SetNull(i, true) + } else { + resDates[i] = resDate + } + } + return nil +} + +func (b *builtinAddSubDateDatetimeAnySig) vectorized() bool { + return true +} + +func (b *builtinAddSubDateDurationAnySig) vecEvalTime(input *chunk.Chunk, result *chunk.Column) error { + n := input.NumRows() + unit, isNull, err := b.args[2].EvalString(b.ctx, chunk.Row{}) + if err != nil { + return err + } + if isNull { + result.ResizeTime(n, true) + return nil + } + + intervalBuf, err := b.bufAllocator.get() + if err != nil { + return err + } + defer b.bufAllocator.put(intervalBuf) + if err := b.vecGetInterval(&b.baseDateArithmetical, &b.baseBuiltinFunc, input, unit, intervalBuf); err != nil { + return err + } + + durBuf, err := b.bufAllocator.get() + if err != nil { + return err + } + defer b.bufAllocator.put(durBuf) + if err := b.args[0].VecEvalDuration(b.ctx, input, durBuf); err != nil { + return err + } + + goDurations := durBuf.GoDurations() + result.ResizeTime(n, false) + result.MergeNulls(durBuf, intervalBuf) + resDates := result.Times() + iterDuration := types.Duration{Fsp: types.MaxFsp} + sc := b.ctx.GetSessionVars().StmtCtx + for i := 0; i < n; i++ { + if result.IsNull(i) { + continue + } + iterDuration.Duration = goDurations[i] + t, err := iterDuration.ConvertToTime(sc, mysql.TypeDatetime) + if err != nil { + result.SetNull(i, true) + } + resDate, isNull, err := b.timeOp(&b.baseDateArithmetical, b.ctx, t, intervalBuf.GetString(i), unit, b.tp.GetDecimal()) + if err != nil { + return err + } + if isNull { + result.SetNull(i, true) + } else { + resDates[i] = resDate + } + } + return nil +} + +func (b *builtinAddSubDateDurationAnySig) vecEvalDuration(input *chunk.Chunk, result *chunk.Column) error { + n := input.NumRows() + unit, isNull, err := b.args[2].EvalString(b.ctx, chunk.Row{}) + if err != nil { + return err + } + if isNull { + result.ResizeGoDuration(n, true) + return nil + } + + intervalBuf, err := b.bufAllocator.get() + if err != nil { + return err + } + defer b.bufAllocator.put(intervalBuf) + if err := b.vecGetInterval(&b.baseDateArithmetical, &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 { + return err + } + + result.MergeNulls(intervalBuf) + resDurations := result.GoDurations() + iterDuration := types.Duration{Fsp: types.MaxFsp} + for i := 0; i < n; i++ { + if result.IsNull(i) { + continue + } + iterDuration.Duration = resDurations[i] + resDuration, isNull, err := b.durationOp(&b.baseDateArithmetical, b.ctx, iterDuration, intervalBuf.GetString(i), unit, b.tp.GetDecimal()) + if err != nil { + return err + } + if isNull { + result.SetNull(i, true) + } else { + resDurations[i] = resDuration.Duration + } + } + return nil +} + +func (b *builtinAddSubDateDurationAnySig) vectorized() bool { + return true +} diff --git a/expression/builtin_time_vec_generated.go b/expression/builtin_time_vec_generated.go index 7c85375883788..4e897affc66d9 100644 --- a/expression/builtin_time_vec_generated.go +++ b/expression/builtin_time_vec_generated.go @@ -122,7 +122,7 @@ func (b *builtinAddDatetimeAndStringSig) vecEvalTime(input *chunk.Chunk, result continue } sc := b.ctx.GetSessionVars().StmtCtx - arg1Duration, err := types.ParseDuration(sc, arg1, types.GetFsp(arg1)) + arg1Duration, _, err := types.ParseDuration(sc, arg1, types.GetFsp(arg1)) if err != nil { if terror.ErrorEqual(err, types.ErrTruncatedWrongVal) { sc.AppendWarning(err) @@ -248,7 +248,7 @@ func (b *builtinAddDurationAndStringSig) vecEvalDuration(input *chunk.Chunk, res continue } sc := b.ctx.GetSessionVars().StmtCtx - arg1Duration, err := types.ParseDuration(sc, arg1, types.GetFsp(arg1)) + arg1Duration, _, err := types.ParseDuration(sc, arg1, types.GetFsp(arg1)) if err != nil { if terror.ErrorEqual(err, types.ErrTruncatedWrongVal) { sc.AppendWarning(err) @@ -406,7 +406,7 @@ func (b *builtinAddStringAndStringSig) vecEvalString(input *chunk.Chunk, result // calculate sc := b.ctx.GetSessionVars().StmtCtx - arg1Duration, err := types.ParseDuration(sc, arg1, getFsp4TimeAddSub(arg1)) + arg1Duration, _, err := types.ParseDuration(sc, arg1, getFsp4TimeAddSub(arg1)) if err != nil { if terror.ErrorEqual(err, types.ErrTruncatedWrongVal) { sc.AppendWarning(err) @@ -566,7 +566,7 @@ func (b *builtinAddDateAndStringSig) vecEvalString(input *chunk.Chunk, result *c continue } sc := b.ctx.GetSessionVars().StmtCtx - arg1Duration, err := types.ParseDuration(sc, arg1, getFsp4TimeAddSub(arg1)) + arg1Duration, _, err := types.ParseDuration(sc, arg1, getFsp4TimeAddSub(arg1)) if err != nil { if terror.ErrorEqual(err, types.ErrTruncatedWrongVal) { sc.AppendWarning(err) @@ -737,7 +737,7 @@ func (b *builtinSubDatetimeAndStringSig) vecEvalTime(input *chunk.Chunk, result continue } sc := b.ctx.GetSessionVars().StmtCtx - arg1Duration, err := types.ParseDuration(sc, arg1, types.GetFsp(arg1)) + arg1Duration, _, err := types.ParseDuration(sc, arg1, types.GetFsp(arg1)) if err != nil { if terror.ErrorEqual(err, types.ErrTruncatedWrongVal) { sc.AppendWarning(err) @@ -862,7 +862,7 @@ func (b *builtinSubDurationAndStringSig) vecEvalDuration(input *chunk.Chunk, res continue } sc := b.ctx.GetSessionVars().StmtCtx - arg1Duration, err := types.ParseDuration(sc, arg1, types.GetFsp(arg1)) + arg1Duration, _, err := types.ParseDuration(sc, arg1, types.GetFsp(arg1)) if err != nil { if terror.ErrorEqual(err, types.ErrTruncatedWrongVal) { sc.AppendWarning(err) @@ -1020,7 +1020,7 @@ func (b *builtinSubStringAndStringSig) vecEvalString(input *chunk.Chunk, result // calculate sc := b.ctx.GetSessionVars().StmtCtx - arg1Duration, err := types.ParseDuration(sc, arg1, getFsp4TimeAddSub(arg1)) + arg1Duration, _, err := types.ParseDuration(sc, arg1, getFsp4TimeAddSub(arg1)) if err != nil { if terror.ErrorEqual(err, types.ErrTruncatedWrongVal) { sc.AppendWarning(err) @@ -1180,7 +1180,7 @@ func (b *builtinSubDateAndStringSig) vecEvalString(input *chunk.Chunk, result *c continue } sc := b.ctx.GetSessionVars().StmtCtx - arg1Duration, err := types.ParseDuration(sc, arg1, getFsp4TimeAddSub(arg1)) + arg1Duration, _, err := types.ParseDuration(sc, arg1, getFsp4TimeAddSub(arg1)) if err != nil { if terror.ErrorEqual(err, types.ErrTruncatedWrongVal) { sc.AppendWarning(err) @@ -1647,1651 +1647,3 @@ func (b *builtinTimeTimeTimeDiffSig) vecEvalDuration(input *chunk.Chunk, result func (b *builtinTimeTimeTimeDiffSig) vectorized() bool { return true } - -func (b *builtinAddDateStringStringSig) vecEvalString(input *chunk.Chunk, result *chunk.Column) error { - n := input.NumRows() - unit, isNull, err := b.args[2].EvalString(b.ctx, chunk.Row{}) - if err != nil { - return err - } - if isNull { - result.ReserveString(n) - result.SetNulls(0, n, true) - return nil - } - - intervalBuf, err := b.bufAllocator.get() - if err != nil { - return err - } - defer b.bufAllocator.put(intervalBuf) - if err := b.vecGetIntervalFromString(&b.baseBuiltinFunc, input, unit, intervalBuf); err != nil { - return err - } - - dateBuf, err := b.bufAllocator.get() - if err != nil { - return err - } - defer b.bufAllocator.put(dateBuf) - if err := b.vecGetDateFromString(&b.baseBuiltinFunc, input, unit, dateBuf); err != nil { - return err - } - - isClockUnit := types.IsClockUnit(unit) - - result.ReserveString(n) - - dateBuf.MergeNulls(intervalBuf) - for i := 0; i < n; i++ { - if dateBuf.IsNull(i) { - result.AppendNull() - continue - } - resDate, isNull, err := b.add(b.ctx, dateBuf.Times()[i], intervalBuf.GetString(i), unit) - if err != nil { - return err - } - if isNull { - result.AppendNull() - } else { - dateTp := mysql.TypeDate - if dateBuf.Times()[i].Type() == mysql.TypeDatetime || isClockUnit { - dateTp = mysql.TypeDatetime - } - resDate.SetType(dateTp) - result.AppendString(resDate.String()) - } - } - return nil -} - -func (b *builtinAddDateStringStringSig) vectorized() bool { - return true -} - -func (b *builtinAddDateStringIntSig) vecEvalString(input *chunk.Chunk, result *chunk.Column) error { - n := input.NumRows() - unit, isNull, err := b.args[2].EvalString(b.ctx, chunk.Row{}) - if err != nil { - return err - } - if isNull { - result.ReserveString(n) - result.SetNulls(0, n, true) - return nil - } - - intervalBuf, err := b.bufAllocator.get() - if err != nil { - return err - } - defer b.bufAllocator.put(intervalBuf) - if err := b.vecGetIntervalFromInt(&b.baseBuiltinFunc, input, unit, intervalBuf); err != nil { - return err - } - - dateBuf, err := b.bufAllocator.get() - if err != nil { - return err - } - defer b.bufAllocator.put(dateBuf) - if err := b.vecGetDateFromString(&b.baseBuiltinFunc, input, unit, dateBuf); err != nil { - return err - } - - isClockUnit := types.IsClockUnit(unit) - - result.ReserveString(n) - - dateBuf.MergeNulls(intervalBuf) - for i := 0; i < n; i++ { - if dateBuf.IsNull(i) { - result.AppendNull() - continue - } - resDate, isNull, err := b.add(b.ctx, dateBuf.Times()[i], intervalBuf.GetString(i), unit) - if err != nil { - return err - } - if isNull { - result.AppendNull() - } else { - dateTp := mysql.TypeDate - if dateBuf.Times()[i].Type() == mysql.TypeDatetime || isClockUnit { - dateTp = mysql.TypeDatetime - } - resDate.SetType(dateTp) - result.AppendString(resDate.String()) - } - } - return nil -} - -func (b *builtinAddDateStringIntSig) vectorized() bool { - return true -} - -func (b *builtinAddDateStringRealSig) vecEvalString(input *chunk.Chunk, result *chunk.Column) error { - n := input.NumRows() - unit, isNull, err := b.args[2].EvalString(b.ctx, chunk.Row{}) - if err != nil { - return err - } - if isNull { - result.ReserveString(n) - result.SetNulls(0, n, true) - return nil - } - - intervalBuf, err := b.bufAllocator.get() - if err != nil { - return err - } - defer b.bufAllocator.put(intervalBuf) - if err := b.vecGetIntervalFromReal(&b.baseBuiltinFunc, input, unit, intervalBuf); err != nil { - return err - } - - dateBuf, err := b.bufAllocator.get() - if err != nil { - return err - } - defer b.bufAllocator.put(dateBuf) - if err := b.vecGetDateFromString(&b.baseBuiltinFunc, input, unit, dateBuf); err != nil { - return err - } - - isClockUnit := types.IsClockUnit(unit) - - result.ReserveString(n) - - dateBuf.MergeNulls(intervalBuf) - for i := 0; i < n; i++ { - if dateBuf.IsNull(i) { - result.AppendNull() - continue - } - resDate, isNull, err := b.add(b.ctx, dateBuf.Times()[i], intervalBuf.GetString(i), unit) - if err != nil { - return err - } - if isNull { - result.AppendNull() - } else { - dateTp := mysql.TypeDate - if dateBuf.Times()[i].Type() == mysql.TypeDatetime || isClockUnit { - dateTp = mysql.TypeDatetime - } - resDate.SetType(dateTp) - result.AppendString(resDate.String()) - } - } - return nil -} - -func (b *builtinAddDateStringRealSig) vectorized() bool { - return true -} - -func (b *builtinAddDateStringDecimalSig) vecEvalString(input *chunk.Chunk, result *chunk.Column) error { - n := input.NumRows() - unit, isNull, err := b.args[2].EvalString(b.ctx, chunk.Row{}) - if err != nil { - return err - } - if isNull { - result.ReserveString(n) - result.SetNulls(0, n, true) - return nil - } - - intervalBuf, err := b.bufAllocator.get() - if err != nil { - return err - } - defer b.bufAllocator.put(intervalBuf) - if err := b.vecGetIntervalFromDecimal(&b.baseBuiltinFunc, input, unit, intervalBuf); err != nil { - return err - } - - dateBuf, err := b.bufAllocator.get() - if err != nil { - return err - } - defer b.bufAllocator.put(dateBuf) - if err := b.vecGetDateFromString(&b.baseBuiltinFunc, input, unit, dateBuf); err != nil { - return err - } - - isClockUnit := types.IsClockUnit(unit) - - result.ReserveString(n) - - dateBuf.MergeNulls(intervalBuf) - for i := 0; i < n; i++ { - if dateBuf.IsNull(i) { - result.AppendNull() - continue - } - resDate, isNull, err := b.add(b.ctx, dateBuf.Times()[i], intervalBuf.GetString(i), unit) - if err != nil { - return err - } - if isNull { - result.AppendNull() - } else { - dateTp := mysql.TypeDate - if dateBuf.Times()[i].Type() == mysql.TypeDatetime || isClockUnit { - dateTp = mysql.TypeDatetime - } - resDate.SetType(dateTp) - result.AppendString(resDate.String()) - } - } - return nil -} - -func (b *builtinAddDateStringDecimalSig) vectorized() bool { - return true -} - -func (b *builtinAddDateIntStringSig) vecEvalTime(input *chunk.Chunk, result *chunk.Column) error { - n := input.NumRows() - unit, isNull, err := b.args[2].EvalString(b.ctx, chunk.Row{}) - if err != nil { - return err - } - if isNull { - result.ResizeTime(n, true) - return nil - } - - intervalBuf, err := b.bufAllocator.get() - if err != nil { - return err - } - defer b.bufAllocator.put(intervalBuf) - if err := b.vecGetIntervalFromString(&b.baseBuiltinFunc, input, unit, intervalBuf); err != nil { - return err - } - - if err := b.vecGetDateFromInt(&b.baseBuiltinFunc, input, unit, result); err != nil { - return err - } - - result.MergeNulls(intervalBuf) - resDates := result.Times() - for i := 0; i < n; i++ { - if result.IsNull(i) { - continue - } - resDate, isNull, err := b.add(b.ctx, resDates[i], intervalBuf.GetString(i), unit) - if err != nil { - return err - } - if isNull { - result.SetNull(i, true) - } else { - resDates[i] = resDate - } - } - return nil -} - -func (b *builtinAddDateIntStringSig) vectorized() bool { - return true -} - -func (b *builtinAddDateIntIntSig) vecEvalTime(input *chunk.Chunk, result *chunk.Column) error { - n := input.NumRows() - unit, isNull, err := b.args[2].EvalString(b.ctx, chunk.Row{}) - if err != nil { - return err - } - if isNull { - result.ResizeTime(n, true) - return nil - } - - intervalBuf, err := b.bufAllocator.get() - if err != nil { - return err - } - defer b.bufAllocator.put(intervalBuf) - if err := b.vecGetIntervalFromInt(&b.baseBuiltinFunc, input, unit, intervalBuf); err != nil { - return err - } - - if err := b.vecGetDateFromInt(&b.baseBuiltinFunc, input, unit, result); err != nil { - return err - } - - result.MergeNulls(intervalBuf) - resDates := result.Times() - for i := 0; i < n; i++ { - if result.IsNull(i) { - continue - } - resDate, isNull, err := b.add(b.ctx, resDates[i], intervalBuf.GetString(i), unit) - if err != nil { - return err - } - if isNull { - result.SetNull(i, true) - } else { - resDates[i] = resDate - } - } - return nil -} - -func (b *builtinAddDateIntIntSig) vectorized() bool { - return true -} - -func (b *builtinAddDateIntRealSig) vecEvalTime(input *chunk.Chunk, result *chunk.Column) error { - n := input.NumRows() - unit, isNull, err := b.args[2].EvalString(b.ctx, chunk.Row{}) - if err != nil { - return err - } - if isNull { - result.ResizeTime(n, true) - return nil - } - - intervalBuf, err := b.bufAllocator.get() - if err != nil { - return err - } - defer b.bufAllocator.put(intervalBuf) - if err := b.vecGetIntervalFromReal(&b.baseBuiltinFunc, input, unit, intervalBuf); err != nil { - return err - } - - if err := b.vecGetDateFromInt(&b.baseBuiltinFunc, input, unit, result); err != nil { - return err - } - - result.MergeNulls(intervalBuf) - resDates := result.Times() - for i := 0; i < n; i++ { - if result.IsNull(i) { - continue - } - resDate, isNull, err := b.add(b.ctx, resDates[i], intervalBuf.GetString(i), unit) - if err != nil { - return err - } - if isNull { - result.SetNull(i, true) - } else { - resDates[i] = resDate - } - } - return nil -} - -func (b *builtinAddDateIntRealSig) vectorized() bool { - return true -} - -func (b *builtinAddDateIntDecimalSig) vecEvalTime(input *chunk.Chunk, result *chunk.Column) error { - n := input.NumRows() - unit, isNull, err := b.args[2].EvalString(b.ctx, chunk.Row{}) - if err != nil { - return err - } - if isNull { - result.ResizeTime(n, true) - return nil - } - - intervalBuf, err := b.bufAllocator.get() - if err != nil { - return err - } - defer b.bufAllocator.put(intervalBuf) - if err := b.vecGetIntervalFromDecimal(&b.baseBuiltinFunc, input, unit, intervalBuf); err != nil { - return err - } - - if err := b.vecGetDateFromInt(&b.baseBuiltinFunc, input, unit, result); err != nil { - return err - } - - result.MergeNulls(intervalBuf) - resDates := result.Times() - for i := 0; i < n; i++ { - if result.IsNull(i) { - continue - } - resDate, isNull, err := b.add(b.ctx, resDates[i], intervalBuf.GetString(i), unit) - if err != nil { - return err - } - if isNull { - result.SetNull(i, true) - } else { - resDates[i] = resDate - } - } - return nil -} - -func (b *builtinAddDateIntDecimalSig) vectorized() bool { - return true -} - -func (b *builtinAddDateDatetimeStringSig) vecEvalTime(input *chunk.Chunk, result *chunk.Column) error { - n := input.NumRows() - unit, isNull, err := b.args[2].EvalString(b.ctx, chunk.Row{}) - if err != nil { - return err - } - if isNull { - result.ResizeTime(n, true) - return nil - } - - intervalBuf, err := b.bufAllocator.get() - if err != nil { - return err - } - defer b.bufAllocator.put(intervalBuf) - if err := b.vecGetIntervalFromString(&b.baseBuiltinFunc, input, unit, intervalBuf); err != nil { - return err - } - - if err := b.vecGetDateFromDatetime(&b.baseBuiltinFunc, input, unit, result); err != nil { - return err - } - - result.MergeNulls(intervalBuf) - resDates := result.Times() - for i := 0; i < n; i++ { - if result.IsNull(i) { - continue - } - resDate, isNull, err := b.add(b.ctx, resDates[i], intervalBuf.GetString(i), unit) - if err != nil { - return err - } - if isNull { - result.SetNull(i, true) - } else { - resDates[i] = resDate - } - } - return nil -} - -func (b *builtinAddDateDatetimeStringSig) vectorized() bool { - return true -} - -func (b *builtinAddDateDatetimeIntSig) vecEvalTime(input *chunk.Chunk, result *chunk.Column) error { - n := input.NumRows() - unit, isNull, err := b.args[2].EvalString(b.ctx, chunk.Row{}) - if err != nil { - return err - } - if isNull { - result.ResizeTime(n, true) - return nil - } - - intervalBuf, err := b.bufAllocator.get() - if err != nil { - return err - } - defer b.bufAllocator.put(intervalBuf) - if err := b.vecGetIntervalFromInt(&b.baseBuiltinFunc, input, unit, intervalBuf); err != nil { - return err - } - - if err := b.vecGetDateFromDatetime(&b.baseBuiltinFunc, input, unit, result); err != nil { - return err - } - - result.MergeNulls(intervalBuf) - resDates := result.Times() - for i := 0; i < n; i++ { - if result.IsNull(i) { - continue - } - resDate, isNull, err := b.add(b.ctx, resDates[i], intervalBuf.GetString(i), unit) - if err != nil { - return err - } - if isNull { - result.SetNull(i, true) - } else { - resDates[i] = resDate - } - } - return nil -} - -func (b *builtinAddDateDatetimeIntSig) vectorized() bool { - return true -} - -func (b *builtinAddDateDatetimeRealSig) vecEvalTime(input *chunk.Chunk, result *chunk.Column) error { - n := input.NumRows() - unit, isNull, err := b.args[2].EvalString(b.ctx, chunk.Row{}) - if err != nil { - return err - } - if isNull { - result.ResizeTime(n, true) - return nil - } - - intervalBuf, err := b.bufAllocator.get() - if err != nil { - return err - } - defer b.bufAllocator.put(intervalBuf) - if err := b.vecGetIntervalFromReal(&b.baseBuiltinFunc, input, unit, intervalBuf); err != nil { - return err - } - - if err := b.vecGetDateFromDatetime(&b.baseBuiltinFunc, input, unit, result); err != nil { - return err - } - - result.MergeNulls(intervalBuf) - resDates := result.Times() - for i := 0; i < n; i++ { - if result.IsNull(i) { - continue - } - resDate, isNull, err := b.add(b.ctx, resDates[i], intervalBuf.GetString(i), unit) - if err != nil { - return err - } - if isNull { - result.SetNull(i, true) - } else { - resDates[i] = resDate - } - } - return nil -} - -func (b *builtinAddDateDatetimeRealSig) vectorized() bool { - return true -} - -func (b *builtinAddDateDatetimeDecimalSig) vecEvalTime(input *chunk.Chunk, result *chunk.Column) error { - n := input.NumRows() - unit, isNull, err := b.args[2].EvalString(b.ctx, chunk.Row{}) - if err != nil { - return err - } - if isNull { - result.ResizeTime(n, true) - return nil - } - - intervalBuf, err := b.bufAllocator.get() - if err != nil { - return err - } - defer b.bufAllocator.put(intervalBuf) - if err := b.vecGetIntervalFromDecimal(&b.baseBuiltinFunc, input, unit, intervalBuf); err != nil { - return err - } - - if err := b.vecGetDateFromDatetime(&b.baseBuiltinFunc, input, unit, result); err != nil { - return err - } - - result.MergeNulls(intervalBuf) - resDates := result.Times() - for i := 0; i < n; i++ { - if result.IsNull(i) { - continue - } - resDate, isNull, err := b.add(b.ctx, resDates[i], intervalBuf.GetString(i), unit) - if err != nil { - return err - } - if isNull { - result.SetNull(i, true) - } else { - resDates[i] = resDate - } - } - return nil -} - -func (b *builtinAddDateDatetimeDecimalSig) vectorized() bool { - return true -} - -func (b *builtinAddDateDurationStringSig) vecEvalDuration(input *chunk.Chunk, result *chunk.Column) error { - n := input.NumRows() - unit, isNull, err := b.args[2].EvalString(b.ctx, chunk.Row{}) - if err != nil { - return err - } - if isNull { - result.ResizeGoDuration(n, true) - return nil - } - - intervalBuf, err := b.bufAllocator.get() - if err != nil { - return err - } - defer b.bufAllocator.put(intervalBuf) - if err := b.vecGetIntervalFromString(&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 { - return err - } - - result.MergeNulls(intervalBuf) - resDurations := result.GoDurations() - iterDuration := types.Duration{Fsp: types.MaxFsp} - for i := 0; i < n; i++ { - if result.IsNull(i) { - continue - } - iterDuration.Duration = resDurations[i] - resDuration, isNull, err := b.addDuration(b.ctx, iterDuration, intervalBuf.GetString(i), unit) - if err != nil { - return err - } - if isNull { - result.SetNull(i, true) - } else { - resDurations[i] = resDuration.Duration - } - } - return nil -} - -func (b *builtinAddDateDurationStringSig) vectorized() bool { - return true -} - -func (b *builtinAddDateDurationIntSig) vecEvalDuration(input *chunk.Chunk, result *chunk.Column) error { - n := input.NumRows() - unit, isNull, err := b.args[2].EvalString(b.ctx, chunk.Row{}) - if err != nil { - return err - } - if isNull { - result.ResizeGoDuration(n, true) - return nil - } - - intervalBuf, err := b.bufAllocator.get() - if err != nil { - return err - } - defer b.bufAllocator.put(intervalBuf) - if err := b.vecGetIntervalFromInt(&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 { - return err - } - - result.MergeNulls(intervalBuf) - resDurations := result.GoDurations() - iterDuration := types.Duration{Fsp: types.MaxFsp} - for i := 0; i < n; i++ { - if result.IsNull(i) { - continue - } - iterDuration.Duration = resDurations[i] - resDuration, isNull, err := b.addDuration(b.ctx, iterDuration, intervalBuf.GetString(i), unit) - if err != nil { - return err - } - if isNull { - result.SetNull(i, true) - } else { - resDurations[i] = resDuration.Duration - } - } - return nil -} - -func (b *builtinAddDateDurationIntSig) vectorized() bool { - return true -} - -func (b *builtinAddDateDurationRealSig) vecEvalDuration(input *chunk.Chunk, result *chunk.Column) error { - n := input.NumRows() - unit, isNull, err := b.args[2].EvalString(b.ctx, chunk.Row{}) - if err != nil { - return err - } - if isNull { - result.ResizeGoDuration(n, true) - return nil - } - - intervalBuf, err := b.bufAllocator.get() - if err != nil { - return err - } - defer b.bufAllocator.put(intervalBuf) - if err := b.vecGetIntervalFromReal(&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 { - return err - } - - result.MergeNulls(intervalBuf) - resDurations := result.GoDurations() - iterDuration := types.Duration{Fsp: types.MaxFsp} - for i := 0; i < n; i++ { - if result.IsNull(i) { - continue - } - iterDuration.Duration = resDurations[i] - resDuration, isNull, err := b.addDuration(b.ctx, iterDuration, intervalBuf.GetString(i), unit) - if err != nil { - return err - } - if isNull { - result.SetNull(i, true) - } else { - resDurations[i] = resDuration.Duration - } - } - return nil -} - -func (b *builtinAddDateDurationRealSig) vectorized() bool { - return true -} - -func (b *builtinAddDateDurationDecimalSig) vecEvalDuration(input *chunk.Chunk, result *chunk.Column) error { - n := input.NumRows() - unit, isNull, err := b.args[2].EvalString(b.ctx, chunk.Row{}) - if err != nil { - return err - } - if isNull { - result.ResizeGoDuration(n, true) - return nil - } - - intervalBuf, err := b.bufAllocator.get() - if err != nil { - return err - } - defer b.bufAllocator.put(intervalBuf) - if err := b.vecGetIntervalFromDecimal(&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 { - return err - } - - result.MergeNulls(intervalBuf) - resDurations := result.GoDurations() - iterDuration := types.Duration{Fsp: types.MaxFsp} - for i := 0; i < n; i++ { - if result.IsNull(i) { - continue - } - iterDuration.Duration = resDurations[i] - resDuration, isNull, err := b.addDuration(b.ctx, iterDuration, intervalBuf.GetString(i), unit) - if err != nil { - return err - } - if isNull { - result.SetNull(i, true) - } else { - resDurations[i] = resDuration.Duration - } - } - return nil -} - -func (b *builtinAddDateDurationDecimalSig) vectorized() bool { - return true -} - -func (b *builtinSubDateStringStringSig) vecEvalString(input *chunk.Chunk, result *chunk.Column) error { - n := input.NumRows() - unit, isNull, err := b.args[2].EvalString(b.ctx, chunk.Row{}) - if err != nil { - return err - } - if isNull { - result.ReserveString(n) - result.SetNulls(0, n, true) - return nil - } - - intervalBuf, err := b.bufAllocator.get() - if err != nil { - return err - } - defer b.bufAllocator.put(intervalBuf) - if err := b.vecGetIntervalFromString(&b.baseBuiltinFunc, input, unit, intervalBuf); err != nil { - return err - } - - dateBuf, err := b.bufAllocator.get() - if err != nil { - return err - } - defer b.bufAllocator.put(dateBuf) - if err := b.vecGetDateFromString(&b.baseBuiltinFunc, input, unit, dateBuf); err != nil { - return err - } - - isClockUnit := types.IsClockUnit(unit) - - result.ReserveString(n) - - dateBuf.MergeNulls(intervalBuf) - for i := 0; i < n; i++ { - if dateBuf.IsNull(i) { - result.AppendNull() - continue - } - resDate, isNull, err := b.sub(b.ctx, dateBuf.Times()[i], intervalBuf.GetString(i), unit) - if err != nil { - return err - } - if isNull { - result.AppendNull() - } else { - dateTp := mysql.TypeDate - if dateBuf.Times()[i].Type() == mysql.TypeDatetime || isClockUnit { - dateTp = mysql.TypeDatetime - } - resDate.SetType(dateTp) - result.AppendString(resDate.String()) - } - } - return nil -} - -func (b *builtinSubDateStringStringSig) vectorized() bool { - return true -} - -func (b *builtinSubDateStringIntSig) vecEvalString(input *chunk.Chunk, result *chunk.Column) error { - n := input.NumRows() - unit, isNull, err := b.args[2].EvalString(b.ctx, chunk.Row{}) - if err != nil { - return err - } - if isNull { - result.ReserveString(n) - result.SetNulls(0, n, true) - return nil - } - - intervalBuf, err := b.bufAllocator.get() - if err != nil { - return err - } - defer b.bufAllocator.put(intervalBuf) - if err := b.vecGetIntervalFromInt(&b.baseBuiltinFunc, input, unit, intervalBuf); err != nil { - return err - } - - dateBuf, err := b.bufAllocator.get() - if err != nil { - return err - } - defer b.bufAllocator.put(dateBuf) - if err := b.vecGetDateFromString(&b.baseBuiltinFunc, input, unit, dateBuf); err != nil { - return err - } - - isClockUnit := types.IsClockUnit(unit) - - result.ReserveString(n) - - dateBuf.MergeNulls(intervalBuf) - for i := 0; i < n; i++ { - if dateBuf.IsNull(i) { - result.AppendNull() - continue - } - resDate, isNull, err := b.sub(b.ctx, dateBuf.Times()[i], intervalBuf.GetString(i), unit) - if err != nil { - return err - } - if isNull { - result.AppendNull() - } else { - dateTp := mysql.TypeDate - if dateBuf.Times()[i].Type() == mysql.TypeDatetime || isClockUnit { - dateTp = mysql.TypeDatetime - } - resDate.SetType(dateTp) - result.AppendString(resDate.String()) - } - } - return nil -} - -func (b *builtinSubDateStringIntSig) vectorized() bool { - return true -} - -func (b *builtinSubDateStringRealSig) vecEvalString(input *chunk.Chunk, result *chunk.Column) error { - n := input.NumRows() - unit, isNull, err := b.args[2].EvalString(b.ctx, chunk.Row{}) - if err != nil { - return err - } - if isNull { - result.ReserveString(n) - result.SetNulls(0, n, true) - return nil - } - - intervalBuf, err := b.bufAllocator.get() - if err != nil { - return err - } - defer b.bufAllocator.put(intervalBuf) - if err := b.vecGetIntervalFromReal(&b.baseBuiltinFunc, input, unit, intervalBuf); err != nil { - return err - } - - dateBuf, err := b.bufAllocator.get() - if err != nil { - return err - } - defer b.bufAllocator.put(dateBuf) - if err := b.vecGetDateFromString(&b.baseBuiltinFunc, input, unit, dateBuf); err != nil { - return err - } - - isClockUnit := types.IsClockUnit(unit) - - result.ReserveString(n) - - dateBuf.MergeNulls(intervalBuf) - for i := 0; i < n; i++ { - if dateBuf.IsNull(i) { - result.AppendNull() - continue - } - resDate, isNull, err := b.sub(b.ctx, dateBuf.Times()[i], intervalBuf.GetString(i), unit) - if err != nil { - return err - } - if isNull { - result.AppendNull() - } else { - dateTp := mysql.TypeDate - if dateBuf.Times()[i].Type() == mysql.TypeDatetime || isClockUnit { - dateTp = mysql.TypeDatetime - } - resDate.SetType(dateTp) - result.AppendString(resDate.String()) - } - } - return nil -} - -func (b *builtinSubDateStringRealSig) vectorized() bool { - return true -} - -func (b *builtinSubDateStringDecimalSig) vecEvalString(input *chunk.Chunk, result *chunk.Column) error { - n := input.NumRows() - unit, isNull, err := b.args[2].EvalString(b.ctx, chunk.Row{}) - if err != nil { - return err - } - if isNull { - result.ReserveString(n) - result.SetNulls(0, n, true) - return nil - } - - intervalBuf, err := b.bufAllocator.get() - if err != nil { - return err - } - defer b.bufAllocator.put(intervalBuf) - if err := b.vecGetIntervalFromDecimal(&b.baseBuiltinFunc, input, unit, intervalBuf); err != nil { - return err - } - - dateBuf, err := b.bufAllocator.get() - if err != nil { - return err - } - defer b.bufAllocator.put(dateBuf) - if err := b.vecGetDateFromString(&b.baseBuiltinFunc, input, unit, dateBuf); err != nil { - return err - } - - isClockUnit := types.IsClockUnit(unit) - - result.ReserveString(n) - - dateBuf.MergeNulls(intervalBuf) - for i := 0; i < n; i++ { - if dateBuf.IsNull(i) { - result.AppendNull() - continue - } - resDate, isNull, err := b.sub(b.ctx, dateBuf.Times()[i], intervalBuf.GetString(i), unit) - if err != nil { - return err - } - if isNull { - result.AppendNull() - } else { - dateTp := mysql.TypeDate - if dateBuf.Times()[i].Type() == mysql.TypeDatetime || isClockUnit { - dateTp = mysql.TypeDatetime - } - resDate.SetType(dateTp) - result.AppendString(resDate.String()) - } - } - return nil -} - -func (b *builtinSubDateStringDecimalSig) vectorized() bool { - return true -} - -func (b *builtinSubDateIntStringSig) vecEvalTime(input *chunk.Chunk, result *chunk.Column) error { - n := input.NumRows() - unit, isNull, err := b.args[2].EvalString(b.ctx, chunk.Row{}) - if err != nil { - return err - } - if isNull { - result.ResizeTime(n, true) - return nil - } - - intervalBuf, err := b.bufAllocator.get() - if err != nil { - return err - } - defer b.bufAllocator.put(intervalBuf) - if err := b.vecGetIntervalFromString(&b.baseBuiltinFunc, input, unit, intervalBuf); err != nil { - return err - } - - if err := b.vecGetDateFromInt(&b.baseBuiltinFunc, input, unit, result); err != nil { - return err - } - - result.MergeNulls(intervalBuf) - resDates := result.Times() - for i := 0; i < n; i++ { - if result.IsNull(i) { - continue - } - resDate, isNull, err := b.sub(b.ctx, resDates[i], intervalBuf.GetString(i), unit) - if err != nil { - return err - } - if isNull { - result.SetNull(i, true) - } else { - resDates[i] = resDate - } - } - return nil -} - -func (b *builtinSubDateIntStringSig) vectorized() bool { - return true -} - -func (b *builtinSubDateIntIntSig) vecEvalTime(input *chunk.Chunk, result *chunk.Column) error { - n := input.NumRows() - unit, isNull, err := b.args[2].EvalString(b.ctx, chunk.Row{}) - if err != nil { - return err - } - if isNull { - result.ResizeTime(n, true) - return nil - } - - intervalBuf, err := b.bufAllocator.get() - if err != nil { - return err - } - defer b.bufAllocator.put(intervalBuf) - if err := b.vecGetIntervalFromInt(&b.baseBuiltinFunc, input, unit, intervalBuf); err != nil { - return err - } - - if err := b.vecGetDateFromInt(&b.baseBuiltinFunc, input, unit, result); err != nil { - return err - } - - result.MergeNulls(intervalBuf) - resDates := result.Times() - for i := 0; i < n; i++ { - if result.IsNull(i) { - continue - } - resDate, isNull, err := b.sub(b.ctx, resDates[i], intervalBuf.GetString(i), unit) - if err != nil { - return err - } - if isNull { - result.SetNull(i, true) - } else { - resDates[i] = resDate - } - } - return nil -} - -func (b *builtinSubDateIntIntSig) vectorized() bool { - return true -} - -func (b *builtinSubDateIntRealSig) vecEvalTime(input *chunk.Chunk, result *chunk.Column) error { - n := input.NumRows() - unit, isNull, err := b.args[2].EvalString(b.ctx, chunk.Row{}) - if err != nil { - return err - } - if isNull { - result.ResizeTime(n, true) - return nil - } - - intervalBuf, err := b.bufAllocator.get() - if err != nil { - return err - } - defer b.bufAllocator.put(intervalBuf) - if err := b.vecGetIntervalFromReal(&b.baseBuiltinFunc, input, unit, intervalBuf); err != nil { - return err - } - - if err := b.vecGetDateFromInt(&b.baseBuiltinFunc, input, unit, result); err != nil { - return err - } - - result.MergeNulls(intervalBuf) - resDates := result.Times() - for i := 0; i < n; i++ { - if result.IsNull(i) { - continue - } - resDate, isNull, err := b.sub(b.ctx, resDates[i], intervalBuf.GetString(i), unit) - if err != nil { - return err - } - if isNull { - result.SetNull(i, true) - } else { - resDates[i] = resDate - } - } - return nil -} - -func (b *builtinSubDateIntRealSig) vectorized() bool { - return true -} - -func (b *builtinSubDateIntDecimalSig) vecEvalTime(input *chunk.Chunk, result *chunk.Column) error { - n := input.NumRows() - unit, isNull, err := b.args[2].EvalString(b.ctx, chunk.Row{}) - if err != nil { - return err - } - if isNull { - result.ResizeTime(n, true) - return nil - } - - intervalBuf, err := b.bufAllocator.get() - if err != nil { - return err - } - defer b.bufAllocator.put(intervalBuf) - if err := b.vecGetIntervalFromDecimal(&b.baseBuiltinFunc, input, unit, intervalBuf); err != nil { - return err - } - - if err := b.vecGetDateFromInt(&b.baseBuiltinFunc, input, unit, result); err != nil { - return err - } - - result.MergeNulls(intervalBuf) - resDates := result.Times() - for i := 0; i < n; i++ { - if result.IsNull(i) { - continue - } - resDate, isNull, err := b.sub(b.ctx, resDates[i], intervalBuf.GetString(i), unit) - if err != nil { - return err - } - if isNull { - result.SetNull(i, true) - } else { - resDates[i] = resDate - } - } - return nil -} - -func (b *builtinSubDateIntDecimalSig) vectorized() bool { - return true -} - -func (b *builtinSubDateDatetimeStringSig) vecEvalTime(input *chunk.Chunk, result *chunk.Column) error { - n := input.NumRows() - unit, isNull, err := b.args[2].EvalString(b.ctx, chunk.Row{}) - if err != nil { - return err - } - if isNull { - result.ResizeTime(n, true) - return nil - } - - intervalBuf, err := b.bufAllocator.get() - if err != nil { - return err - } - defer b.bufAllocator.put(intervalBuf) - if err := b.vecGetIntervalFromString(&b.baseBuiltinFunc, input, unit, intervalBuf); err != nil { - return err - } - - if err := b.vecGetDateFromDatetime(&b.baseBuiltinFunc, input, unit, result); err != nil { - return err - } - - result.MergeNulls(intervalBuf) - resDates := result.Times() - for i := 0; i < n; i++ { - if result.IsNull(i) { - continue - } - resDate, isNull, err := b.sub(b.ctx, resDates[i], intervalBuf.GetString(i), unit) - if err != nil { - return err - } - if isNull { - result.SetNull(i, true) - } else { - resDates[i] = resDate - } - } - return nil -} - -func (b *builtinSubDateDatetimeStringSig) vectorized() bool { - return true -} - -func (b *builtinSubDateDatetimeIntSig) vecEvalTime(input *chunk.Chunk, result *chunk.Column) error { - n := input.NumRows() - unit, isNull, err := b.args[2].EvalString(b.ctx, chunk.Row{}) - if err != nil { - return err - } - if isNull { - result.ResizeTime(n, true) - return nil - } - - intervalBuf, err := b.bufAllocator.get() - if err != nil { - return err - } - defer b.bufAllocator.put(intervalBuf) - if err := b.vecGetIntervalFromInt(&b.baseBuiltinFunc, input, unit, intervalBuf); err != nil { - return err - } - - if err := b.vecGetDateFromDatetime(&b.baseBuiltinFunc, input, unit, result); err != nil { - return err - } - - result.MergeNulls(intervalBuf) - resDates := result.Times() - for i := 0; i < n; i++ { - if result.IsNull(i) { - continue - } - resDate, isNull, err := b.sub(b.ctx, resDates[i], intervalBuf.GetString(i), unit) - if err != nil { - return err - } - if isNull { - result.SetNull(i, true) - } else { - resDates[i] = resDate - } - } - return nil -} - -func (b *builtinSubDateDatetimeIntSig) vectorized() bool { - return true -} - -func (b *builtinSubDateDatetimeRealSig) vecEvalTime(input *chunk.Chunk, result *chunk.Column) error { - n := input.NumRows() - unit, isNull, err := b.args[2].EvalString(b.ctx, chunk.Row{}) - if err != nil { - return err - } - if isNull { - result.ResizeTime(n, true) - return nil - } - - intervalBuf, err := b.bufAllocator.get() - if err != nil { - return err - } - defer b.bufAllocator.put(intervalBuf) - if err := b.vecGetIntervalFromReal(&b.baseBuiltinFunc, input, unit, intervalBuf); err != nil { - return err - } - - if err := b.vecGetDateFromDatetime(&b.baseBuiltinFunc, input, unit, result); err != nil { - return err - } - - result.MergeNulls(intervalBuf) - resDates := result.Times() - for i := 0; i < n; i++ { - if result.IsNull(i) { - continue - } - resDate, isNull, err := b.sub(b.ctx, resDates[i], intervalBuf.GetString(i), unit) - if err != nil { - return err - } - if isNull { - result.SetNull(i, true) - } else { - resDates[i] = resDate - } - } - return nil -} - -func (b *builtinSubDateDatetimeRealSig) vectorized() bool { - return true -} - -func (b *builtinSubDateDatetimeDecimalSig) vecEvalTime(input *chunk.Chunk, result *chunk.Column) error { - n := input.NumRows() - unit, isNull, err := b.args[2].EvalString(b.ctx, chunk.Row{}) - if err != nil { - return err - } - if isNull { - result.ResizeTime(n, true) - return nil - } - - intervalBuf, err := b.bufAllocator.get() - if err != nil { - return err - } - defer b.bufAllocator.put(intervalBuf) - if err := b.vecGetIntervalFromDecimal(&b.baseBuiltinFunc, input, unit, intervalBuf); err != nil { - return err - } - - if err := b.vecGetDateFromDatetime(&b.baseBuiltinFunc, input, unit, result); err != nil { - return err - } - - result.MergeNulls(intervalBuf) - resDates := result.Times() - for i := 0; i < n; i++ { - if result.IsNull(i) { - continue - } - resDate, isNull, err := b.sub(b.ctx, resDates[i], intervalBuf.GetString(i), unit) - if err != nil { - return err - } - if isNull { - result.SetNull(i, true) - } else { - resDates[i] = resDate - } - } - return nil -} - -func (b *builtinSubDateDatetimeDecimalSig) vectorized() bool { - return true -} - -func (b *builtinSubDateDurationStringSig) vecEvalDuration(input *chunk.Chunk, result *chunk.Column) error { - n := input.NumRows() - unit, isNull, err := b.args[2].EvalString(b.ctx, chunk.Row{}) - if err != nil { - return err - } - if isNull { - result.ResizeGoDuration(n, true) - return nil - } - - intervalBuf, err := b.bufAllocator.get() - if err != nil { - return err - } - defer b.bufAllocator.put(intervalBuf) - if err := b.vecGetIntervalFromString(&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 { - return err - } - - result.MergeNulls(intervalBuf) - resDurations := result.GoDurations() - iterDuration := types.Duration{Fsp: types.MaxFsp} - for i := 0; i < n; i++ { - if result.IsNull(i) { - continue - } - iterDuration.Duration = resDurations[i] - resDuration, isNull, err := b.subDuration(b.ctx, iterDuration, intervalBuf.GetString(i), unit) - if err != nil { - return err - } - if isNull { - result.SetNull(i, true) - } else { - resDurations[i] = resDuration.Duration - } - } - return nil -} - -func (b *builtinSubDateDurationStringSig) vectorized() bool { - return true -} - -func (b *builtinSubDateDurationIntSig) vecEvalDuration(input *chunk.Chunk, result *chunk.Column) error { - n := input.NumRows() - unit, isNull, err := b.args[2].EvalString(b.ctx, chunk.Row{}) - if err != nil { - return err - } - if isNull { - result.ResizeGoDuration(n, true) - return nil - } - - intervalBuf, err := b.bufAllocator.get() - if err != nil { - return err - } - defer b.bufAllocator.put(intervalBuf) - if err := b.vecGetIntervalFromInt(&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 { - return err - } - - result.MergeNulls(intervalBuf) - resDurations := result.GoDurations() - iterDuration := types.Duration{Fsp: types.MaxFsp} - for i := 0; i < n; i++ { - if result.IsNull(i) { - continue - } - iterDuration.Duration = resDurations[i] - resDuration, isNull, err := b.subDuration(b.ctx, iterDuration, intervalBuf.GetString(i), unit) - if err != nil { - return err - } - if isNull { - result.SetNull(i, true) - } else { - resDurations[i] = resDuration.Duration - } - } - return nil -} - -func (b *builtinSubDateDurationIntSig) vectorized() bool { - return true -} - -func (b *builtinSubDateDurationRealSig) vecEvalDuration(input *chunk.Chunk, result *chunk.Column) error { - n := input.NumRows() - unit, isNull, err := b.args[2].EvalString(b.ctx, chunk.Row{}) - if err != nil { - return err - } - if isNull { - result.ResizeGoDuration(n, true) - return nil - } - - intervalBuf, err := b.bufAllocator.get() - if err != nil { - return err - } - defer b.bufAllocator.put(intervalBuf) - if err := b.vecGetIntervalFromReal(&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 { - return err - } - - result.MergeNulls(intervalBuf) - resDurations := result.GoDurations() - iterDuration := types.Duration{Fsp: types.MaxFsp} - for i := 0; i < n; i++ { - if result.IsNull(i) { - continue - } - iterDuration.Duration = resDurations[i] - resDuration, isNull, err := b.subDuration(b.ctx, iterDuration, intervalBuf.GetString(i), unit) - if err != nil { - return err - } - if isNull { - result.SetNull(i, true) - } else { - resDurations[i] = resDuration.Duration - } - } - return nil -} - -func (b *builtinSubDateDurationRealSig) vectorized() bool { - return true -} - -func (b *builtinSubDateDurationDecimalSig) vecEvalDuration(input *chunk.Chunk, result *chunk.Column) error { - n := input.NumRows() - unit, isNull, err := b.args[2].EvalString(b.ctx, chunk.Row{}) - if err != nil { - return err - } - if isNull { - result.ResizeGoDuration(n, true) - return nil - } - - intervalBuf, err := b.bufAllocator.get() - if err != nil { - return err - } - defer b.bufAllocator.put(intervalBuf) - if err := b.vecGetIntervalFromDecimal(&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 { - return err - } - - result.MergeNulls(intervalBuf) - resDurations := result.GoDurations() - iterDuration := types.Duration{Fsp: types.MaxFsp} - for i := 0; i < n; i++ { - if result.IsNull(i) { - continue - } - iterDuration.Duration = resDurations[i] - resDuration, isNull, err := b.subDuration(b.ctx, iterDuration, intervalBuf.GetString(i), unit) - if err != nil { - return err - } - if isNull { - result.SetNull(i, true) - } else { - resDurations[i] = resDuration.Duration - } - } - return nil -} - -func (b *builtinSubDateDurationDecimalSig) vectorized() bool { - return true -} diff --git a/expression/builtin_time_vec_generated_test.go b/expression/builtin_time_vec_generated_test.go index e41fadeb461d7..12a83d21879c5 100644 --- a/expression/builtin_time_vec_generated_test.go +++ b/expression/builtin_time_vec_generated_test.go @@ -264,8 +264,8 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ // builtinDurationDurationTimeDiffSig {retEvalType: types.ETDuration, childrenTypes: []types.EvalType{types.ETDuration, types.ETDuration}}, // builtinDurationStringTimeDiffSig - {retEvalType: types.ETDuration, childrenTypes: []types.EvalType{types.ETDuration, types.ETString}, geners: []dataGenerator{nil, &dateTimeStrGener{Year: 2019, Month: 11, randGen: newDefaultRandGen()}}}, - {retEvalType: types.ETDuration, childrenTypes: []types.EvalType{types.ETDuration, types.ETString}, geners: []dataGenerator{nil, &dateTimeStrGener{Year: 2019, Month: 10, randGen: newDefaultRandGen()}}}, + {retEvalType: types.ETDuration, childrenTypes: []types.EvalType{types.ETDuration, types.ETString}, geners: []dataGenerator{nil, &dateTimeStrGener{Year: 2019, Month: 11, Fsp: 0, randGen: newDefaultRandGen()}}}, + {retEvalType: types.ETDuration, childrenTypes: []types.EvalType{types.ETDuration, types.ETString}, geners: []dataGenerator{nil, &dateTimeStrGener{Year: 2019, Month: 10, Fsp: 0, randGen: newDefaultRandGen()}}}, {retEvalType: types.ETDuration, childrenTypes: []types.EvalType{types.ETDuration, types.ETString}, geners: []dataGenerator{nil, &dateTimeStrGener{Year: 2019, Month: 10, Fsp: 4, randGen: newDefaultRandGen()}}}, // builtinTimeTimeTimeDiffSig {retEvalType: types.ETDuration, childrenTypes: []types.EvalType{types.ETDatetime, types.ETDatetime}, geners: []dataGenerator{&dateTimeGener{Year: 2019, Month: 10, randGen: newDefaultRandGen()}, &dateTimeGener{Year: 2019, Month: 10, randGen: newDefaultRandGen()}}}, @@ -273,15 +273,15 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ {retEvalType: types.ETDuration, childrenTypes: []types.EvalType{types.ETTimestamp, types.ETTimestamp}, geners: []dataGenerator{&dateTimeGener{Year: 2019, Month: 10, randGen: newDefaultRandGen()}, &dateTimeGener{Year: 2019, Month: 10, randGen: newDefaultRandGen()}}}, {retEvalType: types.ETDuration, childrenTypes: []types.EvalType{types.ETTimestamp, types.ETDatetime}, geners: []dataGenerator{&dateTimeGener{Year: 2019, Month: 10, randGen: newDefaultRandGen()}, &dateTimeGener{Year: 2019, Month: 10, randGen: newDefaultRandGen()}}}, // builtinTimeStringTimeDiffSig - {retEvalType: types.ETDuration, childrenTypes: []types.EvalType{types.ETDatetime, types.ETString}, geners: []dataGenerator{&dateTimeGener{Year: 2019, Month: 10, randGen: newDefaultRandGen()}, &dateTimeStrGener{Year: 2019, Month: 10, randGen: newDefaultRandGen()}}}, - {retEvalType: types.ETDuration, childrenTypes: []types.EvalType{types.ETTimestamp, types.ETString}, geners: []dataGenerator{&dateTimeGener{Year: 2019, Month: 10, randGen: newDefaultRandGen()}, &dateTimeStrGener{Year: 2019, Month: 10, randGen: newDefaultRandGen()}}}, + {retEvalType: types.ETDuration, childrenTypes: []types.EvalType{types.ETDatetime, types.ETString}, geners: []dataGenerator{&dateTimeGener{Year: 2019, Month: 10, randGen: newDefaultRandGen()}, &dateTimeStrGener{Year: 2019, Month: 10, Fsp: 0, randGen: newDefaultRandGen()}}}, + {retEvalType: types.ETDuration, childrenTypes: []types.EvalType{types.ETTimestamp, types.ETString}, geners: []dataGenerator{&dateTimeGener{Year: 2019, Month: 10, randGen: newDefaultRandGen()}, &dateTimeStrGener{Year: 2019, Month: 10, Fsp: 0, randGen: newDefaultRandGen()}}}, // builtinStringDurationTimeDiffSig - {retEvalType: types.ETDuration, childrenTypes: []types.EvalType{types.ETString, types.ETDuration}, geners: []dataGenerator{&dateTimeStrGener{Year: 2019, Month: 10, randGen: newDefaultRandGen()}, nil}}, + {retEvalType: types.ETDuration, childrenTypes: []types.EvalType{types.ETString, types.ETDuration}, geners: []dataGenerator{&dateTimeStrGener{Year: 2019, Month: 10, Fsp: 0, randGen: newDefaultRandGen()}, nil}}, // builtinStringTimeTimeDiffSig - {retEvalType: types.ETDuration, childrenTypes: []types.EvalType{types.ETString, types.ETDatetime}, geners: []dataGenerator{&dateTimeStrGener{Year: 2019, Month: 10, randGen: newDefaultRandGen()}, &dateTimeGener{Year: 2019, Month: 10, randGen: newDefaultRandGen()}}}, - {retEvalType: types.ETDuration, childrenTypes: []types.EvalType{types.ETString, types.ETTimestamp}, geners: []dataGenerator{&dateTimeStrGener{Year: 2019, Month: 10, randGen: newDefaultRandGen()}, &dateTimeGener{Year: 2019, Month: 10, randGen: newDefaultRandGen()}}}, + {retEvalType: types.ETDuration, childrenTypes: []types.EvalType{types.ETString, types.ETDatetime}, geners: []dataGenerator{&dateTimeStrGener{Year: 2019, Month: 10, Fsp: 0, randGen: newDefaultRandGen()}, &dateTimeGener{Year: 2019, Month: 10, randGen: newDefaultRandGen()}}}, + {retEvalType: types.ETDuration, childrenTypes: []types.EvalType{types.ETString, types.ETTimestamp}, geners: []dataGenerator{&dateTimeStrGener{Year: 2019, Month: 10, Fsp: 0, randGen: newDefaultRandGen()}, &dateTimeGener{Year: 2019, Month: 10, randGen: newDefaultRandGen()}}}, // builtinStringStringTimeDiffSig - {retEvalType: types.ETDuration, childrenTypes: []types.EvalType{types.ETString, types.ETString}, geners: []dataGenerator{&dateTimeStrGener{Year: 2019, Month: 10, randGen: newDefaultRandGen()}, &dateTimeStrGener{Year: 2019, Month: 10, randGen: newDefaultRandGen()}}}, + {retEvalType: types.ETDuration, childrenTypes: []types.EvalType{types.ETString, types.ETString}, geners: []dataGenerator{&dateTimeStrGener{Year: 2019, Month: 10, Fsp: 0, randGen: newDefaultRandGen()}, &dateTimeStrGener{Year: 2019, Month: 10, Fsp: 0, randGen: newDefaultRandGen()}}}, }, ast.AddDate: { @@ -290,7 +290,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -300,7 +300,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -310,7 +310,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -320,7 +320,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -330,127 +330,127 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -460,7 +460,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -470,7 +470,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -480,7 +480,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR_MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -491,7 +491,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETInt), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -501,7 +501,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETInt), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -511,7 +511,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETInt), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -521,7 +521,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETInt), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -531,127 +531,127 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETInt), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -661,7 +661,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETInt), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -671,7 +671,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETInt), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -681,7 +681,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETInt), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR_MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -692,7 +692,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETReal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -702,7 +702,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETReal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -712,7 +712,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETReal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -722,7 +722,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETReal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -732,127 +732,127 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETReal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -862,7 +862,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETReal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -872,7 +872,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETReal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -882,7 +882,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETReal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR_MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -893,7 +893,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETDecimal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -903,7 +903,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETDecimal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -913,7 +913,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETDecimal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -923,7 +923,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETDecimal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -933,127 +933,127 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETDecimal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -1063,7 +1063,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETDecimal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -1073,7 +1073,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETDecimal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -1083,7 +1083,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETDecimal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR_MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -1091,200 +1091,200 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ }, // builtinAddDateIntStringSig { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR_MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -1292,200 +1292,200 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ }, // builtinAddDateIntIntSig { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR_MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -1493,200 +1493,200 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ }, // builtinAddDateIntRealSig { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR_MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -1694,2626 +1694,2703 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ }, // builtinAddDateIntDecimalSig { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR_MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, - // builtinAddDateDatetimeStringSig + // builtinAddDateRealStringSig { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETString, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETString, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETString, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETString, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETString, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETString, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETString, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETString, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETString, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETString, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETString, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETString, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETString, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETString, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETString, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETString, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETString, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETString, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETString, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETString, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR_MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, - // builtinAddDateDatetimeIntSig + // builtinAddDateRealIntSig { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETInt, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETInt, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETInt, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETInt, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETInt, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETInt, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETInt, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETInt, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETInt, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETInt, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETInt, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETInt, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETInt, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETInt, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETInt, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETInt, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETInt, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETInt, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETInt, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETInt, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR_MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, - // builtinAddDateDatetimeRealSig + // builtinAddDateRealRealSig { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETReal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETReal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETReal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETReal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETReal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETReal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETReal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETReal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETReal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETReal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETReal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETReal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETReal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETReal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETReal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETReal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETReal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETReal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETReal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETReal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR_MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, - // builtinAddDateDatetimeDecimalSig + // builtinAddDateRealDecimalSig { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDatetime), + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR_MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, - // builtinAddDateDurationStringSig + // builtinAddDateDecimalStringSig { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETString, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETString, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETString, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETString, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETString, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETString, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETString, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETString, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETString, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETString, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETString, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETString, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETString, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETString, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETString, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETString, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETString, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETString, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETString, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETString, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETString, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETString, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETString, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETString, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETString, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETString, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETString, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETString, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETString, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETString, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETString, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETString, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETString, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETString, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETString, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETString, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETString, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETString, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETString, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETString, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR_MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, - // builtinAddDateDurationIntSig + // builtinAddDateDecimalIntSig { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETInt, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETInt, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETInt, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETInt, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETInt, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETInt, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETInt, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETInt, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETInt, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETInt, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETInt, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETInt, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETInt, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETInt, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETInt, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETInt, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETInt, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETInt, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETInt, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETInt, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETInt), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR_MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, - // builtinAddDateDurationRealSig + // builtinAddDateDecimalRealSig { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETReal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETReal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETReal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETReal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETReal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETReal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETReal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETReal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETReal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETReal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETReal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETReal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETReal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETReal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETReal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETReal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETReal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETReal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETReal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETReal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETReal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR_MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, - // builtinAddDateDurationDecimalSig + // builtinAddDateDecimalDecimalSig { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - newDefaultGener(0.2, types.ETDuration), + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), newDefaultGener(0.2, types.ETDecimal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR_MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, - }, - - ast.SubDate: { - // builtinSubDateStringStringSig + // builtinAddDateDatetimeStringSig { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeString)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeString)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeString)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeString)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeString)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeString)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeString)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeString)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeString)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeString)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeString)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeString)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeString)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeString)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeString)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeString)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeString)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeString)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeString)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeString)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR_MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, - // builtinSubDateStringIntSig + // builtinAddDateDatetimeIntSig { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeLonglong)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETInt), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeLonglong)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETInt), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeLonglong)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETInt), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeLonglong)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETInt), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeLonglong)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeLonglong)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeLonglong)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeLonglong)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeLonglong)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeLonglong)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeLonglong)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeLonglong)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeLonglong)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeLonglong)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeLonglong)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeLonglong)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeLonglong)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETInt), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeLonglong)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETInt), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeLonglong)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETInt), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeLonglong)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETInt), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR_MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, - // builtinSubDateStringRealSig + // builtinAddDateDatetimeRealSig { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeDouble)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETReal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeDouble)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETReal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeDouble)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETReal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeDouble)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETReal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeDouble)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeDouble)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeDouble)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeDouble)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeDouble)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeDouble)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeDouble)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeDouble)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeDouble)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeDouble)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeDouble)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeDouble)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeDouble)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETReal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeDouble)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETReal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeDouble)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETReal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeDouble)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETReal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR_MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, - // builtinSubDateStringDecimalSig + // builtinAddDateDatetimeDecimalSig { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeNewDecimal)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETDecimal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeNewDecimal)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETDecimal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeNewDecimal)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETDecimal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeNewDecimal)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETDecimal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeNewDecimal)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeNewDecimal)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeNewDecimal)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeNewDecimal)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeNewDecimal)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeNewDecimal)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeNewDecimal)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeNewDecimal)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeNewDecimal)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeNewDecimal)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeNewDecimal)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeNewDecimal)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeNewDecimal)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETDecimal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeNewDecimal)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETDecimal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeNewDecimal)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETDecimal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETString, - childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeNewDecimal)}, geners: []dataGenerator{ - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETDecimal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR_MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, - // builtinSubDateIntStringSig + // builtinAddDateDatetimeStringSig { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -4321,9 +4398,9 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -4331,9 +4408,9 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -4341,9 +4418,9 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -4351,129 +4428,129 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -4481,9 +4558,9 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -4491,9 +4568,9 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -4501,20 +4578,20 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR_MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, - // builtinSubDateIntIntSig + // builtinAddDateDatetimeIntSig { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETInt), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -4522,9 +4599,9 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETInt), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -4532,9 +4609,9 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETInt), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -4542,9 +4619,9 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETInt), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -4552,129 +4629,129 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETInt), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -4682,9 +4759,9 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETInt), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -4692,9 +4769,9 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETInt), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -4702,20 +4779,20 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETInt), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR_MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, - // builtinSubDateIntRealSig + // builtinAddDateDatetimeRealSig { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETReal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -4723,9 +4800,9 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETReal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -4733,9 +4810,9 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETReal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -4743,9 +4820,9 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETReal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -4753,129 +4830,129 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETReal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -4883,9 +4960,9 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETReal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -4893,9 +4970,9 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETReal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -4903,20 +4980,20 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETReal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR_MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, - // builtinSubDateIntDecimalSig + // builtinAddDateDatetimeDecimalSig { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETDecimal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -4924,9 +5001,9 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETDecimal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -4934,9 +5011,9 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETDecimal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -4944,9 +5021,9 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETDecimal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -4954,159 +5031,5070 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDatetime), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDatetime), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDatetime), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDatetime), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDatetime), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDatetime), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDatetime), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDatetime), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR_MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + // builtinAddDateDurationStringSig + { + retEvalType: types.ETDuration, + childrenTypes: []types.EvalType{types.ETDuration, types.ETString, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDuration, + childrenTypes: []types.EvalType{types.ETDuration, types.ETString, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDuration, + childrenTypes: []types.EvalType{types.ETDuration, types.ETString, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDuration, + childrenTypes: []types.EvalType{types.ETDuration, types.ETString, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDuration, + childrenTypes: []types.EvalType{types.ETDuration, types.ETString, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDuration, + childrenTypes: []types.EvalType{types.ETDuration, types.ETString, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDuration, + childrenTypes: []types.EvalType{types.ETDuration, types.ETString, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDuration, + childrenTypes: []types.EvalType{types.ETDuration, types.ETString, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDuration, + childrenTypes: []types.EvalType{types.ETDuration, types.ETString, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDuration, + childrenTypes: []types.EvalType{types.ETDuration, types.ETString, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDuration, + childrenTypes: []types.EvalType{types.ETDuration, types.ETString, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + // builtinAddDateDurationIntSig + { + retEvalType: types.ETDuration, + childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDuration, + childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDuration, + childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDuration, + childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDuration, + childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDuration, + childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDuration, + childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDuration, + childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDuration, + childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDuration, + childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDuration, + childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + // builtinAddDateDurationRealSig + { + retEvalType: types.ETDuration, + childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDuration, + childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDuration, + childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDuration, + childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDuration, + childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDuration, + childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDuration, + childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDuration, + childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDuration, + childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDuration, + childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDuration, + childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + // builtinAddDateDurationDecimalSig + { + retEvalType: types.ETDuration, + childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDuration, + childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDuration, + childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDuration, + childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDuration, + childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDuration, + childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDuration, + childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDuration, + childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDuration, + childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDuration, + childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDuration, + childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + // builtinAddDateDurationStringSig// TODO: Make the following cases stable, i.e., shouldn't be affected by crossing a day (date part is padded to current date). + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETString, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETString, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETString, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETString, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETString, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETString, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETString, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETString, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETString, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR_MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + // builtinAddDateDurationIntSig// TODO: Make the following cases stable, i.e., shouldn't be affected by crossing a day (date part is padded to current date). + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR_MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + // builtinAddDateDurationRealSig// TODO: Make the following cases stable, i.e., shouldn't be affected by crossing a day (date part is padded to current date). + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR_MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + // builtinAddDateDurationDecimalSig// TODO: Make the following cases stable, i.e., shouldn't be affected by crossing a day (date part is padded to current date). + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ETDuration), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR_MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + }, + + ast.SubDate: { + // builtinSubDateStringStringSig + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR_MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + // builtinSubDateStringIntSig + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR_MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + // builtinSubDateStringRealSig + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR_MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + // builtinSubDateStringDecimalSig + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETString, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR_MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + // builtinSubDateIntStringSig + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR_MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + // builtinSubDateIntIntSig + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR_MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + // builtinSubDateIntRealSig + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR_MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + // builtinSubDateIntDecimalSig + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR_MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + // builtinSubDateRealStringSig + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR_MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + // builtinSubDateRealIntSig + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR_MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + // builtinSubDateRealRealSig + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR_MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + // builtinSubDateRealDecimalSig + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETReal, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR_MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + // builtinSubDateDecimalStringSig + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETString, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR_MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + // builtinSubDateDecimalIntSig + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETInt, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR_MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + // builtinSubDateDecimalRealSig + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETReal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR_MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + // builtinSubDateDecimalDecimalSig + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETString, + childrenTypes: []types.EvalType{types.ETDecimal, types.ETDecimal, types.ETString}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR_MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + // builtinSubDateDatetimeStringSig + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeString)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeString)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeString)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeString)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeString)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeString)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeString)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeString)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeString)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeString)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeString)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeString)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeString)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeString)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeString)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeString)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeString)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeString)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeString)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETString, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeString)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR_MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + // builtinSubDateDatetimeIntSig + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeLonglong)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeLonglong)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeLonglong)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeLonglong)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeLonglong)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeLonglong)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeLonglong)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeLonglong)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeLonglong)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeLonglong)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeLonglong)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeLonglong)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeLonglong)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeLonglong)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeLonglong)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeLonglong)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeLonglong)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeLonglong)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeLonglong)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETInt, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeLonglong)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + newDefaultGener(0.2, types.ETInt), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR_MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + // builtinSubDateDatetimeRealSig + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeDouble)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeDouble)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeDouble)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeDouble)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeDouble)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeDouble)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeDouble)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeDouble)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeDouble)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeDouble)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeDouble)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeDouble)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeDouble)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeDouble)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeDouble)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeDouble)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeDouble)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeDouble)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeDouble)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETReal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeDouble)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + newDefaultGener(0.2, types.ETReal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR_MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + // builtinSubDateDatetimeDecimalSig + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeNewDecimal)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeNewDecimal)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeNewDecimal)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeNewDecimal)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeNewDecimal)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeNewDecimal)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeNewDecimal)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeNewDecimal)}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETDecimal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeNewDecimal)}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETDecimal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeNewDecimal)}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETDecimal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeNewDecimal)}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETDecimal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeNewDecimal)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeNewDecimal)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeNewDecimal)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeNewDecimal)}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeNewDecimal)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + newDefaultGener(0.2, types.ETDecimal), + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + { + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeNewDecimal)}, + geners: []dataGenerator{ + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETDecimal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeNewDecimal)}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETDecimal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeNewDecimal)}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETDecimal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, - childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDatetime, types.ETDecimal, types.ETString}, + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.TypeDate), types.NewFieldType(mysql.TypeNewDecimal)}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), newDefaultGener(0.2, types.ETDecimal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR_MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -5160,7 +10148,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ newDefaultGener(0.2, types.ETDatetime), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { @@ -5170,7 +10158,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ newDefaultGener(0.2, types.ETDatetime), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { @@ -5180,7 +10168,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ newDefaultGener(0.2, types.ETDatetime), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { @@ -5190,7 +10178,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ newDefaultGener(0.2, types.ETDatetime), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { @@ -5200,7 +10188,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ newDefaultGener(0.2, types.ETDatetime), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { @@ -5210,7 +10198,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ newDefaultGener(0.2, types.ETDatetime), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { @@ -5220,7 +10208,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ newDefaultGener(0.2, types.ETDatetime), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { @@ -5230,7 +10218,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ newDefaultGener(0.2, types.ETDatetime), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { @@ -5240,7 +10228,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ newDefaultGener(0.2, types.ETDatetime), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { @@ -5250,7 +10238,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ newDefaultGener(0.2, types.ETDatetime), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { @@ -5260,7 +10248,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ newDefaultGener(0.2, types.ETDatetime), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { @@ -5270,7 +10258,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ newDefaultGener(0.2, types.ETDatetime), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { @@ -5361,7 +10349,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { @@ -5371,7 +10359,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { @@ -5381,7 +10369,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { @@ -5391,7 +10379,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { @@ -5401,7 +10389,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { @@ -5411,7 +10399,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { @@ -5421,7 +10409,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { @@ -5431,7 +10419,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { @@ -5441,7 +10429,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { @@ -5451,7 +10439,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { @@ -5461,7 +10449,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { @@ -5471,7 +10459,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { @@ -5562,7 +10550,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { @@ -5572,7 +10560,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { @@ -5582,7 +10570,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { @@ -5592,7 +10580,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { @@ -5602,7 +10590,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { @@ -5612,7 +10600,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { @@ -5622,7 +10610,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { @@ -5632,7 +10620,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { @@ -5642,7 +10630,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { @@ -5652,7 +10640,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { @@ -5662,7 +10650,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { @@ -5672,7 +10660,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { @@ -5763,7 +10751,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { @@ -5773,7 +10761,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { @@ -5783,7 +10771,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { @@ -5793,7 +10781,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { @@ -5803,7 +10791,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { @@ -5813,7 +10801,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { @@ -5823,7 +10811,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { @@ -5833,7 +10821,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { @@ -5843,7 +10831,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { @@ -5853,7 +10841,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { @@ -5863,7 +10851,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { @@ -5873,7 +10861,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ newDefaultGener(0.2, types.ETDatetime), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { @@ -5964,7 +10952,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ newDefaultGener(0.2, types.ETDuration), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { @@ -5974,7 +10962,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ newDefaultGener(0.2, types.ETDuration), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { @@ -5984,7 +10972,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ newDefaultGener(0.2, types.ETDuration), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { @@ -5994,7 +10982,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ newDefaultGener(0.2, types.ETDuration), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { @@ -6004,7 +10992,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ newDefaultGener(0.2, types.ETDuration), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { @@ -6014,7 +11002,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ newDefaultGener(0.2, types.ETDuration), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { @@ -6024,100 +11012,100 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ newDefaultGener(0.2, types.ETDuration), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, + // builtinSubDateDurationIntSig { retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETString, types.ETString}, + childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), - &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETString, types.ETString}, + childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), - &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETString, types.ETString}, + childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), - &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETString, types.ETString}, + childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), - &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETString, types.ETString}, + childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), - &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETString, types.ETString}, + childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), - &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETString, types.ETString}, + childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), - &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETString, types.ETString}, + childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), - &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETString, types.ETString}, + childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), - &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR_MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, - // builtinSubDateDurationIntSig { retEvalType: types.ETDuration, childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, @@ -6125,7 +11113,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ newDefaultGener(0.2, types.ETDuration), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { @@ -6135,553 +11123,557 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ newDefaultGener(0.2, types.ETDuration), newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, + // builtinSubDateDurationRealSig { retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, + childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), - newDefaultGener(0.2, types.ETInt), + newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, + childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), - newDefaultGener(0.2, types.ETInt), + newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, + childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), - newDefaultGener(0.2, types.ETInt), + newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, + childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), - newDefaultGener(0.2, types.ETInt), + newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, + childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), - newDefaultGener(0.2, types.ETInt), + newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, + childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), - newDefaultGener(0.2, types.ETInt), + newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, + childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), - newDefaultGener(0.2, types.ETInt), + newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, + childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), - newDefaultGener(0.2, types.ETInt), + newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, + childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), - newDefaultGener(0.2, types.ETInt), + newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, + childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), - newDefaultGener(0.2, types.ETInt), + newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, + childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), - newDefaultGener(0.2, types.ETInt), + newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, + // builtinSubDateDurationDecimalSig { retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, + childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), - newDefaultGener(0.2, types.ETInt), + newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, + childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), - newDefaultGener(0.2, types.ETInt), + newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, + childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), - newDefaultGener(0.2, types.ETInt), + newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, + childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), - newDefaultGener(0.2, types.ETInt), + newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, + childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), - newDefaultGener(0.2, types.ETInt), + newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, + childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), - newDefaultGener(0.2, types.ETInt), + newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, + childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), - newDefaultGener(0.2, types.ETInt), + newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR_MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, - // builtinSubDateDurationRealSig { retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), - newDefaultGener(0.2, types.ETReal), + newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), - newDefaultGener(0.2, types.ETReal), + newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), - newDefaultGener(0.2, types.ETReal), + newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), - newDefaultGener(0.2, types.ETReal), + newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, + // builtinSubDateDurationStringSig// TODO: Make the following cases stable, i.e., shouldn't be affected by crossing a day (date part is padded to current date). { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETString, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), - newDefaultGener(0.2, types.ETReal), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETString, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), - newDefaultGener(0.2, types.ETReal), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETString, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), - newDefaultGener(0.2, types.ETReal), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETString, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), - newDefaultGener(0.2, types.ETReal), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETString, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), - newDefaultGener(0.2, types.ETReal), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETString, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), - newDefaultGener(0.2, types.ETReal), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETString, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), - newDefaultGener(0.2, types.ETReal), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETString, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), - newDefaultGener(0.2, types.ETReal), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETString, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), - newDefaultGener(0.2, types.ETReal), + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR_MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, + // builtinSubDateDurationIntSig// TODO: Make the following cases stable, i.e., shouldn't be affected by crossing a day (date part is padded to current date). { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), - newDefaultGener(0.2, types.ETReal), + newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), - newDefaultGener(0.2, types.ETReal), + newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), - newDefaultGener(0.2, types.ETReal), + newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), - newDefaultGener(0.2, types.ETReal), + newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), - newDefaultGener(0.2, types.ETReal), + newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), - newDefaultGener(0.2, types.ETReal), + newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), - newDefaultGener(0.2, types.ETReal), + newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR_MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, - // builtinSubDateDurationDecimalSig { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), - newDefaultGener(0.2, types.ETDecimal), + newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETInt, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), - newDefaultGener(0.2, types.ETDecimal), + newDefaultGener(0.2, types.ETInt), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR_MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, + // builtinSubDateDurationRealSig// TODO: Make the following cases stable, i.e., shouldn't be affected by crossing a day (date part is padded to current date). { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), - newDefaultGener(0.2, types.ETDecimal), + newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), - newDefaultGener(0.2, types.ETDecimal), + newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), - newDefaultGener(0.2, types.ETDecimal), + newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), - newDefaultGener(0.2, types.ETDecimal), + newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), - newDefaultGener(0.2, types.ETDecimal), + newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), - newDefaultGener(0.2, types.ETDecimal), + newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), - newDefaultGener(0.2, types.ETDecimal), + newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), - newDefaultGener(0.2, types.ETDecimal), + newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("SECOND_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_HOUR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, - childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, + retEvalType: types.ETDatetime, + childrenTypes: []types.EvalType{types.ETDuration, types.ETReal, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), - newDefaultGener(0.2, types.ETDecimal), + newDefaultGener(0.2, types.ETReal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR_MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, + // builtinSubDateDurationDecimalSig// TODO: Make the following cases stable, i.e., shouldn't be affected by crossing a day (date part is padded to current date). { - retEvalType: types.ETDuration, + retEvalType: types.ETDatetime, childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MINUTE_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, + retEvalType: types.ETDatetime, childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("WEEK"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, + retEvalType: types.ETDatetime, childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_SECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MONTH"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, + retEvalType: types.ETDatetime, childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("HOUR_MINUTE"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("QUARTER"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, + retEvalType: types.ETDatetime, childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), newDefaultGener(0.2, types.ETDecimal), }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("DAY_MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("YEAR"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDuration, + retEvalType: types.ETDatetime, childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), @@ -6691,7 +11683,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ chunkSize: 128, }, { - retEvalType: types.ETDuration, + retEvalType: types.ETDatetime, childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), @@ -6701,7 +11693,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ chunkSize: 128, }, { - retEvalType: types.ETDuration, + retEvalType: types.ETDatetime, childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), @@ -6711,7 +11703,7 @@ var vecBuiltinTimeGeneratedCases = map[string][]vecExprBenchCase{ chunkSize: 128, }, { - retEvalType: types.ETDuration, + retEvalType: types.ETDatetime, childrenTypes: []types.EvalType{types.ETDuration, types.ETDecimal, types.ETString}, geners: []dataGenerator{ newDefaultGener(0.2, types.ETDuration), diff --git a/expression/builtin_time_vec_test.go b/expression/builtin_time_vec_test.go index 4348094ea0ca3..9ea1132066399 100644 --- a/expression/builtin_time_vec_test.go +++ b/expression/builtin_time_vec_test.go @@ -244,40 +244,40 @@ var vecBuiltinTimeCases = map[string][]vecExprBenchCase{ chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETInt), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETReal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETDecimal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETDecimal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, @@ -326,30 +326,30 @@ var vecBuiltinTimeCases = map[string][]vecExprBenchCase{ chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETString, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}), &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETInt, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETInt), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, chunkSize: 128, }, { - retEvalType: types.ETDatetime, + retEvalType: types.ETString, childrenTypes: []types.EvalType{types.ETInt, types.ETReal, types.ETString}, geners: []dataGenerator{ - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, + newNullWrappedGener(0.2, dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}), newDefaultGener(0.2, types.ETReal), }, constants: []*Constant{nil, nil, {Value: types.NewStringDatum("MICROSECOND"), RetType: types.NewFieldType(mysql.TypeString)}}, diff --git a/expression/column.go b/expression/column.go index c1f3960b2cbf3..b83e0c0203820 100644 --- a/expression/column.go +++ b/expression/column.go @@ -490,6 +490,11 @@ func (col *Column) HashCode(_ *stmtctx.StatementContext) []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) +} + // ResolveIndices implements Expression interface. func (col *Column) ResolveIndices(schema *Schema) (Expression, error) { newCol := col.Clone() diff --git a/expression/expr_to_pb.go b/expression/expr_to_pb.go index dec4f44f850ec..a9a29868b9283 100644 --- a/expression/expr_to_pb.go +++ b/expression/expr_to_pb.go @@ -15,6 +15,8 @@ package expression import ( + "strconv" + "github.com/gogo/protobuf/proto" "github.com/pingcap/errors" "github.com/pingcap/failpoint" @@ -165,6 +167,14 @@ func ToPBFieldType(ft *types.FieldType) *tipb.FieldType { } } +// ToPBFieldTypeWithCheck converts *types.FieldType to *tipb.FieldType with checking the valid decimal for TiFlash +func ToPBFieldTypeWithCheck(ft *types.FieldType, storeType kv.StoreType) (*tipb.FieldType, error) { + if storeType == kv.TiFlash && !ft.IsDecimalValid() { + return nil, errors.New(ft.String() + " can not be pushed to TiFlash because it contains invalid decimal('" + strconv.Itoa(ft.GetFlen()) + "','" + strconv.Itoa(ft.GetDecimal()) + "').") + } + return ToPBFieldType(ft), nil +} + // FieldTypeFromPB converts *tipb.FieldType to *types.FieldType. func FieldTypeFromPB(ft *tipb.FieldType) *types.FieldType { ft1 := types.NewFieldTypeBuilder().SetType(byte(ft.Tp)).SetFlag(uint(ft.Flag)).SetFlen(int(ft.Flen)).SetDecimal(int(ft.Decimal)).SetCharset(ft.Charset).SetCollate(collate.ProtoToCollation(ft.Collate)).BuildP() diff --git a/expression/expr_to_pb_test.go b/expression/expr_to_pb_test.go index 509f75a6c736d..4baf924a1b4ff 100644 --- a/expression/expr_to_pb_test.go +++ b/expression/expr_to_pb_test.go @@ -513,6 +513,8 @@ func TestExprPushDownToFlash(t *testing.T) { intColumn := genColumn(mysql.TypeLonglong, 2) realColumn := genColumn(mysql.TypeDouble, 3) decimalColumn := genColumn(mysql.TypeNewDecimal, 4) + decimalColumn.RetType.SetDecimal(mysql.MaxDecimalScale) + decimalColumn.RetType.SetFlen(mysql.MaxDecimalWidth) stringColumn := genColumn(mysql.TypeString, 5) datetimeColumn := genColumn(mysql.TypeDatetime, 6) binaryStringColumn := genColumn(mysql.TypeString, 7) diff --git a/expression/expression.go b/expression/expression.go index 586b876719fd2..ad434dc5e9b5d 100644 --- a/expression/expression.go +++ b/expression/expression.go @@ -17,6 +17,7 @@ package expression import ( goJSON "encoding/json" "fmt" + "strconv" "strings" "sync" "sync/atomic" @@ -1023,13 +1024,6 @@ func scalarExprSupportedByTiKV(sf *ScalarFunction) bool { return false } -func isValidTiFlashDecimalType(tp *types.FieldType) bool { - if tp.GetType() != mysql.TypeNewDecimal { - return false - } - return tp.GetFlen() > 0 && tp.GetFlen() <= 65 && tp.GetDecimal() >= 0 && tp.GetDecimal() <= 30 && tp.GetFlen() >= tp.GetDecimal() -} - func canEnumPushdownPreliminarily(scalarFunc *ScalarFunction) bool { switch scalarFunc.FuncName.L { case ast.Cast: @@ -1100,7 +1094,7 @@ func scalarExprSupportedByFlash(function *ScalarFunction) bool { return sourceType.GetType() == retType.GetType() || retType.GetType() == mysql.TypeDouble case tipb.ScalarFuncSig_CastDecimalAsDecimal, tipb.ScalarFuncSig_CastIntAsDecimal, tipb.ScalarFuncSig_CastRealAsDecimal, tipb.ScalarFuncSig_CastTimeAsDecimal, tipb.ScalarFuncSig_CastStringAsDecimal /*, tipb.ScalarFuncSig_CastDurationAsDecimal, tipb.ScalarFuncSig_CastJsonAsDecimal*/ : - return isValidTiFlashDecimalType(function.RetType) + return function.RetType.IsDecimalValid() case tipb.ScalarFuncSig_CastDecimalAsString, tipb.ScalarFuncSig_CastIntAsString, tipb.ScalarFuncSig_CastRealAsString, tipb.ScalarFuncSig_CastTimeAsString, tipb.ScalarFuncSig_CastStringAsString /*, tipb.ScalarFuncSig_CastDurationAsString, tipb.ScalarFuncSig_CastJsonAsString*/ : return true @@ -1287,6 +1281,13 @@ func canExprPushDown(expr Expression, pc PbConverter, storeType kv.StoreType, ca pc.sc.AppendWarning(errors.New("Expression about '" + expr.String() + "' can not be pushed to TiFlash because it contains unsupported calculation of type '" + types.TypeStr(expr.GetType().GetType()) + "'.")) } return false + case mysql.TypeNewDecimal: + if !expr.GetType().IsDecimalValid() { + if pc.sc.InExplainStmt { + pc.sc.AppendWarning(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()) + "').")) + } + return false + } } } switch x := expr.(type) { @@ -1423,8 +1424,8 @@ func PropagateType(evalType types.EvalType, args ...Expression) { newDecimal = mysql.MaxDecimalScale } } - args[0].GetType().SetFlen(newFlen) - args[0].GetType().SetDecimal(newDecimal) + args[0].GetType().SetFlenUnderLimit(newFlen) + args[0].GetType().SetDecimalUnderLimit(newDecimal) } } } diff --git a/expression/generator/helper/BUILD.bazel b/expression/generator/helper/BUILD.bazel new file mode 100644 index 0000000000000..92febc259de18 --- /dev/null +++ b/expression/generator/helper/BUILD.bazel @@ -0,0 +1,8 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "helper", + srcs = ["helper.go"], + importpath = "github.com/pingcap/tidb/expression/generator/helper", + visibility = ["//visibility:public"], +) diff --git a/expression/generator/time_vec.go b/expression/generator/time_vec.go index da497a0b8cbea..73067419f8cfc 100644 --- a/expression/generator/time_vec.go +++ b/expression/generator/time_vec.go @@ -63,7 +63,7 @@ import ( continue }{{ end }} sc := b.ctx.GetSessionVars().StmtCtx - arg1Duration, err := types.ParseDuration(sc, arg1, {{if eq .Output.TypeName "String"}}getFsp4TimeAddSub{{else}}types.GetFsp{{end}}(arg1)) + arg1Duration, _, err := types.ParseDuration(sc, arg1, {{if eq .Output.TypeName "String"}}getFsp4TimeAddSub{{else}}types.GetFsp{{end}}(arg1)) if err != nil { if terror.ErrorEqual(err, types.ErrTruncatedWrongVal) { sc.AppendWarning(err) @@ -191,7 +191,7 @@ func (b *{{.SigName}}) vecEval{{ .Output.TypeName }}(input *chunk.Chunk, result continue } sc := b.ctx.GetSessionVars().StmtCtx - arg1Duration, err := types.ParseDuration(sc, arg1, types.GetFsp(arg1)) + arg1Duration, _, err := types.ParseDuration(sc, arg1, types.GetFsp(arg1)) if err != nil { if terror.ErrorEqual(err, types.ErrTruncatedWrongVal) { sc.AppendWarning(err) @@ -512,184 +512,44 @@ func (b *{{.SigName}}) vectorized() bool { {{ end }}{{/* range */}} `)) -var addOrSubDate = template.Must(template.New("").Parse(` -{{ range .Sigs }} -{{- if eq .TypeA.TypeName "String"}} -func (b *{{.SigName}}) vecEvalString(input *chunk.Chunk, result *chunk.Column) error { -n := input.NumRows() - unit, isNull, err := b.args[2].EvalString(b.ctx, chunk.Row{}) - if err != nil { - return err - } - if isNull { - result.ReserveString(n) - result.SetNulls(0, n, true) - return nil - } - - intervalBuf, err := b.bufAllocator.get() - if err != nil { - return err - } - defer b.bufAllocator.put(intervalBuf) - if err := b.vecGetIntervalFrom{{.TypeB.ETName}}(&b.baseBuiltinFunc, input, unit, intervalBuf); err != nil { - return err - } - - dateBuf, err := b.bufAllocator.get() - if err != nil { - return err +func getIntervalUnitListForDurationAsDuration() []string { + return []string{ + "MICROSECOND", + "SECOND", + "MINUTE", + "HOUR", + "SECOND_MICROSECOND", + "MINUTE_MICROSECOND", + "MINUTE_SECOND", + "HOUR_MICROSECOND", + "HOUR_SECOND", + "HOUR_MINUTE", + "DAY_MICROSECOND", } - defer b.bufAllocator.put(dateBuf) - if err := b.vecGetDateFromString(&b.baseBuiltinFunc, input, unit, dateBuf); err != nil { - return err - } - - isClockUnit := types.IsClockUnit(unit) - - result.ReserveString(n) - - dateBuf.MergeNulls(intervalBuf) - for i := 0; i < n; i++ { - if dateBuf.IsNull(i) { - result.AppendNull() - continue - } - {{- if eq $.FuncName "AddDate" }} - resDate, isNull, err := b.add(b.ctx, dateBuf.Times()[i], intervalBuf.GetString(i), unit) - {{- else }} - resDate, isNull, err := b.sub(b.ctx, dateBuf.Times()[i], intervalBuf.GetString(i), unit) - {{- end }} - if err != nil { - return err - } - if isNull { - result.AppendNull() - } else { - dateTp := mysql.TypeDate - if dateBuf.Times()[i].Type() == mysql.TypeDatetime || isClockUnit { - dateTp = mysql.TypeDatetime - } - resDate.SetType(dateTp) - result.AppendString(resDate.String()) - } - } - return nil } -{{- else }} -{{- if eq .TypeA.TypeName "Duration" }} -func (b *{{.SigName}}) vecEvalDuration(input *chunk.Chunk, result *chunk.Column) error { -{{- else }} -func (b *{{.SigName}}) vecEvalTime(input *chunk.Chunk, result *chunk.Column) error { -{{- end }} - n := input.NumRows() - unit, isNull, err := b.args[2].EvalString(b.ctx, chunk.Row{}) - if err != nil { - return err - } - if isNull { - {{- if eq .TypeA.TypeName "Duration" }} - result.ResizeGoDuration(n, true) - {{- else }} - result.ResizeTime(n, true) - {{- end }} - return nil - } - intervalBuf, err := b.bufAllocator.get() - if err != nil { - return err +func getIntervalUnitListForDurationAsDatetime() []string { + return []string{ + "DAY", + "WEEK", + "MONTH", + "QUARTER", + "YEAR", + "DAY_SECOND", + "DAY_MINUTE", + "DAY_HOUR", + "YEAR_MONTH", } - defer b.bufAllocator.put(intervalBuf) - if err := b.vecGetIntervalFrom{{.TypeB.ETName}}(&b.baseBuiltinFunc, input, unit, intervalBuf); err != nil { - return err - } - - {{ if eq .TypeA.TypeName "Duration" }} - result.ResizeGoDuration(n, false) - if err := b.args[0].VecEvalDuration(b.ctx, input, result); err != nil { - return err - } - - result.MergeNulls(intervalBuf) - resDurations := result.GoDurations() - iterDuration := types.Duration{Fsp: types.MaxFsp} - {{ else }} - if err := b.vecGetDateFrom{{.TypeA.ETName}}(&b.baseBuiltinFunc, input, unit, result); err != nil { - return err - } - - result.MergeNulls(intervalBuf) - resDates := result.Times() - {{ end -}} - - for i := 0; i < n; i++ { - if result.IsNull(i) { - continue - } - - {{- if eq .TypeA.TypeName "Duration" }} - iterDuration.Duration = resDurations[i] - {{- if eq $.FuncName "AddDate" }} - resDuration, isNull, err := b.addDuration(b.ctx, iterDuration, intervalBuf.GetString(i), unit) - {{- else }} - resDuration, isNull, err := b.subDuration(b.ctx, iterDuration, intervalBuf.GetString(i), unit) - {{- end }} - {{- else }} - {{- if eq $.FuncName "AddDate" }} - resDate, isNull, err := b.add(b.ctx, resDates[i], intervalBuf.GetString(i), unit) - {{- else }} - resDate, isNull, err := b.sub(b.ctx, resDates[i], intervalBuf.GetString(i), unit) - {{- end }} - {{- end }} - if err != nil { - return err - } - if isNull { - result.SetNull(i, true) - } else { - {{- if eq .TypeA.TypeName "Duration" }} - resDurations[i] = resDuration.Duration - {{- else }} - resDates[i] = resDate - {{- end }} - } - } - return nil } -{{- end }} -func (b *{{.SigName}}) vectorized() bool { - return true +func getIntervalUnitList() []string { + return append(getIntervalUnitListForDurationAsDuration(), getIntervalUnitListForDurationAsDatetime()...) } -{{ end }}{{/* range */}} -`)) var testFileFuncs = template.FuncMap{ - "getIntervalUnitList": func() []string { - return []string{ - "MICROSECOND", - "SECOND", - "MINUTE", - "HOUR", - "DAY", - "WEEK", - "MONTH", - "QUARTER", - "YEAR", - "SECOND_MICROSECOND", - "MINUTE_MICROSECOND", - "MINUTE_SECOND", - "HOUR_MICROSECOND", - "HOUR_SECOND", - "HOUR_MINUTE", - "DAY_MICROSECOND", - "DAY_SECOND", - "DAY_MINUTE", - "DAY_HOUR", - "YEAR_MONTH", - } - }, + "getIntervalUnitListForDurationAsDuration": getIntervalUnitListForDurationAsDuration, + "getIntervalUnitListForDurationAsDatetime": getIntervalUnitListForDurationAsDatetime, + "getIntervalUnitList": getIntervalUnitList, } var testFile = template.Must(template.New("").Funcs(testFileFuncs).Parse(` @@ -740,31 +600,81 @@ func (g gener) gen() interface{} { } {{ define "addOrSubDateCases" }} - {{- $unitList := getIntervalUnitList -}} {{- range $sig := .Sigs }} // {{ $sig.SigName }} - {{- range $unit := $unitList }} - { - retEvalType: types.ET{{ $sig.Output.ETName }}, - childrenTypes: []types.EvalType{types.ET{{ $sig.TypeA.ETName }}, types.ET{{ $sig.TypeB.ETName }}, types.ETString}, - geners: []dataGenerator{ - {{- if eq $sig.TypeA.ETName "String"}} - &dateStrGener{NullRation: 0.2, randGen: newDefaultRandGen()}, - {{- else if eq $sig.TypeA.ETName "Int"}} - &dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}, nullRation: 0.2}, - {{- else }} + {{- if and (eq $sig.TypeA.ETName "Duration") (eq $sig.Output.ETName "Duration") -}} + {{- $unitList := getIntervalUnitListForDurationAsDuration -}} + {{- range $unit := $unitList }} + { + retEvalType: types.ET{{ $sig.Output.ETName }}, + childrenTypes: []types.EvalType{types.ET{{ $sig.TypeA.ETName }}, types.ET{{ $sig.TypeB.ETName }}, types.ETString}, + geners: []dataGenerator{ newDefaultGener(0.2, types.ET{{$sig.TypeA.ETName}}), - {{- end }} - {{- if eq $sig.TypeB.ETName "String" }} - &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, - {{- else }} - newDefaultGener(0.2, types.ET{{$sig.TypeB.ETName}}), + {{- if eq $sig.TypeB.ETName "String" }} + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + {{- else }} + newDefaultGener(0.2, types.ET{{$sig.TypeB.ETName}}), + {{- end }} + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("{{$unit}}"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + {{- end }} + {{- else if and (eq $sig.TypeA.ETName "Duration") (eq $sig.Output.ETName "Datetime") -}} + // TODO: Make the following cases stable, i.e., shouldn't be affected by crossing a day (date part is padded to current date). + {{- $unitList := getIntervalUnitListForDurationAsDatetime -}} + {{- range $unit := $unitList }} + { + retEvalType: types.ET{{ $sig.Output.ETName }}, + childrenTypes: []types.EvalType{types.ET{{ $sig.TypeA.ETName }}, types.ET{{ $sig.TypeB.ETName }}, types.ETString}, + geners: []dataGenerator{ + newDefaultGener(0.2, types.ET{{$sig.TypeA.ETName}}), + + {{- if eq $sig.TypeB.ETName "String" }} + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + {{- else }} + newDefaultGener(0.2, types.ET{{$sig.TypeB.ETName}}), + {{- end }} + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("{{$unit}}"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, + }, + {{- end }} + {{- else -}} + {{- $unitList := getIntervalUnitList -}} + {{- range $unit := $unitList }} + { + retEvalType: types.ET{{ $sig.Output.ETName }}, + childrenTypes: []types.EvalType{types.ET{{ $sig.TypeA.ETName }}, types.ET{{ $sig.TypeB.ETName }}, types.ETString}, + {{- if ne $sig.FieldTypeA "" }} + childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.Type{{$sig.FieldTypeA}}), types.NewFieldType(mysql.Type{{$sig.FieldTypeB}})}, {{- end }} + geners: []dataGenerator{ + {{- if eq $sig.FieldTypeA "Date" }} + newNullWrappedGener(0.2, dateGener{randGen: newDefaultRandGen()}), + {{- else if eq $sig.TypeA.ETName "String"}} + newNullWrappedGener(0.2, dateOrDatetimeStrGener{dateRatio: 0.2, dateStrGener: dateStrGener{randGen: newDefaultRandGen()}, dateTimeStrGener: dateTimeStrGener{Fsp: -1, randGen: newDefaultRandGen()}}), + {{- else if eq $sig.TypeA.ETName "Int"}} + newNullWrappedGener(0.2, dateOrDatetimeIntGener{dateRatio: 0.2, dateIntGener: dateIntGener{dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeIntGener: dateTimeIntGener{dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + {{- else if eq $sig.TypeA.ETName "Real"}} + newNullWrappedGener(0.2, dateOrDatetimeRealGener{dateRatio: 0.2, dateRealGener: dateRealGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeRealGener: dateTimeRealGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + {{- else if eq $sig.TypeA.ETName "Decimal"}} + newNullWrappedGener(0.2, dateOrDatetimeDecimalGener{dateRatio: 0.2, dateDecimalGener: dateDecimalGener{fspRatio: 0.5, dateGener: dateGener{randGen: newDefaultRandGen()}}, dateTimeDecimalGener: dateTimeDecimalGener{fspRatio: 0.5, dateTimeGener: dateTimeGener{randGen: newDefaultRandGen()}}}), + {{- else }} + newDefaultGener(0.2, types.ET{{$sig.TypeA.ETName}}), + {{- end }} + + {{- if eq $sig.TypeB.ETName "String" }} + &numStrGener{rangeInt64Gener{math.MinInt32 + 1, math.MaxInt32, newDefaultRandGen()}}, + {{- else }} + newDefaultGener(0.2, types.ET{{$sig.TypeB.ETName}}), + {{- end }} + }, + constants: []*Constant{nil, nil, {Value: types.NewStringDatum("{{$unit}}"), RetType: types.NewFieldType(mysql.TypeString)}}, + chunkSize: 128, }, - constants: []*Constant{nil, nil, {Value: types.NewStringDatum("{{$unit}}"), RetType: types.NewFieldType(mysql.TypeString)}}, - chunkSize: 128, - }, + {{- end }} {{- end }} {{- end }} {{ end }} @@ -818,8 +728,8 @@ var vecBuiltin{{.Category}}GeneratedCases = map[string][]vecExprBenchCase{ // builtinDurationDurationTimeDiffSig {retEvalType: types.ETDuration, childrenTypes: []types.EvalType{types.ETDuration, types.ETDuration}}, // builtinDurationStringTimeDiffSig - {retEvalType: types.ETDuration, childrenTypes: []types.EvalType{types.ETDuration, types.ETString}, geners: []dataGenerator{nil, &dateTimeStrGener{Year: 2019, Month: 11, randGen: newDefaultRandGen()}}}, - {retEvalType: types.ETDuration, childrenTypes: []types.EvalType{types.ETDuration, types.ETString}, geners: []dataGenerator{nil, &dateTimeStrGener{Year: 2019, Month: 10, randGen: newDefaultRandGen()}}}, + {retEvalType: types.ETDuration, childrenTypes: []types.EvalType{types.ETDuration, types.ETString}, geners: []dataGenerator{nil, &dateTimeStrGener{Year: 2019, Month: 11, Fsp: 0, randGen: newDefaultRandGen()}}}, + {retEvalType: types.ETDuration, childrenTypes: []types.EvalType{types.ETDuration, types.ETString}, geners: []dataGenerator{nil, &dateTimeStrGener{Year: 2019, Month: 10, Fsp: 0, randGen: newDefaultRandGen()}}}, {retEvalType: types.ETDuration, childrenTypes: []types.EvalType{types.ETDuration, types.ETString}, geners: []dataGenerator{nil, &dateTimeStrGener{Year: 2019, Month: 10, Fsp: 4, randGen: newDefaultRandGen()}}}, // builtinTimeTimeTimeDiffSig {retEvalType: types.ETDuration, childrenTypes: []types.EvalType{types.ETDatetime, types.ETDatetime}, geners: []dataGenerator{&dateTimeGener{Year: 2019, Month: 10, randGen: newDefaultRandGen()}, &dateTimeGener{Year: 2019, Month: 10, randGen: newDefaultRandGen()}}}, @@ -827,15 +737,15 @@ var vecBuiltin{{.Category}}GeneratedCases = map[string][]vecExprBenchCase{ {retEvalType: types.ETDuration, childrenTypes: []types.EvalType{types.ETTimestamp, types.ETTimestamp}, geners: []dataGenerator{&dateTimeGener{Year: 2019, Month: 10, randGen: newDefaultRandGen()}, &dateTimeGener{Year: 2019, Month: 10, randGen: newDefaultRandGen()}}}, {retEvalType: types.ETDuration, childrenTypes: []types.EvalType{types.ETTimestamp, types.ETDatetime}, geners: []dataGenerator{&dateTimeGener{Year: 2019, Month: 10, randGen: newDefaultRandGen()}, &dateTimeGener{Year: 2019, Month: 10, randGen: newDefaultRandGen()}}}, // builtinTimeStringTimeDiffSig - {retEvalType: types.ETDuration, childrenTypes: []types.EvalType{types.ETDatetime, types.ETString}, geners: []dataGenerator{&dateTimeGener{Year: 2019, Month: 10, randGen: newDefaultRandGen()}, &dateTimeStrGener{Year: 2019, Month: 10, randGen: newDefaultRandGen()}}}, - {retEvalType: types.ETDuration, childrenTypes: []types.EvalType{types.ETTimestamp, types.ETString}, geners: []dataGenerator{&dateTimeGener{Year: 2019, Month: 10, randGen: newDefaultRandGen()}, &dateTimeStrGener{Year: 2019, Month: 10, randGen: newDefaultRandGen()}}}, + {retEvalType: types.ETDuration, childrenTypes: []types.EvalType{types.ETDatetime, types.ETString}, geners: []dataGenerator{&dateTimeGener{Year: 2019, Month: 10, randGen: newDefaultRandGen()}, &dateTimeStrGener{Year: 2019, Month: 10, Fsp: 0, randGen: newDefaultRandGen()}}}, + {retEvalType: types.ETDuration, childrenTypes: []types.EvalType{types.ETTimestamp, types.ETString}, geners: []dataGenerator{&dateTimeGener{Year: 2019, Month: 10, randGen: newDefaultRandGen()}, &dateTimeStrGener{Year: 2019, Month: 10, Fsp: 0, randGen: newDefaultRandGen()}}}, // builtinStringDurationTimeDiffSig - {retEvalType: types.ETDuration, childrenTypes: []types.EvalType{types.ETString, types.ETDuration}, geners: []dataGenerator{&dateTimeStrGener{Year: 2019, Month: 10, randGen: newDefaultRandGen()}, nil}}, + {retEvalType: types.ETDuration, childrenTypes: []types.EvalType{types.ETString, types.ETDuration}, geners: []dataGenerator{&dateTimeStrGener{Year: 2019, Month: 10, Fsp: 0, randGen: newDefaultRandGen()}, nil}}, // builtinStringTimeTimeDiffSig - {retEvalType: types.ETDuration, childrenTypes: []types.EvalType{types.ETString, types.ETDatetime}, geners: []dataGenerator{&dateTimeStrGener{Year: 2019, Month: 10, randGen: newDefaultRandGen()}, &dateTimeGener{Year: 2019, Month: 10, randGen: newDefaultRandGen()}}}, - {retEvalType: types.ETDuration, childrenTypes: []types.EvalType{types.ETString, types.ETTimestamp}, geners: []dataGenerator{&dateTimeStrGener{Year: 2019, Month: 10, randGen: newDefaultRandGen()}, &dateTimeGener{Year: 2019, Month: 10, randGen: newDefaultRandGen()}}}, + {retEvalType: types.ETDuration, childrenTypes: []types.EvalType{types.ETString, types.ETDatetime}, geners: []dataGenerator{&dateTimeStrGener{Year: 2019, Month: 10, Fsp: 0, randGen: newDefaultRandGen()}, &dateTimeGener{Year: 2019, Month: 10, randGen: newDefaultRandGen()}}}, + {retEvalType: types.ETDuration, childrenTypes: []types.EvalType{types.ETString, types.ETTimestamp}, geners: []dataGenerator{&dateTimeStrGener{Year: 2019, Month: 10, Fsp: 0, randGen: newDefaultRandGen()}, &dateTimeGener{Year: 2019, Month: 10, randGen: newDefaultRandGen()}}}, // builtinStringStringTimeDiffSig - {retEvalType: types.ETDuration, childrenTypes: []types.EvalType{types.ETString, types.ETString}, geners: []dataGenerator{&dateTimeStrGener{Year: 2019, Month: 10, randGen: newDefaultRandGen()}, &dateTimeStrGener{Year: 2019, Month: 10, randGen: newDefaultRandGen()}}}, + {retEvalType: types.ETDuration, childrenTypes: []types.EvalType{types.ETString, types.ETString}, geners: []dataGenerator{&dateTimeStrGener{Year: 2019, Month: 10, Fsp: 0, randGen: newDefaultRandGen()}, &dateTimeStrGener{Year: 2019, Month: 10, Fsp: 0, randGen: newDefaultRandGen()}}}, }, {{ end }} {{- if eq .FuncName "AddDate" }} @@ -909,15 +819,27 @@ var timeDiffSigsTmpl = []sig{ {SigName: "builtinTimeTimeTimeDiffSig", TypeA: TypeDatetime, TypeB: TypeDatetime, Output: TypeDuration}, } -var addDataSigsTmpl = []sig{ +var addDateSigsTmpl = []sig{ {SigName: "builtinAddDateStringStringSig", TypeA: TypeString, TypeB: TypeString, Output: TypeString}, {SigName: "builtinAddDateStringIntSig", TypeA: TypeString, TypeB: TypeInt, Output: TypeString}, {SigName: "builtinAddDateStringRealSig", TypeA: TypeString, TypeB: TypeReal, Output: TypeString}, {SigName: "builtinAddDateStringDecimalSig", TypeA: TypeString, TypeB: TypeDecimal, Output: TypeString}, - {SigName: "builtinAddDateIntStringSig", TypeA: TypeInt, TypeB: TypeString, Output: TypeDatetime}, - {SigName: "builtinAddDateIntIntSig", TypeA: TypeInt, TypeB: TypeInt, Output: TypeDatetime}, - {SigName: "builtinAddDateIntRealSig", TypeA: TypeInt, TypeB: TypeReal, Output: TypeDatetime}, - {SigName: "builtinAddDateIntDecimalSig", TypeA: TypeInt, TypeB: TypeDecimal, Output: TypeDatetime}, + {SigName: "builtinAddDateIntStringSig", TypeA: TypeInt, TypeB: TypeString, Output: TypeString}, + {SigName: "builtinAddDateIntIntSig", TypeA: TypeInt, TypeB: TypeInt, Output: TypeString}, + {SigName: "builtinAddDateIntRealSig", TypeA: TypeInt, TypeB: TypeReal, Output: TypeString}, + {SigName: "builtinAddDateIntDecimalSig", TypeA: TypeInt, TypeB: TypeDecimal, Output: TypeString}, + {SigName: "builtinAddDateRealStringSig", TypeA: TypeReal, TypeB: TypeString, Output: TypeString}, + {SigName: "builtinAddDateRealIntSig", TypeA: TypeReal, TypeB: TypeInt, Output: TypeString}, + {SigName: "builtinAddDateRealRealSig", TypeA: TypeReal, TypeB: TypeReal, Output: TypeString}, + {SigName: "builtinAddDateRealDecimalSig", TypeA: TypeReal, TypeB: TypeDecimal, Output: TypeString}, + {SigName: "builtinAddDateDecimalStringSig", TypeA: TypeDecimal, TypeB: TypeString, Output: TypeString}, + {SigName: "builtinAddDateDecimalIntSig", TypeA: TypeDecimal, TypeB: TypeInt, Output: TypeString}, + {SigName: "builtinAddDateDecimalRealSig", TypeA: TypeDecimal, TypeB: TypeReal, Output: TypeString}, + {SigName: "builtinAddDateDecimalDecimalSig", TypeA: TypeDecimal, TypeB: TypeDecimal, Output: TypeString}, + {SigName: "builtinAddDateDatetimeStringSig", TypeA: TypeDatetime, TypeB: TypeString, Output: TypeDatetime, FieldTypeA: "Date", FieldTypeB: "String"}, + {SigName: "builtinAddDateDatetimeIntSig", TypeA: TypeDatetime, TypeB: TypeInt, Output: TypeDatetime, FieldTypeA: "Date", FieldTypeB: "Longlong"}, + {SigName: "builtinAddDateDatetimeRealSig", TypeA: TypeDatetime, TypeB: TypeReal, Output: TypeDatetime, FieldTypeA: "Date", FieldTypeB: "Double"}, + {SigName: "builtinAddDateDatetimeDecimalSig", TypeA: TypeDatetime, TypeB: TypeDecimal, Output: TypeDatetime, FieldTypeA: "Date", FieldTypeB: "NewDecimal"}, {SigName: "builtinAddDateDatetimeStringSig", TypeA: TypeDatetime, TypeB: TypeString, Output: TypeDatetime}, {SigName: "builtinAddDateDatetimeIntSig", TypeA: TypeDatetime, TypeB: TypeInt, Output: TypeDatetime}, {SigName: "builtinAddDateDatetimeRealSig", TypeA: TypeDatetime, TypeB: TypeReal, Output: TypeDatetime}, @@ -926,17 +848,33 @@ var addDataSigsTmpl = []sig{ {SigName: "builtinAddDateDurationIntSig", TypeA: TypeDuration, TypeB: TypeInt, Output: TypeDuration}, {SigName: "builtinAddDateDurationRealSig", TypeA: TypeDuration, TypeB: TypeReal, Output: TypeDuration}, {SigName: "builtinAddDateDurationDecimalSig", TypeA: TypeDuration, TypeB: TypeDecimal, Output: TypeDuration}, + {SigName: "builtinAddDateDurationStringSig", TypeA: TypeDuration, TypeB: TypeString, Output: TypeDatetime}, + {SigName: "builtinAddDateDurationIntSig", TypeA: TypeDuration, TypeB: TypeInt, Output: TypeDatetime}, + {SigName: "builtinAddDateDurationRealSig", TypeA: TypeDuration, TypeB: TypeReal, Output: TypeDatetime}, + {SigName: "builtinAddDateDurationDecimalSig", TypeA: TypeDuration, TypeB: TypeDecimal, Output: TypeDatetime}, } -var subDataSigsTmpl = []sig{ +var subDateSigsTmpl = []sig{ {SigName: "builtinSubDateStringStringSig", TypeA: TypeString, TypeB: TypeString, Output: TypeString}, {SigName: "builtinSubDateStringIntSig", TypeA: TypeString, TypeB: TypeInt, Output: TypeString}, {SigName: "builtinSubDateStringRealSig", TypeA: TypeString, TypeB: TypeReal, Output: TypeString}, {SigName: "builtinSubDateStringDecimalSig", TypeA: TypeString, TypeB: TypeDecimal, Output: TypeString}, - {SigName: "builtinSubDateIntStringSig", TypeA: TypeInt, TypeB: TypeString, Output: TypeDatetime}, - {SigName: "builtinSubDateIntIntSig", TypeA: TypeInt, TypeB: TypeInt, Output: TypeDatetime}, - {SigName: "builtinSubDateIntRealSig", TypeA: TypeInt, TypeB: TypeReal, Output: TypeDatetime}, - {SigName: "builtinSubDateIntDecimalSig", TypeA: TypeInt, TypeB: TypeDecimal, Output: TypeDatetime}, + {SigName: "builtinSubDateIntStringSig", TypeA: TypeInt, TypeB: TypeString, Output: TypeString}, + {SigName: "builtinSubDateIntIntSig", TypeA: TypeInt, TypeB: TypeInt, Output: TypeString}, + {SigName: "builtinSubDateIntRealSig", TypeA: TypeInt, TypeB: TypeReal, Output: TypeString}, + {SigName: "builtinSubDateIntDecimalSig", TypeA: TypeInt, TypeB: TypeDecimal, Output: TypeString}, + {SigName: "builtinSubDateRealStringSig", TypeA: TypeReal, TypeB: TypeString, Output: TypeString}, + {SigName: "builtinSubDateRealIntSig", TypeA: TypeReal, TypeB: TypeInt, Output: TypeString}, + {SigName: "builtinSubDateRealRealSig", TypeA: TypeReal, TypeB: TypeReal, Output: TypeString}, + {SigName: "builtinSubDateRealDecimalSig", TypeA: TypeReal, TypeB: TypeDecimal, Output: TypeString}, + {SigName: "builtinSubDateDecimalStringSig", TypeA: TypeDecimal, TypeB: TypeString, Output: TypeString}, + {SigName: "builtinSubDateDecimalIntSig", TypeA: TypeDecimal, TypeB: TypeInt, Output: TypeString}, + {SigName: "builtinSubDateDecimalRealSig", TypeA: TypeDecimal, TypeB: TypeReal, Output: TypeString}, + {SigName: "builtinSubDateDecimalDecimalSig", TypeA: TypeDecimal, TypeB: TypeDecimal, Output: TypeString}, + {SigName: "builtinSubDateDatetimeStringSig", TypeA: TypeDatetime, TypeB: TypeString, Output: TypeDatetime, FieldTypeA: "Date", FieldTypeB: "String"}, + {SigName: "builtinSubDateDatetimeIntSig", TypeA: TypeDatetime, TypeB: TypeInt, Output: TypeDatetime, FieldTypeA: "Date", FieldTypeB: "Longlong"}, + {SigName: "builtinSubDateDatetimeRealSig", TypeA: TypeDatetime, TypeB: TypeReal, Output: TypeDatetime, FieldTypeA: "Date", FieldTypeB: "Double"}, + {SigName: "builtinSubDateDatetimeDecimalSig", TypeA: TypeDatetime, TypeB: TypeDecimal, Output: TypeDatetime, FieldTypeA: "Date", FieldTypeB: "NewDecimal"}, {SigName: "builtinSubDateDatetimeStringSig", TypeA: TypeDatetime, TypeB: TypeString, Output: TypeDatetime}, {SigName: "builtinSubDateDatetimeIntSig", TypeA: TypeDatetime, TypeB: TypeInt, Output: TypeDatetime}, {SigName: "builtinSubDateDatetimeRealSig", TypeA: TypeDatetime, TypeB: TypeReal, Output: TypeDatetime}, @@ -945,6 +883,10 @@ var subDataSigsTmpl = []sig{ {SigName: "builtinSubDateDurationIntSig", TypeA: TypeDuration, TypeB: TypeInt, Output: TypeDuration}, {SigName: "builtinSubDateDurationRealSig", TypeA: TypeDuration, TypeB: TypeReal, Output: TypeDuration}, {SigName: "builtinSubDateDurationDecimalSig", TypeA: TypeDuration, TypeB: TypeDecimal, Output: TypeDuration}, + {SigName: "builtinSubDateDurationStringSig", TypeA: TypeDuration, TypeB: TypeString, Output: TypeDatetime}, + {SigName: "builtinSubDateDurationIntSig", TypeA: TypeDuration, TypeB: TypeInt, Output: TypeDatetime}, + {SigName: "builtinSubDateDurationRealSig", TypeA: TypeDuration, TypeB: TypeReal, Output: TypeDatetime}, + {SigName: "builtinSubDateDurationDecimalSig", TypeA: TypeDuration, TypeB: TypeDecimal, Output: TypeDatetime}, } type sig struct { @@ -969,8 +911,8 @@ var tmplVal = struct { {FuncName: "AddTime", Sigs: addTimeSigsTmpl}, {FuncName: "SubTime", Sigs: subTimeSigsTmpl}, {FuncName: "TimeDiff", Sigs: timeDiffSigsTmpl}, - {FuncName: "AddDate", Sigs: addDataSigsTmpl}, - {FuncName: "SubDate", Sigs: subDataSigsTmpl}, + {FuncName: "AddDate", Sigs: addDateSigsTmpl}, + {FuncName: "SubDate", Sigs: subDateSigsTmpl}, }, } @@ -988,14 +930,6 @@ func generateDotGo(fileName string) error { if err != nil { return err } - err = addOrSubDate.Execute(w, function{FuncName: "AddDate", Sigs: addDataSigsTmpl}) - if err != nil { - return err - } - err = addOrSubDate.Execute(w, function{FuncName: "SubDate", Sigs: subDataSigsTmpl}) - if err != nil { - return err - } data, err := format.Source(w.Bytes()) if err != nil { log.Println("[Warn]", fileName+": gofmt failed", err) diff --git a/expression/integration_serial_test.go b/expression/integration_serial_test.go index c0c2c3b8e7d91..fc4ecda462208 100644 --- a/expression/integration_serial_test.go +++ b/expression/integration_serial_test.go @@ -812,9 +812,16 @@ func TestCollateStringFunction(t *testing.T) { tk.MustQuery("select locate('S', 'a' collate utf8mb4_general_ci);").Check(testkit.Rows("0")) // MySQL return 0 here, I believe it is a bug in MySQL since 'ß' == 's' under utf8mb4_general_ci collation. tk.MustQuery("select locate('ß', 's' collate utf8mb4_general_ci);").Check(testkit.Rows("1")) + tk.MustQuery("select locate('world', 'hello world' collate utf8mb4_general_ci);").Check(testkit.Rows("7")) + tk.MustQuery("select locate(' ', 'hello world' collate utf8mb4_general_ci);").Check(testkit.Rows("6")) + tk.MustQuery("select locate(' ', 'hello world' collate utf8mb4_general_ci);").Check(testkit.Rows("0")) + tk.MustQuery("select locate('S', 's' collate utf8mb4_unicode_ci);").Check(testkit.Rows("1")) tk.MustQuery("select locate('S', 'a' collate utf8mb4_unicode_ci);").Check(testkit.Rows("0")) tk.MustQuery("select locate('ß', 'ss' collate utf8mb4_unicode_ci);").Check(testkit.Rows("1")) + tk.MustQuery("select locate('world', 'hello world' collate utf8mb4_unicode_ci);").Check(testkit.Rows("7")) + tk.MustQuery("select locate(' ', 'hello world' collate utf8mb4_unicode_ci);").Check(testkit.Rows("6")) + tk.MustQuery("select locate(' ', 'hello world' collate utf8mb4_unicode_ci);").Check(testkit.Rows("0")) tk.MustExec("truncate table t1;") tk.MustExec("insert into t1 (a) values (1);") @@ -2380,6 +2387,12 @@ func TestTimeBuiltin(t *testing.T) { // for unix_timestamp tk.MustExec("SET time_zone = '+00:00';") + tk.MustQuery("SELECT UNIX_TIMESTAMP('1970-01-01 00:00:00.000001');").Check(testkit.Rows("0.000000")) + tk.MustQuery("SELECT UNIX_TIMESTAMP('1970-01-01 00:00:00.999999');").Check(testkit.Rows("0.000000")) + tk.MustQuery("SELECT UNIX_TIMESTAMP('1970-01-01 00:00:01.000000');").Check(testkit.Rows("1.000000")) + tk.MustQuery("SELECT UNIX_TIMESTAMP('2038-01-19 03:14:07.999999');").Check(testkit.Rows("2147483647.999999")) + tk.MustQuery("SELECT UNIX_TIMESTAMP('2038-01-19 03:14:08.000000');").Check(testkit.Rows("0.000000")) + result = tk.MustQuery("SELECT UNIX_TIMESTAMP(151113);") result.Check(testkit.Rows("1447372800")) result = tk.MustQuery("SELECT UNIX_TIMESTAMP(20151113);") @@ -2657,6 +2670,7 @@ func TestTimeBuiltin(t *testing.T) { {"\"2011-11-11 00:00:00\"", "10", "HOUR", "2011-11-11 10:00:00", "2011-11-10 14:00:00"}, {"\"2011-11-11 00:00:00\"", "10", "MINUTE", "2011-11-11 00:10:00", "2011-11-10 23:50:00"}, {"\"2011-11-11 00:00:00\"", "10", "SECOND", "2011-11-11 00:00:10", "2011-11-10 23:59:50"}, + {"\"2011-11-11 00:00:00.500\"", "500000", "MICROSECOND", "2011-11-11 00:00:01", "2011-11-11 00:00:00"}, {"\"2011-11-11\"", "\"abc1000\"", "MICROSECOND", "2011-11-11 00:00:00", "2011-11-11 00:00:00"}, {"\"20111111 10:10:10\"", "\"1\"", "DAY", "", ""}, @@ -2665,6 +2679,7 @@ func TestTimeBuiltin(t *testing.T) { {"\"2011-11-11\"", "\"10:10:10\"", "MINUTE_MICROSECOND", "2011-11-11 00:10:10.100000", "2011-11-10 23:49:49.900000"}, {"cast(\"2011-11-11\" as datetime)", "\"10:10:10\"", "MINUTE_MICROSECOND", "2011-11-11 00:10:10.100000", "2011-11-10 23:49:49.900000"}, + {"cast(\"2011-11-11\" as datetime)", "\"1000000\"", "MICROSECOND", "2011-11-11 00:00:01.000000", "2011-11-10 23:59:59.000000"}, {"cast(\"2011-11-11 00:00:00\" as datetime)", "1", "DAY", "2011-11-12 00:00:00", "2011-11-10 00:00:00"}, {"cast(\"2011-11-11 00:00:00\" as datetime)", "10", "HOUR", "2011-11-11 10:00:00", "2011-11-10 14:00:00"}, {"cast(\"2011-11-11 00:00:00\" as datetime)", "10", "MINUTE", "2011-11-11 00:10:00", "2011-11-10 23:50:00"}, @@ -2673,9 +2688,10 @@ func TestTimeBuiltin(t *testing.T) { {"cast(\"2011-11-11 00:00:00\" as datetime)", "\"1\"", "DAY", "2011-11-12 00:00:00", "2011-11-10 00:00:00"}, {"cast(\"2011-11-11 00:00:00\" as datetime)", "\"10\"", "HOUR", "2011-11-11 10:00:00", "2011-11-10 14:00:00"}, {"cast(\"2011-11-11 00:00:00\" as datetime)", "\"10\"", "MINUTE", "2011-11-11 00:10:00", "2011-11-10 23:50:00"}, - {"cast(\"2011-11-11 00:00:00\" as datetime)", "\"10\"", "SECOND", "2011-11-11 00:00:10", "2011-11-10 23:59:50"}, + {"cast(\"2011-11-11 00:00:00\" as datetime)", "\"10\"", "SECOND", "2011-11-11 00:00:10.000000", "2011-11-10 23:59:50.000000"}, {"cast(\"2011-11-11\" as date)", "\"10:10:10\"", "MINUTE_MICROSECOND", "2011-11-11 00:10:10.100000", "2011-11-10 23:49:49.900000"}, + {"cast(\"2011-11-11\" as date)", "\"1000000\"", "MINUTE_MICROSECOND", "2011-11-11 00:00:01.000000", "2011-11-10 23:59:59.000000"}, {"cast(\"2011-11-11 00:00:00\" as date)", "1", "DAY", "2011-11-12", "2011-11-10"}, {"cast(\"2011-11-11 00:00:00\" as date)", "10", "HOUR", "2011-11-11 10:00:00", "2011-11-10 14:00:00"}, {"cast(\"2011-11-11 00:00:00\" as date)", "10", "MINUTE", "2011-11-11 00:10:00", "2011-11-10 23:50:00"}, @@ -2684,7 +2700,7 @@ func TestTimeBuiltin(t *testing.T) { {"cast(\"2011-11-11 00:00:00\" as date)", "\"1\"", "DAY", "2011-11-12", "2011-11-10"}, {"cast(\"2011-11-11 00:00:00\" as date)", "\"10\"", "HOUR", "2011-11-11 10:00:00", "2011-11-10 14:00:00"}, {"cast(\"2011-11-11 00:00:00\" as date)", "\"10\"", "MINUTE", "2011-11-11 00:10:00", "2011-11-10 23:50:00"}, - {"cast(\"2011-11-11 00:00:00\" as date)", "\"10\"", "SECOND", "2011-11-11 00:00:10", "2011-11-10 23:59:50"}, + {"cast(\"2011-11-11 00:00:00\" as date)", "\"10\"", "SECOND", "2011-11-11 00:00:10.000000", "2011-11-10 23:59:50.000000"}, // interval decimal support {"\"2011-01-01 00:00:00\"", "10.10", "YEAR_MONTH", "2021-11-01 00:00:00", "2000-03-01 00:00:00"}, @@ -2708,6 +2724,9 @@ func TestTimeBuiltin(t *testing.T) { {"\"2011-01-01 00:00:00\"", "10.10", "SECOND", "2011-01-01 00:00:10.100000", "2010-12-31 23:59:49.900000"}, {"\"2011-01-01 00:00:00\"", "10.10", "MICROSECOND", "2011-01-01 00:00:00.000010", "2010-12-31 23:59:59.999990"}, {"\"2011-01-01 00:00:00\"", "10.90", "MICROSECOND", "2011-01-01 00:00:00.000011", "2010-12-31 23:59:59.999989"}, + {"cast(\"2011-01-01\" as date)", "1.1", "SECOND", "2011-01-01 00:00:01.1", "2010-12-31 23:59:58.9"}, + {"cast(\"2011-01-01\" as datetime)", "1.1", "SECOND", "2011-01-01 00:00:01.1", "2010-12-31 23:59:58.9"}, + {"cast(\"2011-01-01\" as datetime(3))", "1.1", "SECOND", "2011-01-01 00:00:01.100", "2010-12-31 23:59:58.900"}, {"\"2009-01-01\"", "6/4", "HOUR_MINUTE", "2009-01-04 12:20:00", "2008-12-28 11:40:00"}, {"\"2009-01-01\"", "6/0", "HOUR_MINUTE", "", ""}, @@ -2726,6 +2745,65 @@ func TestTimeBuiltin(t *testing.T) { result = tk.MustQuery(subDate) result.Check(testkit.Rows(tc.SubResult)) } + + // Customized check for the cases of adddate(time, ...) - it returns datetime with current date padded. + // 1. Check if the result contains space, that is, it must contain YMD part. + // 2. Check if the result's suffix matches expected, that is, the HMS part is an exact match. + checkHmsMatch := func(actual []string, expected []interface{}) bool { + return strings.Contains(actual[0], " ") && strings.HasSuffix(actual[0], expected[0].(string)) + } + + // for date_add/sub(duration, ...) + dateAddSubDurationAnyTests := []struct { + Date string + Interval string + Unit string + AddResult string + SubResult string + checkHmsOnly bool // Duration + day returns datetime with current date padded, only check HMS part for them. + }{ + {"cast('01:02:03' as time)", "'1000'", "MICROSECOND", "01:02:03.001000", "01:02:02.999000", false}, + {"cast('01:02:03' as time)", "1000", "MICROSECOND", "01:02:03.001000", "01:02:02.999000", false}, + {"cast('01:02:03' as time)", "'1'", "SECOND", "01:02:04.000000", "01:02:02.000000", false}, + {"cast('01:02:03' as time)", "1", "SECOND", "01:02:04", "01:02:02", false}, + {"cast('01:02:03' as time)", "'1.1'", "SECOND", "01:02:04.100000", "01:02:01.900000", false}, + {"cast('01:02:03' as time)", "1.1", "SECOND", "01:02:04.1", "01:02:01.9", false}, + {"cast('01:02:03' as time(3))", "1.1", "SECOND", "01:02:04.100", "01:02:01.900", false}, + {"cast('01:02:03' as time)", "cast(1.1 as decimal(10, 3))", "SECOND", "01:02:04.100", "01:02:01.900", false}, + {"cast('01:02:03' as time)", "cast('1.5' as double)", "SECOND", "01:02:04.500000", "01:02:01.500000", false}, + {"cast('01:02:03' as time)", "1", "DAY_MICROSECOND", "01:02:03.100000", "01:02:02.900000", false}, + {"cast('01:02:03' as time)", "1.1", "DAY_MICROSECOND", "01:02:04.100000", "01:02:01.900000", false}, + {"cast('01:02:03' as time)", "100", "DAY_MICROSECOND", "01:02:03.100000", "01:02:02.900000", false}, + {"cast('01:02:03' as time)", "1000000", "DAY_MICROSECOND", "01:02:04.000000", "01:02:02.000000", false}, + {"cast('01:02:03' as time)", "1", "DAY_SECOND", "01:02:04", "01:02:02", true}, + {"cast('01:02:03' as time)", "1.1", "DAY_SECOND", "01:03:04", "01:01:02", true}, + {"cast('01:02:03' as time)", "1", "DAY_MINUTE", "01:03:03", "01:01:03", true}, + {"cast('01:02:03' as time)", "1.1", "DAY_MINUTE", "02:03:03", "00:01:03", true}, + {"cast('01:02:03' as time)", "1", "DAY_HOUR", "02:02:03", "00:02:03", true}, + {"cast('01:02:03' as time)", "1.1", "DAY_HOUR", "02:02:03", "00:02:03", true}, + {"cast('01:02:03' as time)", "1", "DAY", "01:02:03", "01:02:03", true}, + {"cast('01:02:03' as time)", "1", "WEEK", "01:02:03", "01:02:03", true}, + {"cast('01:02:03' as time)", "1", "MONTH", "01:02:03", "01:02:03", true}, + {"cast('01:02:03' as time)", "1", "QUARTER", "01:02:03", "01:02:03", true}, + {"cast('01:02:03' as time)", "1", "YEAR", "01:02:03", "01:02:03", true}, + {"cast('01:02:03' as time)", "1", "YEAR_MONTH", "01:02:03", "01:02:03", true}, + } + for _, tc := range dateAddSubDurationAnyTests { + addDate := fmt.Sprintf("select date_add(%s, interval %s %s);", tc.Date, tc.Interval, tc.Unit) + subDate := fmt.Sprintf("select date_sub(%s, interval %s %s);", tc.Date, tc.Interval, tc.Unit) + if tc.checkHmsOnly { + result = tk.MustQuery(addDate) + result.CheckWithFunc(testkit.Rows(tc.AddResult), checkHmsMatch) + result = tk.MustQuery(subDate) + result.CheckWithFunc(testkit.Rows(tc.SubResult), checkHmsMatch) + } else { + result = tk.MustQuery(addDate) + result.Check(testkit.Rows(tc.AddResult)) + result = tk.MustQuery(subDate) + result.Check(testkit.Rows(tc.SubResult)) + } + } + tk.MustQuery(`select subdate(cast("2000-02-01" as datetime), cast(1 as decimal))`).Check(testkit.Rows("2000-01-31 00:00:00")) tk.MustQuery(`select subdate(cast("2000-02-01" as datetime), cast(null as decimal))`).Check(testkit.Rows("")) tk.MustQuery(`select subdate(cast(null as datetime), cast(1 as decimal))`).Check(testkit.Rows("")) @@ -2747,8 +2825,8 @@ func TestTimeBuiltin(t *testing.T) { tk.MustQuery(`select adddate(cast("2000-02-01" as datetime), cast("xxx" as SIGNED))`).Check(testkit.Rows("2000-02-01 00:00:00")) tk.MustQuery(`select adddate(cast("xxx" as datetime), cast(1 as SIGNED))`).Check(testkit.Rows("")) tk.MustQuery(`select adddate(20100101, cast(1 as decimal))`).Check(testkit.Rows("2010-01-02")) - tk.MustQuery(`select adddate(cast('10:10:10' as time), 1)`).Check(testkit.Rows("34:10:10")) - tk.MustQuery(`select adddate(cast('10:10:10' as time), cast(1 as decimal))`).Check(testkit.Rows("34:10:10")) + tk.MustQuery(`select adddate(cast('10:10:10' as time), 1)`).CheckWithFunc(testkit.Rows("10:10:10"), checkHmsMatch) + tk.MustQuery(`select adddate(cast('10:10:10' as time), cast(1 as decimal))`).CheckWithFunc(testkit.Rows("10:10:10"), checkHmsMatch) // for localtime, localtimestamp result = tk.MustQuery(`select localtime() = now(), localtime = now(), localtimestamp() = now(), localtimestamp = now()`) @@ -3747,6 +3825,13 @@ func TestSetVariables(t *testing.T) { _, err = tk.Exec("set @@global.max_prepared_stmt_count='';") require.Error(t, err) require.Error(t, err, variable.ErrWrongTypeForVar.GenWithStackByArgs("max_prepared_stmt_count").Error()) + + tk.MustQuery("select @@global.tidb_enable_concurrent_ddl").Check(testkit.Rows("1")) + require.True(t, variable.EnableConcurrentDDL.Load()) + tk.MustExec("set @@global.tidb_enable_concurrent_ddl=0") + tk.MustQuery("select @@global.tidb_enable_concurrent_ddl").Check(testkit.Rows("0")) + require.False(t, variable.EnableConcurrentDDL.Load()) + testkit.NewTestKit(t, store).MustQuery("select @@global.tidb_enable_concurrent_ddl").Check(testkit.Rows("0")) } func TestPreparePlanCache(t *testing.T) { diff --git a/expression/integration_test.go b/expression/integration_test.go index c3734a1a5c184..b3dc43fe084d1 100644 --- a/expression/integration_test.go +++ b/expression/integration_test.go @@ -1919,6 +1919,7 @@ func TestCompareBuiltin(t *testing.T) { tk.MustQuery(`select 1 < 17666000000000000000, 1 > 17666000000000000000, 1 = 17666000000000000000`).Check(testkit.Rows("1 0 0")) tk.MustExec("drop table if exists t") + // insert value at utc timezone tk.MustExec("set time_zone = '+00:00'") tk.MustExec("create table t(a timestamp)") @@ -3600,6 +3601,7 @@ func TestDateTimeAddReal(t *testing.T) { {`select date("1900-01-01") + interval 1.123456789e3 second;`, "1900-01-01 00:18:43.456789"}, {`SELECT "1900-01-01 00:18:43.456789" - INTERVAL 1.123456789e3 SECOND;`, "1900-01-01 00:00:00"}, {`SELECT 19000101001843.456789 - INTERVAL 1.123456789e3 SECOND;`, "1900-01-01 00:00:00"}, + {`SELECT 19000101000000.0005 + INTERVAL 0.0005 SECOND;`, "1900-01-01 00:00:00.001000"}, {`select date("1900-01-01") - interval 1.123456789e3 second;`, "1899-12-31 23:41:16.543211"}, {`select 19000101000000 - interval 1.123456789e3 second;`, "1899-12-31 23:41:16.543211"}, } @@ -3609,6 +3611,26 @@ func TestDateTimeAddReal(t *testing.T) { } } +func TestIssue30253(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + + tk := testkit.NewTestKit(t, store) + + cases := []struct { + sql string + result string + }{ + {`SELECT INTERVAL 1.123456789e3 SECOND + "1900-01-01 00:00:00"`, "1900-01-01 00:18:43.456789"}, + {`SELECT INTERVAL 1 Year + 19000101000000`, "1901-01-01 00:00:00"}, + {`select interval 6 month + date("1900-01-01")`, "1900-07-01"}, + {`select interval "5:2" MINUTE_SECOND + "1900-01-01"`, "1900-01-01 00:05:02"}, + } + + for _, c := range cases { + tk.MustQuery(c.sql).Check(testkit.Rows(c.result)) + } +} func TestIssue10181(t *testing.T) { store, clean := testkit.CreateMockStore(t) defer clean() @@ -6211,11 +6233,11 @@ func TestGlobalCacheCorrectness(t *testing.T) { defer clean() tk := testkit.NewTestKit(t, store) - tk.MustQuery("SHOW VARIABLES LIKE 'max_connections'").Check(testkit.Rows("max_connections 151")) + tk.MustQuery("SHOW VARIABLES LIKE 'max_connections'").Check(testkit.Rows("max_connections 0")) tk.MustExec("SET GLOBAL max_connections=1234") tk.MustQuery("SHOW VARIABLES LIKE 'max_connections'").Check(testkit.Rows("max_connections 1234")) // restore - tk.MustExec("SET GLOBAL max_connections=151") + tk.MustExec("SET GLOBAL max_connections=0") } func TestRedundantColumnResolve(t *testing.T) { @@ -7317,6 +7339,87 @@ func TestIssue34659(t *testing.T) { require.Equal(t, [][]interface{}{{"00:00:01.111111"}}, result) } +func TestIssue31799(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("drop table if exists t") + tk.MustExec("create table t(i int, c varchar(32))") + tk.MustExec("insert into t values(1, date_add(cast('2001-01-01 00:00:00' as datetime), interval 1 second))") + tk.MustExec("insert into t values(2, date_add(cast('2001-01-01 00:00:00' as datetime(6)), interval 1 second))") + tk.MustExec("insert into t values(3, date_add(cast('2001-01-01 00:00:00' as datetime), interval 1.1 second))") + tk.MustExec("insert into t values(4, date_add(cast('2001-01-01 00:00:00' as datetime(6)), interval 1.1 second))") + tk.MustExec("insert into t values(5, date_add(cast('00:00:00' as time), interval 1.1 second))") + tk.MustQuery("select c from t order by i").Check([][]interface{}{{"2001-01-01 00:00:01"}, {"2001-01-01 00:00:01.000000"}, {"2001-01-01 00:00:01.1"}, {"2001-01-01 00:00:01.100000"}, {"00:00:01.1"}}) + tk.MustExec("drop table t") +} + +func TestIssue31867(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + + tk := testkit.NewTestKit(t, store) + tk.MustExec("set time_zone = '+00:00'") + tk.MustExec("use test") + tk.MustExec("drop table if exists t") + tk.MustExec("create table t(ts timestamp(6) not null default current_timestamp(6) on update current_timestamp(6))") + tk.MustExec("insert into t values('1970-01-01 01:00:01.000000')") + tk.MustExec("insert into t values('1970-01-01 01:00:01.000001')") + tk.MustExec("insert into t values('1971-01-01 01:00:00.000000')") + tk.MustExec("insert into t values('1971-01-01 01:00:00.000001')") + tk.MustExec("insert into t values('2001-01-01 00:00:00.000000')") + tk.MustExec("insert into t values('2001-01-01 00:00:00.000001')") + tk.MustExec("insert into t values('2001-01-01 01:00:00.000000')") + tk.MustExec("insert into t values('2001-01-01 01:00:00.000001')") + tk.MustQuery("select date_add(ts, interval 1 minute) from t order by ts").Check([][]interface{}{ + {"1970-01-01 01:01:01.000000"}, + {"1970-01-01 01:01:01.000001"}, + {"1971-01-01 01:01:00.000000"}, + {"1971-01-01 01:01:00.000001"}, + {"2001-01-01 00:01:00.000000"}, + {"2001-01-01 00:01:00.000001"}, + {"2001-01-01 01:01:00.000000"}, + {"2001-01-01 01:01:00.000001"}, + }) + tk.MustQuery("select date_sub(ts, interval 1 minute) from t order by ts").Check([][]interface{}{ + {"1970-01-01 00:59:01.000000"}, + {"1970-01-01 00:59:01.000001"}, + {"1971-01-01 00:59:00.000000"}, + {"1971-01-01 00:59:00.000001"}, + {"2000-12-31 23:59:00.000000"}, + {"2000-12-31 23:59:00.000001"}, + {"2001-01-01 00:59:00.000000"}, + {"2001-01-01 00:59:00.000001"}, + }) + tk.MustExec("drop table t") +} + +func TestDateAddForNonExistingTimestamp(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + + tk := testkit.NewTestKit(t, store) + tk.MustExec("set time_zone = 'CET'") + tk.MustExec("use test") + tk.MustExec("drop table if exists t") + tk.MustExec("create table t(ts timestamp)") + tk.MustExec("set time_zone = 'UTC'") + tk.MustExec("insert into t values('2022-03-27 00:30:00')") + tk.MustExec("insert into t values('2022-10-30 00:30:00')") + tk.MustExec("insert into t values('2022-10-30 01:30:00')") + tk.MustExec("set time_zone = 'Europe/Amsterdam'") + // Non-existing CET timestamp. + tk.MustGetErrCode("insert into t values('2022-03-27 02:30:00')", errno.ErrTruncatedWrongValue) + tk.MustQuery("select date_add(ts, interval 1 hour) from t order by ts").Check([][]interface{}{ + {"2022-03-27 02:30:00"}, + {"2022-10-30 03:30:00"}, + {"2022-10-30 03:30:00"}, + }) + tk.MustExec("drop table t") +} + func TestImcompleteDateFunc(t *testing.T) { store, clean := testkit.CreateMockStore(t) defer clean() @@ -7344,5 +7447,4 @@ func TestImcompleteDateFunc(t *testing.T) { tk.MustQuery("select WEEKOFYEAR('1998-00-11')").Check(testkit.Rows("")) tk.MustQuery("select YEARWEEK('1998-10-00')").Check(testkit.Rows("")) tk.MustQuery("select YEARWEEK('1998-00-11')").Check(testkit.Rows("")) - } diff --git a/expression/typeinfer_test.go b/expression/typeinfer_test.go index 1a57938e3fa02..04b09303712af 100644 --- a/expression/typeinfer_test.go +++ b/expression/typeinfer_test.go @@ -104,6 +104,7 @@ func TestInferType(t *testing.T) { tests = append(tests, s.createTestCase4OpFuncs()...) tests = append(tests, s.createTestCase4OtherFuncs()...) tests = append(tests, s.createTestCase4TimeFuncs()...) + tests = append(tests, s.createTestCase4DateAddSubFuncs()...) tests = append(tests, s.createTestCase4LikeFuncs()...) tests = append(tests, s.createTestCase4Literals()...) tests = append(tests, s.createTestCase4JSONFuncs()...) @@ -1926,17 +1927,990 @@ func (s *InferTypeSuite) createTestCase4TimeFuncs() []typeInferTestCase { {"extract(day from c_char)", mysql.TypeLonglong, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxIntWidth, 0}, {"extract(hour from c_char)", mysql.TypeLonglong, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxIntWidth, 0}, + } +} - {"date_add('20121212', interval 1 day)", mysql.TypeVarString, charset.CharsetUTF8MB4, mysql.NotNullFlag, mysql.MaxDatetimeFullWidth, types.UnspecifiedLength}, - {"date_sub('20121212', interval 1 day)", mysql.TypeVarString, charset.CharsetUTF8MB4, mysql.NotNullFlag, mysql.MaxDatetimeFullWidth, types.UnspecifiedLength}, - {"date_add(c_datetime, interval 1 day)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 26, 6}, - {"date_sub(c_datetime, interval 1 day)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 26, 6}, - {"date_add(c_datetime, interval 1 hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 26, 6}, - {"date_sub(c_datetime, interval 1 hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 26, 6}, - {"date_add(c_date, interval 1 day)", mysql.TypeDate, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDateWidth, 0}, - {"date_sub(c_date, interval 1 day)", mysql.TypeDate, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDateWidth, 0}, - {"date_add(c_date, interval 1 hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 26, 6}, - {"date_sub(c_date, interval 1 hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 26, 6}, +func (s *InferTypeSuite) createTestCase4DateAddSubFuncs() []typeInferTestCase { + return []typeInferTestCase{ + // Legacy. + {"date_add('20121212', interval 1 day)", mysql.TypeVarString, charset.CharsetUTF8MB4, mysql.NotNullFlag, mysql.MaxDatetimeFullWidth, types.MinFsp}, + {"date_sub('20121212', interval 1 day)", mysql.TypeVarString, charset.CharsetUTF8MB4, mysql.NotNullFlag, mysql.MaxDatetimeFullWidth, types.MinFsp}, + {"date_add(c_datetime, interval 1 day)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_sub(c_datetime, interval 1 day)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval 1 hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_sub(c_datetime, interval 1 hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_date, interval 1 day)", mysql.TypeDate, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDateWidth, types.MinFsp}, + {"date_sub(c_date, interval 1 day)", mysql.TypeDate, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDateWidth, types.MinFsp}, + {"date_add(c_date, interval 1 hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_sub(c_date, interval 1 hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + + // date + microsecond. + {"date_add(c_date, interval c_char microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_date, interval c_varchar microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_date, interval c_int_d microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_date, interval c_bigint_d microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_date, interval c_double_d microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_date, interval c_decimal microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + + // date + second_microsecond. + {"date_add(c_date, interval c_char second_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_date, interval c_varchar second_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_date, interval c_int_d second_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_date, interval c_bigint_d second_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_date, interval c_double_d second_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_date, interval c_decimal second_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + + // date + minute_microsecond. + {"date_add(c_date, interval c_char minute_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_date, interval c_varchar minute_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_date, interval c_int_d minute_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_date, interval c_bigint_d minute_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_date, interval c_double_d minute_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_date, interval c_decimal minute_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + + // date + hour_microsecond. + {"date_add(c_date, interval c_char hour_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_date, interval c_varchar hour_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_date, interval c_int_d hour_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_date, interval c_bigint_d hour_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_date, interval c_double_d hour_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_date, interval c_decimal hour_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + + // date + day_microsecond. + {"date_add(c_date, interval c_char day_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_date, interval c_varchar day_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_date, interval c_int_d day_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_date, interval c_bigint_d day_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_date, interval c_double_d day_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_date, interval c_decimal day_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + + // date + second. + {"date_add(c_date, interval c_char second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_date, interval c_varchar second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_date, interval c_int_d second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_date, interval c_bigint_d second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_date, interval c_double_d second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_date, interval c_decimal second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 23, 3}, + + // date + minute_second. + {"date_add(c_date, interval c_char minute_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_date, interval c_varchar minute_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_date, interval c_int_d minute_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_date, interval c_bigint_d minute_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_date, interval c_double_d minute_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_date, interval c_decimal minute_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + + // date + hour_second. + {"date_add(c_date, interval c_char hour_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_date, interval c_varchar hour_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_date, interval c_int_d hour_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_date, interval c_bigint_d hour_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_date, interval c_double_d hour_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_date, interval c_decimal hour_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + + // date + day_second. + {"date_add(c_date, interval c_char day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_date, interval c_varchar day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_date, interval c_int_d day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_date, interval c_bigint_d day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_date, interval c_double_d day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_date, interval c_decimal day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + + // date + minute. + {"date_add(c_date, interval c_char minute)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_date, interval c_varchar minute)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_date, interval c_int_d minute)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_date, interval c_bigint_d minute)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_date, interval c_double_d minute)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_date, interval c_decimal minute)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + + // date + hour_minute. + {"date_add(c_date, interval c_char hour_minute)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_date, interval c_varchar hour_minute)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_date, interval c_int_d hour_minute)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_date, interval c_bigint_d hour_minute)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_date, interval c_double_d hour_minute)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_date, interval c_decimal hour_minute)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + + // date + day_minute. + {"date_add(c_date, interval c_char day_minute)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_date, interval c_varchar day_minute)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_date, interval c_int_d day_minute)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_date, interval c_bigint_d day_minute)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_date, interval c_double_d day_minute)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_date, interval c_decimal day_minute)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + + // date + hour. + {"date_add(c_date, interval c_char hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_date, interval c_varchar hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_date, interval c_int_d hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_date, interval c_bigint_d hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_date, interval c_double_d hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_date, interval c_decimal hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + + // date + day_hour. + {"date_add(c_date, interval c_char day_hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_date, interval c_varchar day_hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_date, interval c_int_d day_hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_date, interval c_bigint_d day_hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_date, interval c_double_d day_hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_date, interval c_decimal day_hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + + // date + day. + {"date_add(c_date, interval c_char day)", mysql.TypeDate, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDateWidth, types.MinFsp}, + {"date_add(c_date, interval c_varchar day)", mysql.TypeDate, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDateWidth, types.MinFsp}, + {"date_add(c_date, interval c_int_d day)", mysql.TypeDate, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDateWidth, types.MinFsp}, + {"date_add(c_date, interval c_bigint_d day)", mysql.TypeDate, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDateWidth, types.MinFsp}, + {"date_add(c_date, interval c_double_d day)", mysql.TypeDate, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDateWidth, types.MinFsp}, + {"date_add(c_date, interval c_decimal day)", mysql.TypeDate, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDateWidth, types.MinFsp}, + + // date + week. + {"date_add(c_date, interval c_char week)", mysql.TypeDate, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDateWidth, types.MinFsp}, + {"date_add(c_date, interval c_varchar week)", mysql.TypeDate, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDateWidth, types.MinFsp}, + {"date_add(c_date, interval c_int_d week)", mysql.TypeDate, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDateWidth, types.MinFsp}, + {"date_add(c_date, interval c_bigint_d week)", mysql.TypeDate, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDateWidth, types.MinFsp}, + {"date_add(c_date, interval c_double_d week)", mysql.TypeDate, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDateWidth, types.MinFsp}, + {"date_add(c_date, interval c_decimal week)", mysql.TypeDate, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDateWidth, types.MinFsp}, + + // date + month. + {"date_add(c_date, interval c_char month)", mysql.TypeDate, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDateWidth, types.MinFsp}, + {"date_add(c_date, interval c_varchar month)", mysql.TypeDate, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDateWidth, types.MinFsp}, + {"date_add(c_date, interval c_int_d month)", mysql.TypeDate, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDateWidth, types.MinFsp}, + {"date_add(c_date, interval c_bigint_d month)", mysql.TypeDate, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDateWidth, types.MinFsp}, + {"date_add(c_date, interval c_double_d month)", mysql.TypeDate, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDateWidth, types.MinFsp}, + {"date_add(c_date, interval c_decimal month)", mysql.TypeDate, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDateWidth, types.MinFsp}, + + // date + year_month. + {"date_add(c_date, interval c_char year_month)", mysql.TypeDate, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDateWidth, types.MinFsp}, + {"date_add(c_date, interval c_varchar year_month)", mysql.TypeDate, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDateWidth, types.MinFsp}, + {"date_add(c_date, interval c_int_d year_month)", mysql.TypeDate, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDateWidth, types.MinFsp}, + {"date_add(c_date, interval c_bigint_d year_month)", mysql.TypeDate, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDateWidth, types.MinFsp}, + {"date_add(c_date, interval c_double_d year_month)", mysql.TypeDate, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDateWidth, types.MinFsp}, + {"date_add(c_date, interval c_decimal year_month)", mysql.TypeDate, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDateWidth, types.MinFsp}, + + // date + quarter. + {"date_add(c_date, interval c_char quarter)", mysql.TypeDate, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDateWidth, types.MinFsp}, + {"date_add(c_date, interval c_varchar quarter)", mysql.TypeDate, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDateWidth, types.MinFsp}, + {"date_add(c_date, interval c_int_d quarter)", mysql.TypeDate, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDateWidth, types.MinFsp}, + {"date_add(c_date, interval c_bigint_d quarter)", mysql.TypeDate, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDateWidth, types.MinFsp}, + {"date_add(c_date, interval c_double_d quarter)", mysql.TypeDate, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDateWidth, types.MinFsp}, + {"date_add(c_date, interval c_decimal quarter)", mysql.TypeDate, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDateWidth, types.MinFsp}, + + // date + year. + {"date_add(c_date, interval c_char year)", mysql.TypeDate, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDateWidth, types.MinFsp}, + {"date_add(c_date, interval c_varchar year)", mysql.TypeDate, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDateWidth, types.MinFsp}, + {"date_add(c_date, interval c_int_d year)", mysql.TypeDate, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDateWidth, types.MinFsp}, + {"date_add(c_date, interval c_bigint_d year)", mysql.TypeDate, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDateWidth, types.MinFsp}, + {"date_add(c_date, interval c_double_d year)", mysql.TypeDate, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDateWidth, types.MinFsp}, + {"date_add(c_date, interval c_decimal year)", mysql.TypeDate, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDateWidth, types.MinFsp}, + + // time(3) + microsecond. + {"date_add(c_time, interval c_char microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + {"date_add(c_time, interval c_varchar microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + {"date_add(c_time, interval c_int_d microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + {"date_add(c_time, interval c_bigint_d microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + {"date_add(c_time, interval c_double_d microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + {"date_add(c_time, interval c_decimal microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + + // time(3) + second_microsecond. + {"date_add(c_time, interval c_char second_microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + {"date_add(c_time, interval c_varchar second_microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + {"date_add(c_time, interval c_int_d second_microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + {"date_add(c_time, interval c_bigint_d second_microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + {"date_add(c_time, interval c_double_d second_microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + {"date_add(c_time, interval c_decimal second_microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + + // time(3) + minute_microsecond. + {"date_add(c_time, interval c_char minute_microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + {"date_add(c_time, interval c_varchar minute_microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + {"date_add(c_time, interval c_int_d minute_microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + {"date_add(c_time, interval c_bigint_d minute_microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + {"date_add(c_time, interval c_double_d minute_microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + {"date_add(c_time, interval c_decimal minute_microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + + // time(3) + hour_microsecond. + {"date_add(c_time, interval c_char hour_microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + {"date_add(c_time, interval c_varchar hour_microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + {"date_add(c_time, interval c_int_d hour_microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + {"date_add(c_time, interval c_bigint_d hour_microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + {"date_add(c_time, interval c_double_d hour_microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + {"date_add(c_time, interval c_decimal hour_microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + + // time(3) + day_microsecond. + {"date_add(c_time, interval c_char day_microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + {"date_add(c_time, interval c_varchar day_microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + {"date_add(c_time, interval c_int_d day_microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + {"date_add(c_time, interval c_bigint_d day_microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + {"date_add(c_time, interval c_double_d day_microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + {"date_add(c_time, interval c_decimal day_microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + + // time(3) + second. + {"date_add(c_time, interval c_char second)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + {"date_add(c_time, interval c_varchar second)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + {"date_add(c_time, interval c_int_d second)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, 14, 3}, + {"date_add(c_time, interval c_bigint_d second)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, 14, 3}, + {"date_add(c_time, interval c_double_d second)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + {"date_add(c_time, interval c_decimal second)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, 14, 3}, + + // time(3) + minute_second. + {"date_add(c_time, interval c_char minute_second)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, 14, 3}, + {"date_add(c_time, interval c_varchar minute_second)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, 14, 3}, + {"date_add(c_time, interval c_int_d minute_second)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, 14, 3}, + {"date_add(c_time, interval c_bigint_d minute_second)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, 14, 3}, + {"date_add(c_time, interval c_double_d minute_second)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, 14, 3}, + {"date_add(c_time, interval c_decimal minute_second)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, 14, 3}, + + // time(3) + hour_second. + {"date_add(c_time, interval c_char hour_second)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, 14, 3}, + {"date_add(c_time, interval c_varchar hour_second)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, 14, 3}, + {"date_add(c_time, interval c_int_d hour_second)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, 14, 3}, + {"date_add(c_time, interval c_bigint_d hour_second)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, 14, 3}, + {"date_add(c_time, interval c_double_d hour_second)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, 14, 3}, + {"date_add(c_time, interval c_decimal hour_second)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, 14, 3}, + + // time(3) + day_second. + {"date_add(c_time, interval c_char day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 23, 3}, + {"date_add(c_time, interval c_varchar day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 23, 3}, + {"date_add(c_time, interval c_int_d day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 23, 3}, + {"date_add(c_time, interval c_bigint_d day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 23, 3}, + {"date_add(c_time, interval c_double_d day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 23, 3}, + {"date_add(c_time, interval c_decimal day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 23, 3}, + + // time(3) + minute. + {"date_add(c_time, interval c_char minute)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, 14, 3}, + {"date_add(c_time, interval c_varchar minute)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, 14, 3}, + {"date_add(c_time, interval c_int_d minute)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, 14, 3}, + {"date_add(c_time, interval c_bigint_d minute)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, 14, 3}, + {"date_add(c_time, interval c_double_d minute)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, 14, 3}, + {"date_add(c_time, interval c_decimal minute)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, 14, 3}, + + // time(3) + hour_minute. + {"date_add(c_time, interval c_char hour_minute)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, 14, 3}, + {"date_add(c_time, interval c_varchar hour_minute)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, 14, 3}, + {"date_add(c_time, interval c_int_d hour_minute)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, 14, 3}, + {"date_add(c_time, interval c_bigint_d hour_minute)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, 14, 3}, + {"date_add(c_time, interval c_double_d hour_minute)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, 14, 3}, + {"date_add(c_time, interval c_decimal hour_minute)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, 14, 3}, + + // time(3) + day_minute. + {"date_add(c_time, interval c_char day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 23, 3}, + {"date_add(c_time, interval c_varchar day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 23, 3}, + {"date_add(c_time, interval c_int_d day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 23, 3}, + {"date_add(c_time, interval c_bigint_d day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 23, 3}, + {"date_add(c_time, interval c_double_d day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 23, 3}, + {"date_add(c_time, interval c_decimal day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 23, 3}, + + // time(3) + hour. + {"date_add(c_time, interval c_char hour)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, 14, 3}, + {"date_add(c_time, interval c_varchar hour)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, 14, 3}, + {"date_add(c_time, interval c_int_d hour)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, 14, 3}, + {"date_add(c_time, interval c_bigint_d hour)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, 14, 3}, + {"date_add(c_time, interval c_double_d hour)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, 14, 3}, + {"date_add(c_time, interval c_decimal hour)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, 14, 3}, + + // time(3) + day_hour. + {"date_add(c_time, interval c_char day_hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 23, 3}, + {"date_add(c_time, interval c_varchar day_hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 23, 3}, + {"date_add(c_time, interval c_int_d day_hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 23, 3}, + {"date_add(c_time, interval c_bigint_d day_hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 23, 3}, + {"date_add(c_time, interval c_double_d day_hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 23, 3}, + {"date_add(c_time, interval c_decimal day_hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 23, 3}, + + // time(3) + day. + {"date_add(c_time, interval c_char day)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 23, 3}, + {"date_add(c_time, interval c_varchar day)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 23, 3}, + {"date_add(c_time, interval c_int_d day)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 23, 3}, + {"date_add(c_time, interval c_bigint_d day)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 23, 3}, + {"date_add(c_time, interval c_double_d day)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 23, 3}, + {"date_add(c_time, interval c_decimal day)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 23, 3}, + + // time(3) + week. + {"date_add(c_time, interval c_char week)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 23, 3}, + {"date_add(c_time, interval c_varchar week)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 23, 3}, + {"date_add(c_time, interval c_int_d week)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 23, 3}, + {"date_add(c_time, interval c_bigint_d week)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 23, 3}, + {"date_add(c_time, interval c_double_d week)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 23, 3}, + {"date_add(c_time, interval c_decimal week)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 23, 3}, + + // time(3) + month. + {"date_add(c_time, interval c_char month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 23, 3}, + {"date_add(c_time, interval c_varchar month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 23, 3}, + {"date_add(c_time, interval c_int_d month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 23, 3}, + {"date_add(c_time, interval c_bigint_d month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 23, 3}, + {"date_add(c_time, interval c_double_d month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 23, 3}, + {"date_add(c_time, interval c_decimal month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 23, 3}, + + // time(3) + year_month. + {"date_add(c_time, interval c_char year_month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 23, 3}, + {"date_add(c_time, interval c_varchar year_month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 23, 3}, + {"date_add(c_time, interval c_int_d year_month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 23, 3}, + {"date_add(c_time, interval c_bigint_d year_month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 23, 3}, + {"date_add(c_time, interval c_double_d year_month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 23, 3}, + {"date_add(c_time, interval c_decimal year_month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 23, 3}, + + // time(3) + quarter. + {"date_add(c_time, interval c_char quarter)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 23, 3}, + {"date_add(c_time, interval c_varchar quarter)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 23, 3}, + {"date_add(c_time, interval c_int_d quarter)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 23, 3}, + {"date_add(c_time, interval c_bigint_d quarter)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 23, 3}, + {"date_add(c_time, interval c_double_d quarter)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 23, 3}, + {"date_add(c_time, interval c_decimal quarter)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 23, 3}, + + // time(3) + year. + {"date_add(c_time, interval c_char year)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 23, 3}, + {"date_add(c_time, interval c_varchar year)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 23, 3}, + {"date_add(c_time, interval c_int_d year)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 23, 3}, + {"date_add(c_time, interval c_bigint_d year)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 23, 3}, + {"date_add(c_time, interval c_double_d year)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 23, 3}, + {"date_add(c_time, interval c_decimal year)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 23, 3}, + + // time + microsecond. + {"date_add(c_time_d, interval c_char microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + {"date_add(c_time_d, interval c_varchar microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + {"date_add(c_time_d, interval c_int_d microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + {"date_add(c_time_d, interval c_bigint_d microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + {"date_add(c_time_d, interval c_double_d microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + {"date_add(c_time_d, interval c_decimal microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + + // time + second_microsecond. + {"date_add(c_time_d, interval c_char second_microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + {"date_add(c_time_d, interval c_varchar second_microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + {"date_add(c_time_d, interval c_int_d second_microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + {"date_add(c_time_d, interval c_bigint_d second_microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + {"date_add(c_time_d, interval c_double_d second_microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + {"date_add(c_time_d, interval c_decimal second_microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + + // time + minute_microsecond. + {"date_add(c_time_d, interval c_char minute_microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + {"date_add(c_time_d, interval c_varchar minute_microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + {"date_add(c_time_d, interval c_int_d minute_microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + {"date_add(c_time_d, interval c_bigint_d minute_microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + {"date_add(c_time_d, interval c_double_d minute_microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + {"date_add(c_time_d, interval c_decimal minute_microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + + // time + hour_microsecond. + {"date_add(c_time_d, interval c_char hour_microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + {"date_add(c_time_d, interval c_varchar hour_microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + {"date_add(c_time_d, interval c_int_d hour_microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + {"date_add(c_time_d, interval c_bigint_d hour_microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + {"date_add(c_time_d, interval c_double_d hour_microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + {"date_add(c_time_d, interval c_decimal hour_microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + + // time + day_microsecond. + {"date_add(c_time_d, interval c_char day_microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + {"date_add(c_time_d, interval c_varchar day_microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + {"date_add(c_time_d, interval c_int_d day_microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + {"date_add(c_time_d, interval c_bigint_d day_microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + {"date_add(c_time_d, interval c_double_d day_microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + {"date_add(c_time_d, interval c_decimal day_microsecond)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + + // time + second. + {"date_add(c_time_d, interval c_char second)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + {"date_add(c_time_d, interval c_varchar second)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + {"date_add(c_time_d, interval c_int_d second)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_bigint_d second)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_double_d second)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthWithFsp, types.MaxFsp}, + {"date_add(c_time_d, interval c_decimal second)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, 14, 3}, + + // time + minute_second. + {"date_add(c_time_d, interval c_char minute_second)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_varchar minute_second)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_int_d minute_second)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_bigint_d minute_second)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_double_d minute_second)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_decimal minute_second)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthNoFsp, types.MinFsp}, + + // time + hour_second. + {"date_add(c_time_d, interval c_char hour_second)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_varchar hour_second)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_int_d hour_second)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_bigint_d hour_second)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_double_d hour_second)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_decimal hour_second)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthNoFsp, types.MinFsp}, + + // time + day_second. + {"date_add(c_time_d, interval c_char day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_varchar day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_int_d day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_bigint_d day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_double_d day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_decimal day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + + // time + minute. + {"date_add(c_time_d, interval c_char minute)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_varchar minute)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_int_d minute)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_bigint_d minute)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_double_d minute)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_decimal minute)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthNoFsp, types.MinFsp}, + + // time + hour_minute. + {"date_add(c_time_d, interval c_char hour_minute)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_varchar hour_minute)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_int_d hour_minute)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_bigint_d hour_minute)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_double_d hour_minute)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_decimal hour_minute)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthNoFsp, types.MinFsp}, + + // time + day_minute. + {"date_add(c_time_d, interval c_char day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_varchar day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_int_d day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_bigint_d day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_double_d day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_decimal day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + + // time + hour. + {"date_add(c_time_d, interval c_char hour)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_varchar hour)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_int_d hour)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_bigint_d hour)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_double_d hour)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_decimal hour)", mysql.TypeDuration, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDurationWidthNoFsp, types.MinFsp}, + + // time + day_hour. + {"date_add(c_time_d, interval c_char day_hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_varchar day_hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_int_d day_hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_bigint_d day_hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_double_d day_hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_decimal day_hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + + // time + day. + {"date_add(c_time_d, interval c_char day)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_varchar day)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_int_d day)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_bigint_d day)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_double_d day)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_decimal day)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + + // time + week. + {"date_add(c_time_d, interval c_char week)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_varchar week)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_int_d week)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_bigint_d week)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_double_d week)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_decimal week)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + + // time + month. + {"date_add(c_time_d, interval c_char month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_varchar month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_int_d month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_bigint_d month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_double_d month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_decimal month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + + // time + year_month. + {"date_add(c_time_d, interval c_char year_month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_varchar year_month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_int_d year_month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_bigint_d year_month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_double_d year_month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_decimal year_month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + + // time + quarter. + {"date_add(c_time_d, interval c_char quarter)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_varchar quarter)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_int_d quarter)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_bigint_d quarter)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_double_d quarter)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_decimal quarter)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + + // time + year. + {"date_add(c_time_d, interval c_char year)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_varchar year)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_int_d year)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_bigint_d year)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_double_d year)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_time_d, interval c_decimal year)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + + // datetime(2) + microsecond. + {"date_add(c_datetime, interval c_char microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_datetime, interval c_varchar microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_datetime, interval c_int_d microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_datetime, interval c_bigint_d microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_datetime, interval c_double_d microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_datetime, interval c_decimal microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + + // datetime(2) + second_microsecond. + {"date_add(c_datetime, interval c_char second_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_datetime, interval c_varchar second_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_datetime, interval c_int_d second_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_datetime, interval c_bigint_d second_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_datetime, interval c_double_d second_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_datetime, interval c_decimal second_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + + // datetime(2) + minute_microsecond. + {"date_add(c_datetime, interval c_char minute_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_datetime, interval c_varchar minute_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_datetime, interval c_int_d minute_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_datetime, interval c_bigint_d minute_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_datetime, interval c_double_d minute_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_datetime, interval c_decimal minute_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + + // datetime(2) + hour_microsecond. + {"date_add(c_datetime, interval c_char hour_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_datetime, interval c_varchar hour_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_datetime, interval c_int_d hour_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_datetime, interval c_bigint_d hour_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_datetime, interval c_double_d hour_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_datetime, interval c_decimal hour_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + + // datetime(2) + day_microsecond. + {"date_add(c_datetime, interval c_char day_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_datetime, interval c_varchar day_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_datetime, interval c_int_d day_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_datetime, interval c_bigint_d day_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_datetime, interval c_double_d day_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_datetime, interval c_decimal day_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + + // datetime(2) + second. + {"date_add(c_datetime, interval c_char second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_datetime, interval c_varchar second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_datetime, interval c_int_d second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_bigint_d second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_double_d second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_datetime, interval c_decimal second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 23, 3}, + + // datetime(2) + minute_second. + {"date_add(c_datetime, interval c_char minute_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_varchar minute_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_int_d minute_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_bigint_d minute_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_double_d minute_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_decimal minute_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + + // datetime(2) + hour_second. + {"date_add(c_datetime, interval c_char hour_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_varchar hour_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_int_d hour_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_bigint_d hour_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_double_d hour_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_decimal hour_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + + // datetime(2) + day_second. + {"date_add(c_datetime, interval c_char day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_varchar day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_int_d day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_bigint_d day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_double_d day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_decimal day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + + // datetime(2) + minute. + {"date_add(c_datetime, interval c_char minute)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_varchar minute)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_int_d minute)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_bigint_d minute)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_double_d minute)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_decimal minute)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + + // datetime(2) + hour_minute. + {"date_add(c_datetime, interval c_char hour_minute)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_varchar hour_minute)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_int_d hour_minute)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_bigint_d hour_minute)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_double_d hour_minute)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_decimal hour_minute)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + + // datetime(2) + day_minute. + {"date_add(c_datetime, interval c_char day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_varchar day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_int_d day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_bigint_d day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_double_d day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_decimal day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + + // datetime(2) + hour. + {"date_add(c_datetime, interval c_char hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_varchar hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_int_d hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_bigint_d hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_double_d hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_decimal hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + + // datetime(2) + day_hour. + {"date_add(c_datetime, interval c_char day_hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_varchar day_hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_int_d day_hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_bigint_d day_hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_double_d day_hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_decimal day_hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + + // datetime(2) + day. + {"date_add(c_datetime, interval c_char day)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_varchar day)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_int_d day)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_bigint_d day)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_double_d day)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_decimal day)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + + // datetime(2) + week. + {"date_add(c_datetime, interval c_char week)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_varchar week)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_int_d week)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_bigint_d week)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_double_d week)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_decimal week)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + + // datetime(2) + month. + {"date_add(c_datetime, interval c_char month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_varchar month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_int_d month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_bigint_d month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_double_d month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_decimal month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + + // datetime(2) + year_month. + {"date_add(c_datetime, interval c_char year_month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_varchar year_month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_int_d year_month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_bigint_d year_month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_double_d year_month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_decimal year_month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + + // datetime(2) + quarter. + {"date_add(c_datetime, interval c_char quarter)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_varchar quarter)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_int_d quarter)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_bigint_d quarter)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_double_d quarter)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_decimal quarter)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + + // datetime(2) + year. + {"date_add(c_datetime, interval c_char year)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_varchar year)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_int_d year)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_bigint_d year)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_double_d year)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + {"date_add(c_datetime, interval c_decimal year)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 22, 2}, + + // datetime + microsecond. + {"date_add(c_datetime_d, interval c_char microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_datetime_d, interval c_varchar microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_datetime_d, interval c_int_d microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_datetime_d, interval c_bigint_d microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_datetime_d, interval c_double_d microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_datetime_d, interval c_decimal microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + + // datetime + second_microsecond. + {"date_add(c_datetime_d, interval c_char second_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_datetime_d, interval c_varchar second_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_datetime_d, interval c_int_d second_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_datetime_d, interval c_bigint_d second_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_datetime_d, interval c_double_d second_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_datetime_d, interval c_decimal second_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + + // datetime + minute_microsecond. + {"date_add(c_datetime_d, interval c_char minute_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_datetime_d, interval c_varchar minute_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_datetime_d, interval c_int_d minute_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_datetime_d, interval c_bigint_d minute_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_datetime_d, interval c_double_d minute_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_datetime_d, interval c_decimal minute_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + + // datetime + hour_microsecond. + {"date_add(c_datetime_d, interval c_char hour_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_datetime_d, interval c_varchar hour_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_datetime_d, interval c_int_d hour_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_datetime_d, interval c_bigint_d hour_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_datetime_d, interval c_double_d hour_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_datetime_d, interval c_decimal hour_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + + // datetime + day_microsecond. + {"date_add(c_datetime_d, interval c_char day_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_datetime_d, interval c_varchar day_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_datetime_d, interval c_int_d day_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_datetime_d, interval c_bigint_d day_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_datetime_d, interval c_double_d day_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_datetime_d, interval c_decimal day_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + + // datetime + second. + {"date_add(c_datetime_d, interval c_char second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_datetime_d, interval c_varchar second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_datetime_d, interval c_int_d second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_bigint_d second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_double_d second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_datetime_d, interval c_decimal second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 23, 3}, + + // datetime + minute_second. + {"date_add(c_datetime_d, interval c_char minute_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_varchar minute_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_int_d minute_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_bigint_d minute_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_double_d minute_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_decimal minute_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + + // datetime + hour_second. + {"date_add(c_datetime_d, interval c_char hour_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_varchar hour_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_int_d hour_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_bigint_d hour_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_double_d hour_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_decimal hour_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + + // datetime + day_second. + {"date_add(c_datetime_d, interval c_char day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_varchar day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_int_d day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_bigint_d day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_double_d day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_decimal day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + + // datetime + minute. + {"date_add(c_datetime_d, interval c_char minute)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_varchar minute)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_int_d minute)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_bigint_d minute)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_double_d minute)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_decimal minute)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + + // datetime + hour_minute. + {"date_add(c_datetime_d, interval c_char hour_minute)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_varchar hour_minute)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_int_d hour_minute)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_bigint_d hour_minute)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_double_d hour_minute)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_decimal hour_minute)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + + // datetime + day_minute. + {"date_add(c_datetime_d, interval c_char day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_varchar day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_int_d day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_bigint_d day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_double_d day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_decimal day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + + // datetime + hour. + {"date_add(c_datetime_d, interval c_char hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_varchar hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_int_d hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_bigint_d hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_double_d hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_decimal hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + + // datetime + day_hour. + {"date_add(c_datetime_d, interval c_char day_hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_varchar day_hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_int_d day_hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_bigint_d day_hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_double_d day_hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_decimal day_hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + + // datetime + day. + {"date_add(c_datetime_d, interval c_char day)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_varchar day)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_int_d day)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_bigint_d day)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_double_d day)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_decimal day)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + + // datetime + week. + {"date_add(c_datetime_d, interval c_char week)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_varchar week)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_int_d week)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_bigint_d week)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_double_d week)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_decimal week)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + + // datetime + month. + {"date_add(c_datetime_d, interval c_char month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_varchar month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_int_d month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_bigint_d month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_double_d month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_decimal month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + + // datetime + year_month. + {"date_add(c_datetime_d, interval c_char year_month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_varchar year_month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_int_d year_month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_bigint_d year_month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_double_d year_month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_decimal year_month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + + // datetime + quarter. + {"date_add(c_datetime_d, interval c_char quarter)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_varchar quarter)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_int_d quarter)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_bigint_d quarter)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_double_d quarter)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_decimal quarter)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + + // datetime + year. + {"date_add(c_datetime_d, interval c_char year)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_varchar year)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_int_d year)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_bigint_d year)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_double_d year)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_datetime_d, interval c_decimal year)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + + // timestamp + microsecond. + {"date_add(c_timestamp_d, interval c_char microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_timestamp_d, interval c_varchar microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_timestamp_d, interval c_int_d microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_timestamp_d, interval c_bigint_d microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_timestamp_d, interval c_double_d microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_timestamp_d, interval c_decimal microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + + // timestamp + second_microsecond. + {"date_add(c_timestamp_d, interval c_char second_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_timestamp_d, interval c_varchar second_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_timestamp_d, interval c_int_d second_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_timestamp_d, interval c_bigint_d second_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_timestamp_d, interval c_double_d second_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_timestamp_d, interval c_decimal second_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + + // timestamp + minute_microsecond. + {"date_add(c_timestamp_d, interval c_char minute_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_timestamp_d, interval c_varchar minute_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_timestamp_d, interval c_int_d minute_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_timestamp_d, interval c_bigint_d minute_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_timestamp_d, interval c_double_d minute_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_timestamp_d, interval c_decimal minute_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + + // timestamp + hour_microsecond. + {"date_add(c_timestamp_d, interval c_char hour_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_timestamp_d, interval c_varchar hour_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_timestamp_d, interval c_int_d hour_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_timestamp_d, interval c_bigint_d hour_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_timestamp_d, interval c_double_d hour_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_timestamp_d, interval c_decimal hour_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + + // timestamp + day_microsecond. + {"date_add(c_timestamp_d, interval c_char day_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_timestamp_d, interval c_varchar day_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_timestamp_d, interval c_int_d day_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_timestamp_d, interval c_bigint_d day_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_timestamp_d, interval c_double_d day_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_timestamp_d, interval c_decimal day_microsecond)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + + // timestamp + second. + {"date_add(c_timestamp_d, interval c_char second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_timestamp_d, interval c_varchar second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_timestamp_d, interval c_int_d second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_bigint_d second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_double_d second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthWithFsp, types.MaxFsp}, + {"date_add(c_timestamp_d, interval c_decimal second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, 23, 3}, + + // timestamp + minute_second. + {"date_add(c_timestamp_d, interval c_char minute_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_varchar minute_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_int_d minute_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_bigint_d minute_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_double_d minute_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_decimal minute_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + + // timestamp + hour_second. + {"date_add(c_timestamp_d, interval c_char hour_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_varchar hour_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_int_d hour_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_bigint_d hour_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_double_d hour_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_decimal hour_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + + // timestamp + day_second. + {"date_add(c_timestamp_d, interval c_char day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_varchar day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_int_d day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_bigint_d day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_double_d day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_decimal day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + + // timestamp + minute. + {"date_add(c_timestamp_d, interval c_char minute)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_varchar minute)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_int_d minute)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_bigint_d minute)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_double_d minute)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_decimal minute)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + + // timestamp + hour_minute. + {"date_add(c_timestamp_d, interval c_char hour_minute)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_varchar hour_minute)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_int_d hour_minute)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_bigint_d hour_minute)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_double_d hour_minute)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_decimal hour_minute)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + + // timestamp + day_minute. + {"date_add(c_timestamp_d, interval c_char day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_varchar day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_int_d day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_bigint_d day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_double_d day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_decimal day_second)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + + // timestamp + hour. + {"date_add(c_timestamp_d, interval c_char hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_varchar hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_int_d hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_bigint_d hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_double_d hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_decimal hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + + // timestamp + day_hour. + {"date_add(c_timestamp_d, interval c_char day_hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_varchar day_hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_int_d day_hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_bigint_d day_hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_double_d day_hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_decimal day_hour)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + + // timestamp + day. + {"date_add(c_timestamp_d, interval c_char day)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_varchar day)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_int_d day)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_bigint_d day)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_double_d day)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_decimal day)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + + // timestamp + week. + {"date_add(c_timestamp_d, interval c_char week)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_varchar week)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_int_d week)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_bigint_d week)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_double_d week)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_decimal week)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + + // timestamp + month. + {"date_add(c_timestamp_d, interval c_char month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_varchar month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_int_d month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_bigint_d month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_double_d month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_decimal month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + + // timestamp + year_month. + {"date_add(c_timestamp_d, interval c_char year_month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_varchar year_month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_int_d year_month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_bigint_d year_month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_double_d year_month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_decimal year_month)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + + // timestamp + quarter. + {"date_add(c_timestamp_d, interval c_char quarter)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_varchar quarter)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_int_d quarter)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_bigint_d quarter)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_double_d quarter)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_decimal quarter)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + + // timestamp + year. + {"date_add(c_timestamp_d, interval c_char year)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_varchar year)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_int_d year)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_bigint_d year)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_double_d year)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + {"date_add(c_timestamp_d, interval c_decimal year)", mysql.TypeDatetime, charset.CharsetBin, mysql.BinaryFlag, mysql.MaxDatetimeWidthNoFsp, types.MinFsp}, + + // Rest + *. + {"date_add(c_bit, interval c_char microsecond)", mysql.TypeVarString, charset.CharsetUTF8MB4, 0, mysql.MaxDatetimeFullWidth, types.MinFsp}, + {"date_add(c_int_d, interval c_varchar second)", mysql.TypeVarString, charset.CharsetUTF8MB4, 0, mysql.MaxDatetimeFullWidth, types.MinFsp}, + {"date_add(c_double_d, interval c_int_d day_microsecond)", mysql.TypeVarString, charset.CharsetUTF8MB4, 0, mysql.MaxDatetimeFullWidth, types.MinFsp}, + {"date_add(c_decimal, interval c_bigint_d hour)", mysql.TypeVarString, charset.CharsetUTF8MB4, 0, mysql.MaxDatetimeFullWidth, types.MinFsp}, + {"date_add(c_varchar, interval c_double_d day)", mysql.TypeVarString, charset.CharsetUTF8MB4, 0, mysql.MaxDatetimeFullWidth, types.MinFsp}, + {"date_add(c_binary, interval c_decimal year)", mysql.TypeVarString, charset.CharsetUTF8MB4, 0, mysql.MaxDatetimeFullWidth, types.MinFsp}, } } diff --git a/expression/util.go b/expression/util.go index a2034d5e80b88..40d4ab3f95774 100644 --- a/expression/util.go +++ b/expression/util.go @@ -547,8 +547,8 @@ func SubstituteCorCol2Constant(expr Expression) (Expression, error) { func locateStringWithCollation(str, substr, coll string) int64 { collator := collate.GetCollator(coll) - strKey := collator.Key(str) - subStrKey := collator.Key(substr) + strKey := collator.KeyWithoutTrimRightSpace(str) + subStrKey := collator.KeyWithoutTrimRightSpace(substr) index := bytes.Index(strKey, subStrKey) if index == -1 || index == 0 { @@ -560,8 +560,8 @@ func locateStringWithCollation(str, substr, coll string) int64 { for { r, size := utf8.DecodeRuneInString(str) count += 1 - index -= len(collator.Key(string(r))) - if index == 0 { + index -= len(collator.KeyWithoutTrimRightSpace(string(r))) + if index <= 0 { return count + 1 } str = str[size:] diff --git a/expression/util_test.go b/expression/util_test.go index fea561a89eee6..689385a9c6869 100644 --- a/expression/util_test.go +++ b/expression/util_test.go @@ -145,12 +145,8 @@ func TestClone(t *testing.T) { &builtinQuarterSig{}, &builtinSecToTimeSig{}, &builtinTimeToSecSig{}, &builtinTimestampAddSig{}, &builtinToDaysSig{}, &builtinToSecondsSig{}, &builtinUTCTimeWithArgSig{}, &builtinUTCTimeWithoutArgSig{}, &builtinTimestamp1ArgSig{}, &builtinTimestamp2ArgsSig{}, &builtinTimestampLiteralSig{}, &builtinLastDaySig{}, &builtinStrToDateDateSig{}, &builtinStrToDateDatetimeSig{}, &builtinStrToDateDurationSig{}, - &builtinFromUnixTime1ArgSig{}, &builtinFromUnixTime2ArgSig{}, &builtinExtractDatetimeFromStringSig{}, &builtinExtractDatetimeSig{}, &builtinExtractDurationSig{}, &builtinAddDateStringStringSig{}, - &builtinAddDateStringIntSig{}, &builtinAddDateStringRealSig{}, &builtinAddDateStringDecimalSig{}, &builtinAddDateIntStringSig{}, &builtinAddDateIntIntSig{}, - &builtinAddDateIntRealSig{}, &builtinAddDateIntDecimalSig{}, &builtinAddDateDatetimeStringSig{}, &builtinAddDateDatetimeIntSig{}, &builtinAddDateDatetimeRealSig{}, - &builtinAddDateDatetimeDecimalSig{}, &builtinSubDateStringStringSig{}, &builtinSubDateStringIntSig{}, &builtinSubDateStringRealSig{}, &builtinSubDateStringDecimalSig{}, - &builtinSubDateIntStringSig{}, &builtinSubDateIntIntSig{}, &builtinSubDateIntRealSig{}, &builtinSubDateIntDecimalSig{}, &builtinSubDateDatetimeStringSig{}, - &builtinSubDateDatetimeIntSig{}, &builtinSubDateDatetimeRealSig{}, &builtinSubDateDatetimeDecimalSig{}, + &builtinFromUnixTime1ArgSig{}, &builtinFromUnixTime2ArgSig{}, &builtinExtractDatetimeFromStringSig{}, &builtinExtractDatetimeSig{}, &builtinExtractDurationSig{}, &builtinAddSubDateAsStringSig{}, + &builtinAddSubDateDatetimeAnySig{}, &builtinAddSubDateDurationAnySig{}, } for _, f := range builtinFuncs { cf := f.Clone() diff --git a/go.mod b/go.mod index 93a76f281610e..351a6ea1817cf 100644 --- a/go.mod +++ b/go.mod @@ -6,12 +6,12 @@ require ( cloud.google.com/go/storage v1.21.0 github.com/Azure/azure-sdk-for-go/sdk/azidentity v0.12.0 github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.2.0 - github.com/BurntSushi/toml v0.3.1 + github.com/BurntSushi/toml v0.4.1 github.com/DATA-DOG/go-sqlmock v1.5.0 github.com/Jeffail/gabs/v2 v2.5.1 github.com/Shopify/sarama v1.29.0 github.com/aws/aws-sdk-go v1.35.3 - github.com/blacktear23/go-proxyprotocol v0.0.0-20180807104634-af7a81e8dd0d + github.com/blacktear23/go-proxyprotocol v1.0.0 github.com/carlmjohnson/flagext v0.21.0 github.com/cheggaaa/pb/v3 v3.0.8 github.com/cheynewallace/tabby v1.1.1 @@ -50,7 +50,7 @@ require ( github.com/pingcap/log v1.1.0 github.com/pingcap/sysutil v0.0.0-20220114020952-ea68d2dbf5b4 github.com/pingcap/tidb/parser v0.0.0-20211011031125-9b13dc409c5e - github.com/pingcap/tipb v0.0.0-20220314125451-bfb5c2c55188 + github.com/pingcap/tipb v0.0.0-20220602075447-4847c5d68e73 github.com/prometheus/client_golang v1.12.2 github.com/prometheus/client_model v0.2.0 github.com/prometheus/common v0.32.1 @@ -62,7 +62,7 @@ require ( github.com/spf13/pflag v1.0.5 github.com/stretchr/testify v1.7.2-0.20220504104629-106ec21d14df github.com/tiancaiamao/appdash v0.0.0-20181126055449-889f96f722a2 - github.com/tikv/client-go/v2 v2.0.1-0.20220531081749-2807409d4968 + github.com/tikv/client-go/v2 v2.0.1-0.20220613112734-be31f33ba03b github.com/tikv/pd/client v0.0.0-20220307081149-841fa61e9710 github.com/twmb/murmur3 v1.1.3 github.com/uber/jaeger-client-go v2.22.1+incompatible @@ -87,7 +87,7 @@ require ( golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 golang.org/x/text v0.3.7 golang.org/x/time v0.0.0-20220224211638-0e9765cccd65 - golang.org/x/tools v0.1.8 + golang.org/x/tools v0.1.11-0.20220513221640-090b14e8501f google.golang.org/api v0.69.0 google.golang.org/grpc v1.44.0 gopkg.in/yaml.v2 v2.4.0 @@ -95,7 +95,13 @@ require ( sourcegraph.com/sourcegraph/appdash-data v0.0.0-20151005221446-73f23eafcf67 ) -require github.com/aliyun/alibaba-cloud-sdk-go v1.61.1581 +require ( + github.com/aliyun/alibaba-cloud-sdk-go v1.61.1581 + github.com/charithe/durationcheck v0.0.9 + github.com/gordonklaus/ineffassign v0.0.0-20210914165742-4cc7213b9bc8 + github.com/kyoh86/exportloopref v0.1.8 + honnef.co/go/tools v0.0.1-2020.1.4 +) require ( cloud.google.com/go v0.100.2 // indirect @@ -128,6 +134,7 @@ require ( github.com/go-ole/go-ole v1.2.6 // indirect github.com/golang/glog v1.0.0 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect + github.com/golangci/prealloc v0.0.0-20180630174525-215b22d4de21 github.com/google/go-cmp v0.5.7 // indirect github.com/googleapis/gax-go/v2 v2.1.1 // indirect github.com/gorilla/handlers v1.5.1 // indirect @@ -193,6 +200,8 @@ require ( go.opentelemetry.io/otel/trace v0.20.0 // indirect go.opentelemetry.io/proto/otlp v0.7.0 // indirect golang.org/x/crypto v0.0.0-20220214200702-86341886e292 // indirect + golang.org/x/exp/typeparams v0.0.0-20220218215828-6cf2b201936e // indirect + golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 // indirect golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/genproto v0.0.0-20220216160803-4663080d8bc8 // indirect @@ -206,3 +215,5 @@ replace github.com/pingcap/tidb/parser => ./parser // fix potential security issue(CVE-2020-26160) introduced by indirect dependency. replace github.com/dgrijalva/jwt-go => github.com/form3tech-oss/jwt-go v3.2.6-0.20210809144907-32ab6a8243d7+incompatible + +replace honnef.co/go/tools => honnef.co/go/tools v0.3.2 diff --git a/go.sum b/go.sum index 618581750502b..5bc93febdf2ab 100644 --- a/go.sum +++ b/go.sum @@ -64,8 +64,9 @@ github.com/Azure/azure-sdk-for-go/sdk/internal v0.8.1 h1:BUYIbDf/mMZ8945v3QkG3Ou github.com/Azure/azure-sdk-for-go/sdk/internal v0.8.1/go.mod h1:KLF4gFr6DcKFZwSuH8w8yEK6DpFl3LP5rhdvAb7Yz5I= github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.2.0 h1:62Ew5xXg5UCGIXDOM7+y4IL5/6mQJq1nenhBCJAeGX8= github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.2.0/go.mod h1:eHWhQKXc1Gv1DvWH//UzgWjWFEo0Pp4pH2vBzjBw8Fc= -github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/toml v0.4.1 h1:GaI7EiDXDRfa8VshkTj7Fym7ha+y8/XxIgD2okUIjLw= +github.com/BurntSushi/toml v0.4.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/CloudyKit/fastprinter v0.0.0-20170127035650-74b38d55f37a/go.mod h1:EFZQ978U7x8IRnstaskI3IysnWY5Ao3QgZUKOXlsAdw= github.com/CloudyKit/jet v2.1.3-0.20180809161101-62edd43e4f88+incompatible/go.mod h1:HPYO+50pSWkPoj9Q/eq0aRGByCL6ScRlUmiEX5Zgm+w= @@ -119,8 +120,8 @@ 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/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= -github.com/blacktear23/go-proxyprotocol v0.0.0-20180807104634-af7a81e8dd0d h1:rQlvB2AYWme2bIB18r/SipGiMEVJYE9U0z+MGoU/LtQ= -github.com/blacktear23/go-proxyprotocol v0.0.0-20180807104634-af7a81e8dd0d/go.mod h1:VKt7CNAQxpFpSDz3sXyj9hY/GbVsQCr0sB3w59nE7lU= +github.com/blacktear23/go-proxyprotocol v1.0.0 h1:WmMmtZanGEfIHnJN9N3A4Pl6mM69D+GxEph2eOaCf7g= +github.com/blacktear23/go-proxyprotocol v1.0.0/go.mod h1:fbqiWSHMxaW0KsJ3SHjpxOMbTpIaQSMRn1GRd+oPyEw= github.com/carlmjohnson/flagext v0.21.0 h1:/c4uK3ie786Z7caXLcIMvePNSSiH3bQVGDvmGLMme60= github.com/carlmjohnson/flagext v0.21.0/go.mod h1:Eenv0epIUAr4NuedNmkzI8WmBmjIxZC239XcKxYS2ac= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= @@ -130,6 +131,8 @@ github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghf github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/charithe/durationcheck v0.0.9 h1:mPP4ucLrf/rKZiIG/a9IPXHGlh8p4CzgpyTy6EEutYk= +github.com/charithe/durationcheck v0.0.9/go.mod h1:SSbRIBVfMjCi/kEB6K65XEA83D6prSM8ap1UCpNKtgg= github.com/cheggaaa/pb/v3 v3.0.8 h1:bC8oemdChbke2FHIIGy9mn4DPJ2caZYQnfbRqwmdCoA= github.com/cheggaaa/pb/v3 v3.0.8/go.mod h1:UICbiLec/XO6Hw6k+BHEtHeQFzzBH4i2/qk/ow1EJTA= github.com/cheynewallace/tabby v1.1.1 h1:JvUR8waht4Y0S3JF17G6Vhyt+FRhnqVCkk8l4YrOU54= @@ -340,6 +343,8 @@ github.com/golang/snappy v0.0.2-0.20190904063534-ff6b7dc882cf/go.mod h1:/XxbfmMg github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golangci/prealloc v0.0.0-20180630174525-215b22d4de21 h1:leSNB7iYzLYSSx3J/s5sVf4Drkc68W2wm4Ixh/mr0us= +github.com/golangci/prealloc v0.0.0-20180630174525-215b22d4de21/go.mod h1:tf5+bzsHdTM0bsB7+8mt0GUMvjCgwLpTapNZHU8AajI= github.com/gomodule/redigo v1.7.1-0.20190724094224-574c33c3df38/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= @@ -384,7 +389,6 @@ github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= 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/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= @@ -393,6 +397,8 @@ github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pf github.com/googleapis/gax-go/v2 v2.1.1 h1:dp3bWCh+PPO1zjRRiCSczJav13sBvG4UhNyVTa1KqdU= github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gordonklaus/ineffassign v0.0.0-20210914165742-4cc7213b9bc8 h1:PVRE9d4AQKmbelZ7emNig1+NT27DUmKZn5qXxfio54U= +github.com/gordonklaus/ineffassign v0.0.0-20210914165742-4cc7213b9bc8/go.mod h1:Qcp2HIAYhR7mNUVSIxZww3Guk4it82ghYcEXIAk+QT0= github.com/gorilla/handlers v1.4.2/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH4= github.com/gorilla/handlers v1.5.1/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q= @@ -527,6 +533,8 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/kyoh86/exportloopref v0.1.8 h1:5Ry/at+eFdkX9Vsdw3qU4YkvGtzuVfzT4X7S77LoN/M= +github.com/kyoh86/exportloopref v0.1.8/go.mod h1:1tUcJeiioIs7VWe5gcOObrux3lb66+sBqGZrRkMwPgg= github.com/labstack/echo/v4 v4.1.11/go.mod h1:i541M3Fj6f76NZtHSj7TXnyM8n2gaodfvfxNnFqi74g= github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= @@ -648,8 +656,8 @@ github.com/pingcap/log v1.1.0 h1:ELiPxACz7vdo1qAvvaWJg1NrYFoY6gqAh/+Uo6aXdD8= github.com/pingcap/log v1.1.0/go.mod h1:DWQW5jICDR7UJh4HtxXSM20Churx4CQL0fwL/SoOSA4= github.com/pingcap/sysutil v0.0.0-20220114020952-ea68d2dbf5b4 h1:HYbcxtnkN3s5tqrZ/z3eJS4j3Db8wMphEm1q10lY/TM= github.com/pingcap/sysutil v0.0.0-20220114020952-ea68d2dbf5b4/go.mod h1:sDCsM39cGiv2vwunZkaFA917vVkqDTGSPbbV7z4Oops= -github.com/pingcap/tipb v0.0.0-20220314125451-bfb5c2c55188 h1:+46isFI9fR9R+nJVDMI55tCC/TCwp+bvVA4HLGEv1rY= -github.com/pingcap/tipb v0.0.0-20220314125451-bfb5c2c55188/go.mod h1:A7mrd7WHBl1o63LE2bIBGEJMTNWXqhgmYiOvMLxozfs= +github.com/pingcap/tipb v0.0.0-20220602075447-4847c5d68e73 h1:L4nZwfYSrIsWPAZR8zMwHaNQJy0Rjy3Od6Smj5mlOms= +github.com/pingcap/tipb v0.0.0-20220602075447-4847c5d68e73/go.mod h1:A7mrd7WHBl1o63LE2bIBGEJMTNWXqhgmYiOvMLxozfs= github.com/pkg/browser v0.0.0-20180916011732-0a3d74bf9ce4 h1:49lOXmGaUpV9Fz3gd7TFZY106KVlPVa5jcYD1gaQf98= github.com/pkg/browser v0.0.0-20180916011732-0a3d74bf9ce4/go.mod h1:4OwLy04Bl9Ef3GJJCoec+30X3LQs/0/m4HFRt/2LUSA= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -700,7 +708,6 @@ github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= 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.6.1 h1:/FiVV8dS/e+YqF2JvO3yXRFbBLTIuSDkuC7aBOAvL+k= github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= @@ -760,8 +767,8 @@ github.com/stretchr/testify v1.7.2-0.20220504104629-106ec21d14df/go.mod h1:6Fq8o github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/tiancaiamao/appdash v0.0.0-20181126055449-889f96f722a2 h1:mbAskLJ0oJfDRtkanvQPiooDH8HvJ2FBh+iKT/OmiQQ= github.com/tiancaiamao/appdash v0.0.0-20181126055449-889f96f722a2/go.mod h1:2PfKggNGDuadAa0LElHrByyrz4JPZ9fFx6Gs7nx7ZZU= -github.com/tikv/client-go/v2 v2.0.1-0.20220531081749-2807409d4968 h1:KhOkCnqpxh/B2gGZdXSUyKgNRZaPzYsCIWGjNdrFmOA= -github.com/tikv/client-go/v2 v2.0.1-0.20220531081749-2807409d4968/go.mod h1:KzWkFRax8foxw13dSXAQZN+dLgixwahT10ZaAK9V/pg= +github.com/tikv/client-go/v2 v2.0.1-0.20220613112734-be31f33ba03b h1:N5ivsNkDQDgimY0ZVqMnWqXjEnxy5uFChoB4wPIKpPI= +github.com/tikv/client-go/v2 v2.0.1-0.20220613112734-be31f33ba03b/go.mod h1:KzWkFRax8foxw13dSXAQZN+dLgixwahT10ZaAK9V/pg= github.com/tikv/pd/client v0.0.0-20220307081149-841fa61e9710 h1:jxgmKOscXSjaFEKQGRyY5qOpK8hLqxs2irb/uDJMtwk= github.com/tikv/pd/client v0.0.0-20220307081149-841fa61e9710/go.mod h1:AtvppPwkiyUgQlR1W9qSqfTB+OsOIu19jDCOxOsPkmU= github.com/tklauser/go-sysconf v0.3.9 h1:JeUVdAOWhhxVcU6Eqr/ATFHgXk/mmiItdKeJPev3vTo= @@ -809,6 +816,7 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yusufpapurcu/wmi v1.2.2 h1:KBNDSne4vP5mbSWnJbO+51IMOXJB67QiYCSBrubbPRg= github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= @@ -905,6 +913,7 @@ golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= 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-20220214200702-86341886e292 h1:f+lwQ+GtmgoY+A2YaQxlSOnDjXcQ7ZRLWOHbC6HtRqE= golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -924,6 +933,8 @@ golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMk golang.org/x/exp v0.0.0-20200513190911-00229845015e/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= golang.org/x/exp v0.0.0-20220426173459-3bcf042a4bf5 h1:rxKZ2gOnYxjfmakvUUqh9Gyb6KXfrj7JWTxORTYqb0E= golang.org/x/exp v0.0.0-20220426173459-3bcf042a4bf5/go.mod h1:lgLbSvA5ygNOMpwM/9anMpWVlVJ7Z+cHWq/eFuinpGE= +golang.org/x/exp/typeparams v0.0.0-20220218215828-6cf2b201936e h1:qyrTQ++p1afMkO4DPEeLGq/3oTsdlvdH4vqZUBWzUKM= +golang.org/x/exp/typeparams v0.0.0-20220218215828-6cf2b201936e/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= @@ -942,7 +953,6 @@ golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhp golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= -golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= @@ -951,6 +961,8 @@ golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 h1:6zppjxzCulZykYSLyVDYbneBfbaBIQPYMevg0bEwv2s= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1004,6 +1016,7 @@ golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210610132358-84b48f89b13b/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd h1:O7DYs+zxREGLKzKoMQrtrEacpb0ZVXA5rIwylE2Xchk= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -1114,6 +1127,7 @@ golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/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-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1157,7 +1171,6 @@ golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBn golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -1171,7 +1184,6 @@ golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= @@ -1190,6 +1202,7 @@ golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roY golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200622203043-20e05c1c8ffa/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= @@ -1207,8 +1220,8 @@ golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.8 h1:P1HhGGuLW4aAclzjtmJdf0mJOjVUZUzOTqkAkWL+l6w= -golang.org/x/tools v0.1.8/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= +golang.org/x/tools v0.1.11-0.20220513221640-090b14e8501f h1:OKYpQQVE3DKSc3r3zHVzq46vq5YH7x8xpR3/k9ixmUg= +golang.org/x/tools v0.1.11-0.20220513221640-090b14e8501f/go.mod h1:SgwaegtQh8clINPpECJMqnxLv9I09HLqnW3RMqW0CA4= 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= @@ -1416,13 +1429,8 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -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= -honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.3.2 h1:ytYb4rOqyp1TSa2EPvNVwtPQJctSELKaMyLfqNP4+34= +honnef.co/go/tools v0.3.2/go.mod h1:jzwdWgg7Jdq75wlfblQxO4neNaFFSvgc1tD5Wv8U0Yw= modernc.org/fileutil v1.0.0/go.mod h1:JHsWpkrk/CnVV1H/eGlFf85BEpfkrp56ro8nojIq9Q8= modernc.org/golex v1.0.1/go.mod h1:QCA53QtsT1NdGkaZZkF5ezFwk4IXh4BGNafAARTC254= modernc.org/lex v1.0.0/go.mod h1:G6rxMTy3cH2iA0iXL/HRRv4Znu8MK4higxph/lE7ypk= diff --git a/infoschema/BUILD.bazel b/infoschema/BUILD.bazel new file mode 100644 index 0000000000000..1f78edce74f2a --- /dev/null +++ b/infoschema/BUILD.bazel @@ -0,0 +1,111 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "infoschema", + srcs = [ + "builder.go", + "cache.go", + "cluster.go", + "error.go", + "infoschema.go", + "metric_table_def.go", + "metrics_schema.go", + "tables.go", + ], + importpath = "github.com/pingcap/tidb/infoschema", + visibility = ["//visibility:public"], + deps = [ + "//config", + "//ddl/placement", + "//domain/infosync", + "//errno", + "//kv", + "//meta", + "//meta/autoid", + "//metrics", + "//parser/charset", + "//parser/model", + "//parser/mysql", + "//parser/terror", + "//privilege", + "//session/txninfo", + "//sessionctx", + "//sessionctx/variable", + "//table", + "//table/tables", + "//types", + "//util", + "//util/dbterror", + "//util/deadlockhistory", + "//util/domainutil", + "//util/execdetails", + "//util/logutil", + "//util/pdapi", + "//util/sem", + "//util/set", + "//util/sqlexec", + "//util/stmtsummary", + "@com_github_ngaut_pools//:pools", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_pingcap_kvproto//pkg/metapb", + "@com_github_tikv_client_go_v2//tikv", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "infoschema_test", + srcs = [ + "cache_test.go", + "cluster_tables_test.go", + "infoschema_test.go", + "main_test.go", + "metrics_schema_test.go", + "tables_test.go", + ], + embed = [":infoschema"], + flaky = True, + shard_count = 50, + deps = [ + "//config", + "//ddl/placement", + "//domain", + "//errno", + "//executor", + "//kv", + "//meta", + "//meta/autoid", + "//parser", + "//parser/auth", + "//parser/model", + "//parser/mysql", + "//parser/terror", + "//server", + "//session", + "//session/txninfo", + "//sessionctx/variable", + "//store/helper", + "//store/mockstore", + "//store/mockstore/mockstorage", + "//table", + "//testkit", + "//testkit/testsetup", + "//testkit/testutil", + "//types", + "//util", + "//util/kvcache", + "//util/pdapi", + "//util/resourcegrouptag", + "//util/set", + "@com_github_gorilla_mux//:mux", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_pingcap_fn//:fn", + "@com_github_pingcap_kvproto//pkg/deadlock", + "@com_github_pingcap_tipb//go-tipb", + "@com_github_stretchr_testify//require", + "@org_golang_google_grpc//:grpc", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/infoschema/cluster.go b/infoschema/cluster.go index 8ba852de0989b..d1d4f3c5a7fac 100644 --- a/infoschema/cluster.go +++ b/infoschema/cluster.go @@ -44,6 +44,8 @@ const ( ClusterTableTiDBTrx = "CLUSTER_TIDB_TRX" // ClusterTableDeadlocks is the string constant of cluster dead lock table. ClusterTableDeadlocks = "CLUSTER_DEADLOCKS" + // ClusterTableDeadlocks is the string constant of cluster transaction summary table. + ClusterTableTrxSummary = "CLUSTER_TRX_SUMMARY" ) // memTableToClusterTables means add memory table to cluster table. @@ -55,6 +57,7 @@ var memTableToClusterTables = map[string]string{ TableStatementsSummaryEvicted: ClusterTableStatementsSummaryEvicted, TableTiDBTrx: ClusterTableTiDBTrx, TableDeadlocks: ClusterTableDeadlocks, + TableTrxSummary: ClusterTableTrxSummary, } func init() { diff --git a/infoschema/cluster_tables_test.go b/infoschema/cluster_tables_test.go index dd71858a33230..551993b2a69d0 100644 --- a/infoschema/cluster_tables_test.go +++ b/infoschema/cluster_tables_test.go @@ -23,6 +23,7 @@ import ( "runtime" "strconv" "strings" + "sync" "testing" "time" @@ -398,6 +399,39 @@ func TestStmtSummaryEvictedCountTable(t *testing.T) { require.NoError(t, tk.QueryToErr("select * from information_schema.CLUSTER_STATEMENTS_SUMMARY_EVICTED")) } +func TestStmtSummaryIssue35340(t *testing.T) { + var clean func() + s := new(clusterTablesSuite) + s.store, s.dom, clean = testkit.CreateMockStoreAndDomain(t) + defer clean() + + tk := s.newTestKitWithRoot(t) + tk.MustExec("set global tidb_stmt_summary_refresh_interval=1800") + tk.MustExec("set global tidb_stmt_summary_max_stmt_count = 3000") + for i := 0; i < 100; i++ { + user := "user" + strconv.Itoa(i) + tk.MustExec(fmt.Sprintf("create user '%v'@'localhost'", user)) + } + tk.MustExec("flush privileges") + var wg sync.WaitGroup + for i := 0; i < 10; i++ { + wg.Add(1) + go func() { + defer wg.Done() + tk := s.newTestKitWithRoot(t) + for j := 0; j < 100; j++ { + user := "user" + strconv.Itoa(j) + require.True(t, tk.Session().Auth(&auth.UserIdentity{ + Username: user, + Hostname: "localhost", + }, nil, nil)) + tk.MustQuery("select count(*) from information_schema.statements_summary;") + } + }() + } + wg.Wait() +} + func TestStmtSummaryHistoryTableWithUserTimezone(t *testing.T) { // setup suite var clean func() diff --git a/infoschema/infoschema.go b/infoschema/infoschema.go index c96fa6d59dc83..3200166d21af0 100644 --- a/infoschema/infoschema.go +++ b/infoschema/infoschema.go @@ -487,6 +487,11 @@ func (is *LocalTemporaryTables) RemoveTable(schema, table model.CIStr) (exist bo return true } +// Count gets the count of the temporary tables. +func (is *LocalTemporaryTables) Count() int { + return len(is.idx2table) +} + // SchemaByTable get a table's schema name func (is *LocalTemporaryTables) SchemaByTable(tableInfo *model.TableInfo) (*model.DBInfo, bool) { if tableInfo == nil { diff --git a/infoschema/infoschema_test.go b/infoschema/infoschema_test.go index 710914ad41159..e414f97d02906 100644 --- a/infoschema/infoschema_test.go +++ b/infoschema/infoschema_test.go @@ -294,6 +294,7 @@ func TestInfoTables(t *testing.T) { "TIDB_TRX", "DEADLOCKS", "PLACEMENT_POLICIES", + "TRX_SUMMARY", } for _, tbl := range infoTables { tb, err1 := is.TableByName(util.InformationSchemaName, model.NewCIStr(tbl)) diff --git a/infoschema/metric_table_def.go b/infoschema/metric_table_def.go index b27217a316c03..7487adadb6168 100644 --- a/infoschema/metric_table_def.go +++ b/infoschema/metric_table_def.go @@ -2513,10 +2513,9 @@ var MetricTableMap = map[string]MetricTableDef{ Comment: "The total time of distsql execution(second)", }, "tidb_distsql_copr_cache": { - Comment: "The quantile of TiDB distsql coprocessor cache", - PromQL: "histogram_quantile($QUANTILE, sum(rate(tidb_distsql_copr_cache_bucket{$LABEL_CONDITIONS}[$RANGE_DURATION])) by (type,instance))", - Labels: []string{"instance", "type"}, - Quantile: 0.95, + Comment: "The total count of TiDB distsql coprocessor cache", + PromQL: "sum(rate(tidb_distsql_copr_cache{$LABEL_CONDITIONS}[$RANGE_DURATION])) by (type,instance))", + Labels: []string{"instance", "type"}, }, "tidb_execute_total_count": { PromQL: "sum(increase(tidb_session_execute_duration_seconds_count{$LABEL_CONDITIONS}[$RANGE_DURATION])) by (instance,sql_type)", diff --git a/infoschema/perfschema/BUILD.bazel b/infoschema/perfschema/BUILD.bazel new file mode 100644 index 0000000000000..92930a65eaa80 --- /dev/null +++ b/infoschema/perfschema/BUILD.bazel @@ -0,0 +1,53 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "perfschema", + srcs = [ + "const.go", + "init.go", + "tables.go", + ], + importpath = "github.com/pingcap/tidb/infoschema/perfschema", + visibility = ["//visibility:public"], + deps = [ + "//ddl", + "//expression", + "//infoschema", + "//kv", + "//meta/autoid", + "//parser", + "//parser/ast", + "//parser/model", + "//parser/mysql", + "//parser/terror", + "//sessionctx", + "//table", + "//table/tables", + "//types", + "//util", + "//util/profile", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + ], +) + +go_test( + name = "perfschema_test", + srcs = [ + "main_test.go", + "tables_test.go", + ], + data = glob(["testdata/**"]), + embed = [":perfschema"], + deps = [ + "//kv", + "//parser/terror", + "//session", + "//store/mockstore", + "//testkit", + "//testkit/testsetup", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/infoschema/perfschema/tables.go b/infoschema/perfschema/tables.go index 1beea67e64a1b..c0006f9f7413a 100644 --- a/infoschema/perfschema/tables.go +++ b/infoschema/perfschema/tables.go @@ -382,7 +382,7 @@ func dataForRemoteProfile(ctx sessionctx.Context, nodeType, uri string, isGorout close(ch) // Keep the original order to make the result more stable - var results []result // nolint: prealloc + var results []result //nolint: prealloc for result := range ch { if result.err != nil { ctx.GetSessionVars().StmtCtx.AppendWarning(result.err) diff --git a/infoschema/perfschema/tables_test.go b/infoschema/perfschema/tables_test.go index 057ba404efec7..24952625aa22d 100644 --- a/infoschema/perfschema/tables_test.go +++ b/infoschema/perfschema/tables_test.go @@ -20,8 +20,6 @@ import ( "net/http" "net/http/httptest" "os" - "path/filepath" - "runtime" "runtime/pprof" "strings" "testing" @@ -65,7 +63,7 @@ func TestTiKVProfileCPU(t *testing.T) { // mock tikv profile copyHandler := func(filename string) http.HandlerFunc { return func(w http.ResponseWriter, _ *http.Request) { - file, err := os.Open(filepath.Join(currentSourceDir(), filename)) + file, err := os.Open(filename) if err != nil { http.Error(w, err.Error(), http.StatusBadRequest) return @@ -146,7 +144,7 @@ func TestTiKVProfileCPU(t *testing.T) { } // mock PD profile - router.HandleFunc("/pd/api/v1/debug/pprof/profile", copyHandler("../../util/profile/testdata/test.pprof")) + router.HandleFunc("/pd/api/v1/debug/pprof/profile", copyHandler("testdata/test.pprof")) router.HandleFunc("/pd/api/v1/debug/pprof/heap", handlerFactory("heap")) router.HandleFunc("/pd/api/v1/debug/pprof/mutex", handlerFactory("mutex")) router.HandleFunc("/pd/api/v1/debug/pprof/allocs", handlerFactory("allocs")) @@ -197,8 +195,3 @@ func newMockStore(t *testing.T) (store kv.Storage, clean func()) { return } - -func currentSourceDir() string { - _, file, _, _ := runtime.Caller(0) - return filepath.Dir(file) -} diff --git a/infoschema/perfschema/testdata/test.pprof b/infoschema/perfschema/testdata/test.pprof new file mode 100644 index 0000000000000..118d3f3faecf2 Binary files /dev/null and b/infoschema/perfschema/testdata/test.pprof differ diff --git a/infoschema/tables.go b/infoschema/tables.go index 698682044d9c3..622eb1ef9452c 100644 --- a/infoschema/tables.go +++ b/infoschema/tables.go @@ -31,7 +31,9 @@ import ( "github.com/pingcap/tidb/parser/model" "github.com/pingcap/tidb/parser/mysql" "github.com/pingcap/tidb/parser/terror" + "github.com/pingcap/tidb/util/logutil" "github.com/pingcap/tidb/util/stmtsummary" + "go.uber.org/zap" "github.com/pingcap/tidb/config" "github.com/pingcap/tidb/ddl/placement" @@ -178,6 +180,8 @@ const ( TableAttributes = "ATTRIBUTES" // TablePlacementPolicies is the string constant of placement policies table. TablePlacementPolicies = "PLACEMENT_POLICIES" + // TableTrxSummary is the string constant of transaction summary table. + TableTrxSummary = "TRX_SUMMARY" ) const ( @@ -276,6 +280,8 @@ var tableIDMap = map[string]int64{ TableAttributes: autoid.InformationSchemaDBID + 77, TableTiDBHotRegionsHistory: autoid.InformationSchemaDBID + 78, TablePlacementPolicies: autoid.InformationSchemaDBID + 79, + TableTrxSummary: autoid.InformationSchemaDBID + 80, + ClusterTableTrxSummary: autoid.InformationSchemaDBID + 81, } // columnInfo represents the basic column information of all kinds of INFORMATION_SCHEMA tables @@ -1461,6 +1467,11 @@ var tableAttributesCols = []columnInfo{ {name: "RANGES", tp: mysql.TypeBlob, size: types.UnspecifiedLength}, } +var tableTrxSummaryCols = []columnInfo{ + {name: "DIGEST", tp: mysql.TypeVarchar, size: 16, flag: mysql.NotNullFlag, comment: "Digest of a transaction"}, + {name: txninfo.AllSQLDigestsStr, tp: mysql.TypeBlob, size: types.UnspecifiedLength, comment: "A list of the digests of SQL statements that the transaction has executed"}, +} + var tablePlacementPoliciesCols = []columnInfo{ {name: "POLICY_ID", tp: mysql.TypeLonglong, size: 64, flag: mysql.NotNullFlag}, {name: "CATALOG_NAME", tp: mysql.TypeVarchar, size: 512, flag: mysql.NotNullFlag}, @@ -1578,6 +1589,7 @@ func GetClusterServerInfo(ctx sessionctx.Context) ([]ServerInfo, error) { }) type retriever func(ctx sessionctx.Context) ([]ServerInfo, error) + //nolint: prealloc var servers []ServerInfo for _, r := range []retriever{GetTiDBServerInfo, GetPDServerInfo, GetStoreServerInfo} { nodes, err := r(ctx) @@ -1654,18 +1666,33 @@ func GetPDServerInfo(ctx sessionctx.Context) ([]ServerInfo, error) { if err != nil { return nil, errors.Trace(err) } - var servers = make([]ServerInfo, 0, len(members)) + // TODO: maybe we should unify the PD API request interface. + var ( + memberNum = len(members) + servers = make([]ServerInfo, 0, memberNum) + errs = make([]error, 0, memberNum) + ) + if memberNum == 0 { + return servers, nil + } + // 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) req, err := http.NewRequest(http.MethodGet, url, nil) if err != nil { - return nil, errors.Trace(err) + ctx.GetSessionVars().StmtCtx.AppendWarning(err) + logutil.BgLogger().Warn("create pd server info request error", zap.String("url", url), zap.Error(err)) + errs = append(errs, err) + continue } req.Header.Add("PD-Allow-follower-handle", "true") resp, err := util.InternalHTTPClient().Do(req) if err != nil { - return nil, errors.Trace(err) + ctx.GetSessionVars().StmtCtx.AppendWarning(err) + logutil.BgLogger().Warn("request pd server info error", zap.String("url", url), zap.Error(err)) + errs = append(errs, err) + continue } var content = struct { Version string `json:"version"` @@ -1675,7 +1702,10 @@ func GetPDServerInfo(ctx sessionctx.Context) ([]ServerInfo, error) { err = json.NewDecoder(resp.Body).Decode(&content) terror.Log(resp.Body.Close()) if err != nil { - return nil, errors.Trace(err) + ctx.GetSessionVars().StmtCtx.AppendWarning(err) + logutil.BgLogger().Warn("close pd server info request error", zap.String("url", url), zap.Error(err)) + errs = append(errs, err) + continue } if len(content.Version) > 0 && content.Version[0] == 'v' { content.Version = content.Version[1:] @@ -1690,6 +1720,17 @@ func GetPDServerInfo(ctx sessionctx.Context) ([]ServerInfo, error) { StartTimestamp: content.StartTimestamp, }) } + // Return the errors if all members' requests fail. + if len(errs) == memberNum { + errorMsg := "" + for idx, err := range errs { + errorMsg += err.Error() + if idx < memberNum-1 { + errorMsg += "; " + } + } + return nil, errors.Trace(fmt.Errorf("%s", errorMsg)) + } return servers, nil } @@ -1848,6 +1889,7 @@ var tableNameToColumns = map[string][]columnInfo{ TableDataLockWaits: tableDataLockWaitsCols, TableAttributes: tableAttributesCols, TablePlacementPolicies: tablePlacementPoliciesCols, + TableTrxSummary: tableTrxSummaryCols, } func createInfoSchemaTable(_ autoid.Allocators, meta *model.TableInfo) (table.Table, error) { diff --git a/infoschema/tables_test.go b/infoschema/tables_test.go index 962a8db8e0d13..cf9075ee21f29 100644 --- a/infoschema/tables_test.go +++ b/infoschema/tables_test.go @@ -1479,6 +1479,37 @@ func TestTiDBTrx(t *testing.T) { "[null,null,\"update `test_tidb_trx` set `i` = `i` + ?\"]")) } +func TestTiDBTrxSummary(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + + tk := newTestKitWithRoot(t, store) + tk.MustExec("drop table if exists test_tidb_trx") + tk.MustExec("create table test_tidb_trx(i int)") + _, beginDigest := parser.NormalizeDigest("begin") + _, digest := parser.NormalizeDigest("update test_tidb_trx set i = i + 1") + _, commitDigest := parser.NormalizeDigest("commit") + txninfo.Recorder.Clean() + txninfo.Recorder.SetMinDuration(500 * time.Millisecond) + defer txninfo.Recorder.SetMinDuration(2147483647) + txninfo.Recorder.ResizeSummaries(128) + defer txninfo.Recorder.ResizeSummaries(0) + tk.MustExec("begin") + tk.MustExec("update test_tidb_trx set i = i + 1") + time.Sleep(1 * time.Second) + tk.MustExec("update test_tidb_trx set i = i + 1") + tk.MustExec("commit") + // it is possible for TRX_SUMMARY to have other rows (due to parallel execution of tests) + for _, row := range tk.MustQuery("select * from information_schema.TRX_SUMMARY;").Rows() { + // so we just look for the row we are looking for + if row[0] == "1bb679108d0012a8" { + require.Equal(t, strings.TrimSpace(row[1].(string)), "[\""+beginDigest.String()+"\",\""+digest.String()+"\",\""+digest.String()+"\",\""+commitDigest.String()+"\"]") + return + } + } + t.Fatal("cannot find the expected row") +} + func TestInfoSchemaDeadlockPrivilege(t *testing.T) { store, clean := testkit.CreateMockStore(t) defer clean() diff --git a/kv/BUILD.bazel b/kv/BUILD.bazel new file mode 100644 index 0000000000000..fed476f803dfc --- /dev/null +++ b/kv/BUILD.bazel @@ -0,0 +1,87 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "kv", + srcs = [ + "cachedb.go", + "checker.go", + "error.go", + "fault_injection.go", + "iter.go", + "key.go", + "keyflags.go", + "kv.go", + "mpp.go", + "option.go", + "txn.go", + "txn_scope_var.go", + "utils.go", + "variables.go", + "version.go", + ], + importpath = "github.com/pingcap/tidb/kv", + visibility = ["//visibility:public"], + deps = [ + "//config", + "//errno", + "//parser/model", + "//parser/mysql", + "//parser/terror", + "//types", + "//util/codec", + "//util/dbterror", + "//util/logutil", + "//util/memory", + "//util/set", + "//util/trxevents", + "@com_github_coocood_freecache//:freecache", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_pingcap_kvproto//pkg/deadlock", + "@com_github_pingcap_kvproto//pkg/kvrpcpb", + "@com_github_pingcap_kvproto//pkg/metapb", + "@com_github_pingcap_kvproto//pkg/mpp", + "@com_github_pingcap_tipb//go-tipb", + "@com_github_tikv_client_go_v2//kv", + "@com_github_tikv_client_go_v2//oracle", + "@com_github_tikv_client_go_v2//tikv", + "@com_github_tikv_client_go_v2//tikvrpc", + "@com_github_tikv_pd_client//:client", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "kv_test", + srcs = [ + "checker_test.go", + "error_test.go", + "fault_injection_test.go", + "interface_mock_test.go", + "key_test.go", + "main_test.go", + "mock_test.go", + "txn_test.go", + "utils_test.go", + "version_test.go", + ], + embed = [":kv"], + deps = [ + "//parser/model", + "//parser/mysql", + "//parser/terror", + "//sessionctx/stmtctx", + "//testkit/testsetup", + "//testkit/testutil", + "//types", + "//util/codec", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_kvproto//pkg/deadlock", + "@com_github_pingcap_kvproto//pkg/kvrpcpb", + "@com_github_stretchr_testify//assert", + "@com_github_stretchr_testify//require", + "@com_github_tikv_client_go_v2//oracle", + "@com_github_tikv_client_go_v2//tikv", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/kv/key.go b/kv/key.go index 3e68b5fc80dd7..561cc2a03fd78 100644 --- a/kv/key.go +++ b/kv/key.go @@ -23,6 +23,7 @@ import ( "github.com/pingcap/tidb/types" "github.com/pingcap/tidb/util/codec" + "github.com/pingcap/tidb/util/set" ) // Key represents high-level Key type. @@ -158,9 +159,15 @@ type Handle interface { // String implements the fmt.Stringer interface. String() string // MemUsage returns the memory usage of a handle. - MemUsage() int64 + MemUsage() uint64 + // ExtraMemSize returns the memory usage of objects that are pointed to by the Handle. + ExtraMemSize() uint64 } +var _ Handle = IntHandle(0) +var _ Handle = &CommonHandle{} +var _ Handle = PartitionHandle{} + // IntHandle implement the Handle interface for int64 type handle. type IntHandle int64 @@ -231,10 +238,15 @@ func (ih IntHandle) String() string { } // MemUsage implements the Handle interface. -func (ih IntHandle) MemUsage() int64 { +func (ih IntHandle) MemUsage() uint64 { return 8 } +// ExtraMemSize implements the Handle interface. +func (ih IntHandle) ExtraMemSize() uint64 { + return 0 +} + // CommonHandle implements the Handle interface for non-int64 type handle. type CommonHandle struct { encoded []byte @@ -355,8 +367,15 @@ func (ch *CommonHandle) String() string { } // MemUsage implements the Handle interface. -func (ch *CommonHandle) MemUsage() int64 { - return int64(cap(ch.encoded)) + int64(cap(ch.colEndOffsets))*2 +func (ch *CommonHandle) MemUsage() uint64 { + // 48 is used by the 2 slice fields. + return 48 + ch.ExtraMemSize() +} + +// ExtraMemSize implements the Handle interface. +func (ch *CommonHandle) ExtraMemSize() uint64 { + // colEndOffsets is a slice of uint16. + return uint64(cap(ch.encoded) + cap(ch.colEndOffsets)*2) } // HandleMap is the map for Handle. @@ -431,6 +450,65 @@ func (m *HandleMap) Range(fn func(h Handle, val interface{}) bool) { } } +// MemAwareHandleMap is similar to HandleMap, but it's aware of its memory usage and doesn't support delete. +// It only tracks the actual sizes. Objects that are pointed to by the key or value are not tracked. +// Those should be tracked by the caller. +type MemAwareHandleMap[V any] struct { + ints set.MemAwareMap[int64, V] + strs set.MemAwareMap[string, strHandleValue[V]] +} + +type strHandleValue[V any] struct { + h Handle + val V +} + +// NewMemAwareHandleMap creates a new map for handle. +func NewMemAwareHandleMap[V any]() *MemAwareHandleMap[V] { + // Initialize the two maps to avoid checking nil. + return &MemAwareHandleMap[V]{ + ints: set.NewMemAwareMap[int64, V](), + strs: set.NewMemAwareMap[string, strHandleValue[V]](), + } +} + +// Get gets a value by a Handle. +func (m *MemAwareHandleMap[V]) Get(h Handle) (v V, ok bool) { + if h.IsInt() { + v, ok = m.ints.Get(h.IntValue()) + } else { + var strVal strHandleValue[V] + strVal, ok = m.strs.Get(string(h.Encoded())) + v = strVal.val + } + return +} + +// Set sets a value with a Handle. +func (m *MemAwareHandleMap[V]) Set(h Handle, val V) int64 { + if h.IsInt() { + return m.ints.Set(h.IntValue(), val) + } + return m.strs.Set(string(h.Encoded()), strHandleValue[V]{ + h: h, + val: val, + }) +} + +// Range iterates the MemAwareHandleMap with fn, the fn returns true to continue, returns false to stop. +func (m *MemAwareHandleMap[V]) Range(fn func(h Handle, val interface{}) bool) { + for h, val := range m.ints.M { + if !fn(IntHandle(h), val) { + return + } + } + for _, strVal := range m.strs.M { + if !fn(strVal.h, strVal.val) { + return + } + } +} + // PartitionHandle combines a handle and a PartitionID, used to location a row in partitioned table. // Now only used in global index. // TODO: support PartitionHandle in HandleMap. @@ -470,6 +548,11 @@ func (ph PartitionHandle) Compare(h Handle) int { } // MemUsage implements the Handle interface. -func (ph PartitionHandle) MemUsage() int64 { +func (ph PartitionHandle) MemUsage() uint64 { return ph.Handle.MemUsage() + 8 } + +// ExtraMemSize implements the Handle interface. +func (ph PartitionHandle) ExtraMemSize() uint64 { + return ph.Handle.ExtraMemSize() +} diff --git a/kv/key_test.go b/kv/key_test.go index 3d3ee3ce5fb1a..af45999d5e5bc 100644 --- a/kv/key_test.go +++ b/kv/key_test.go @@ -17,6 +17,7 @@ package kv_test import ( "bytes" "errors" + "strconv" "testing" "time" @@ -221,3 +222,83 @@ func BenchmarkIsPoint(b *testing.B) { kr.IsPoint() } } + +var result int + +var inputs = []struct { + input int +}{ + {input: 1}, + {input: 100}, + {input: 10000}, + {input: 1000000}, +} + +func memAwareIntMap(size int, handles []Handle) int { + var x int + m := NewMemAwareHandleMap[int]() + for j := 0; j < size; j++ { + m.Set(handles[j], j) + } + for j := 0; j < size; j++ { + x, _ = m.Get(handles[j]) + } + return x +} + +func nativeIntMap(size int, handles []Handle) int { + var x int + m := make(map[Handle]int) + for j := 0; j < size; j++ { + m[handles[j]] = j + } + + for j := 0; j < size; j++ { + x = m[handles[j]] + } + return x +} + +func BenchmarkMemAwareHandleMap(b *testing.B) { + var sc stmtctx.StatementContext + for _, s := range inputs { + handles := make([]Handle, s.input) + for i := 0; i < s.input; i++ { + if i%2 == 0 { + handles[i] = IntHandle(i) + } else { + handleBytes, _ := codec.EncodeKey(&sc, nil, types.NewIntDatum(int64(i))) + handles[i], _ = NewCommonHandle(handleBytes) + } + } + b.Run("MemAwareIntMap_"+strconv.Itoa(s.input), func(b *testing.B) { + var x int + for i := 0; i < b.N; i++ { + x = memAwareIntMap(s.input, handles) + } + result = x + }) + } +} + +func BenchmarkNativeHandleMap(b *testing.B) { + var sc stmtctx.StatementContext + for _, s := range inputs { + handles := make([]Handle, s.input) + for i := 0; i < s.input; i++ { + if i%2 == 0 { + handles[i] = IntHandle(i) + } else { + handleBytes, _ := codec.EncodeKey(&sc, nil, types.NewIntDatum(int64(i))) + handles[i], _ = NewCommonHandle(handleBytes) + } + } + b.Run("NativeIntMap_"+strconv.Itoa(s.input), func(b *testing.B) { + var x int + for i := 0; i < b.N; i++ { + x = nativeIntMap(s.input, handles) + } + result = x + }) + } +} diff --git a/kv/kv.go b/kv/kv.go index 8082ffe9bcf87..486b93007217d 100644 --- a/kv/kv.go +++ b/kv/kv.go @@ -174,6 +174,9 @@ type MemBuffer interface { // Size returns sum of keys and values length. Size() int + + // RemoveFromBuffer removes the entry from the buffer. It's used for testing. + RemoveFromBuffer(Key) } // LockCtx contains information for LockKeys method. @@ -338,9 +341,6 @@ type Request struct { Desc bool // NotFillCache makes this request do not touch the LRU cache of the underlying storage. NotFillCache bool - // Streaming indicates using streaming API for this request, result in that one Next() - // call would not corresponds to a whole region result. - Streaming bool // ReplicaRead is used for reading data from replicas, only follower is supported at this time. ReplicaRead ReplicaReadType // StoreType represents this request is sent to the which type of store. diff --git a/lock/BUILD.bazel b/lock/BUILD.bazel new file mode 100644 index 0000000000000..14a4629494cde --- /dev/null +++ b/lock/BUILD.bazel @@ -0,0 +1,16 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "lock", + srcs = ["lock.go"], + importpath = "github.com/pingcap/tidb/lock", + visibility = ["//visibility:public"], + deps = [ + "//infoschema", + "//parser/model", + "//parser/mysql", + "//sessionctx", + "//table", + "//util", + ], +) diff --git a/meta/BUILD.bazel b/meta/BUILD.bazel new file mode 100644 index 0000000000000..2138e3ef080d8 --- /dev/null +++ b/meta/BUILD.bazel @@ -0,0 +1,45 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "meta", + srcs = [ + "meta.go", + "meta_autoid.go", + ], + importpath = "github.com/pingcap/tidb/meta", + visibility = ["//visibility:public"], + deps = [ + "//errno", + "//kv", + "//metrics", + "//parser/model", + "//parser/mysql", + "//structure", + "//util/dbterror", + "//util/logutil", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_kvproto//pkg/kvrpcpb", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "meta_test", + srcs = [ + "main_test.go", + "meta_test.go", + ], + embed = [":meta"], + flaky = True, + deps = [ + "//kv", + "//parser/model", + "//store/mockstore", + "//testkit/testsetup", + "//testkit/testutil", + "//util", + "@com_github_pingcap_errors//:errors", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/meta/autoid/BUILD.bazel b/meta/autoid/BUILD.bazel new file mode 100644 index 0000000000000..3d74004a554ef --- /dev/null +++ b/meta/autoid/BUILD.bazel @@ -0,0 +1,58 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "autoid", + srcs = [ + "autoid.go", + "errors.go", + "memid.go", + ], + importpath = "github.com/pingcap/tidb/meta/autoid", + visibility = ["//visibility:public"], + deps = [ + "//errno", + "//kv", + "//meta", + "//metrics", + "//parser/model", + "//parser/mysql", + "//types", + "//util/dbterror", + "//util/execdetails", + "//util/logutil", + "//util/mathutil", + "@com_github_opentracing_opentracing_go//:opentracing-go", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_tikv_client_go_v2//txnkv/txnsnapshot", + "@com_github_tikv_client_go_v2//util", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "autoid_test", + srcs = [ + "autoid_test.go", + "bench_test.go", + "main_test.go", + "memid_test.go", + "seq_autoid_test.go", + ], + deps = [ + ":autoid", + "//kv", + "//meta", + "//parser/model", + "//parser/mysql", + "//parser/terror", + "//store/mockstore", + "//testkit/testsetup", + "//types", + "//util", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/metrics/BUILD.bazel b/metrics/BUILD.bazel new file mode 100644 index 0000000000000..6ff2486d8c333 --- /dev/null +++ b/metrics/BUILD.bazel @@ -0,0 +1,50 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "metrics", + srcs = [ + "bindinfo.go", + "ddl.go", + "distsql.go", + "domain.go", + "executor.go", + "gc_worker.go", + "meta.go", + "metrics.go", + "owner.go", + "server.go", + "session.go", + "sli.go", + "stats.go", + "telemetry.go", + "topsql.go", + ], + importpath = "github.com/pingcap/tidb/metrics", + visibility = ["//visibility:public"], + deps = [ + "//parser/terror", + "//util/logutil", + "@com_github_pingcap_errors//:errors", + "@com_github_prometheus_client_golang//prometheus", + "@com_github_prometheus_client_golang//prometheus/collectors", + "@com_github_prometheus_client_model//go", + "@com_github_tikv_client_go_v2//metrics", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "metrics_test", + srcs = [ + "main_test.go", + "metrics_test.go", + ], + embed = [":metrics"], + deps = [ + "//parser/terror", + "//testkit/testsetup", + "@com_github_pingcap_errors//:errors", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/metrics/distsql.go b/metrics/distsql.go index 3a4527da510ae..0452f54ee9913 100644 --- a/metrics/distsql.go +++ b/metrics/distsql.go @@ -53,12 +53,11 @@ var ( Help: "number of partial results for each query.", }, ) - DistSQLCoprCacheHistogram = prometheus.NewHistogramVec( - prometheus.HistogramOpts{ + DistSQLCoprCacheCounter = prometheus.NewCounterVec( + prometheus.CounterOpts{ Namespace: "tidb", Subsystem: "distsql", Name: "copr_cache", Help: "coprocessor cache hit, evict and miss number", - Buckets: prometheus.ExponentialBuckets(1, 2, 16), }, []string{LblType}) ) diff --git a/metrics/grafana/tidb.json b/metrics/grafana/tidb.json index a9bbf1ab4b83f..fcb3dfa5b55ca 100644 --- a/metrics/grafana/tidb.json +++ b/metrics/grafana/tidb.json @@ -6855,7 +6855,7 @@ "steppedLine": false, "targets": [ { - "expr": "sum(rate(tidb_distsql_copr_cache_sum{k8s_cluster=\"$k8s_cluster\", tidb_cluster=\"$tidb_cluster\", instance=~\"$instance\"}[1m])) by (type)", + "expr": "sum(rate(tidb_distsql_copr_cache{k8s_cluster=\"$k8s_cluster\", tidb_cluster=\"$tidb_cluster\", instance=~\"$instance\"}[1m])) by (type)", "format": "time_series", "intervalFactor": 2, "legendFormat": "{{type}}", diff --git a/metrics/metrics.go b/metrics/metrics.go index 0bd98364ef275..565790480c6c7 100644 --- a/metrics/metrics.go +++ b/metrics/metrics.go @@ -15,9 +15,13 @@ package metrics import ( + "sync" + + "github.com/pingcap/tidb/util/logutil" "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/collectors" tikvmetrics "github.com/tikv/client-go/v2/metrics" + "go.uber.org/zap" ) var ( @@ -98,7 +102,7 @@ func RegisterMetrics() { prometheus.MustRegister(DDLWorkerHistogram) prometheus.MustRegister(DeploySyncerHistogram) prometheus.MustRegister(DistSQLPartialCountHistogram) - prometheus.MustRegister(DistSQLCoprCacheHistogram) + prometheus.MustRegister(DistSQLCoprCacheCounter) prometheus.MustRegister(DistSQLQueryHistogram) prometheus.MustRegister(DistSQLScanKeysHistogram) prometheus.MustRegister(DistSQLScanKeysPartialHistogram) @@ -190,3 +194,53 @@ func RegisterMetrics() { tikvmetrics.RegisterMetrics() tikvmetrics.TiKVPanicCounter = PanicCounter // reset tidb metrics for tikv metrics } + +var mode struct { + sync.Mutex + isSimplified bool +} + +// ToggleSimplifiedMode is used to register/unregister the metrics that unused by grafana. +func ToggleSimplifiedMode(simplified bool) { + var unusedMetricsByGrafana = []prometheus.Collector{ + StatementDeadlockDetectDuration, + ValidateReadTSFromPDCount, + LoadTableCacheDurationHistogram, + TxnWriteThroughput, + SmallTxnWriteDuration, + InfoCacheCounters, + ReadFromTableCacheCounter, + TiFlashQueryTotalCounter, + CampaignOwnerCounter, + NonTransactionalDeleteCount, + MemoryUsage, + TokenGauge, + tikvmetrics.TiKVRawkvSizeHistogram, + tikvmetrics.TiKVRawkvCmdHistogram, + tikvmetrics.TiKVReadThroughput, + tikvmetrics.TiKVSmallReadDuration, + tikvmetrics.TiKVBatchWaitOverLoad, + tikvmetrics.TiKVBatchClientRecycle, + tikvmetrics.TiKVRequestRetryTimesHistogram, + tikvmetrics.TiKVStatusDuration, + } + mode.Lock() + defer mode.Unlock() + if mode.isSimplified == simplified { + return + } + mode.isSimplified = simplified + if simplified { + for _, m := range unusedMetricsByGrafana { + prometheus.Unregister(m) + } + } else { + for _, m := range unusedMetricsByGrafana { + err := prometheus.Register(m) + if err != nil { + logutil.BgLogger().Error("cannot register metrics", zap.Error(err)) + break + } + } + } +} diff --git a/owner/BUILD.bazel b/owner/BUILD.bazel new file mode 100644 index 0000000000000..8e63fa8ffb3db --- /dev/null +++ b/owner/BUILD.bazel @@ -0,0 +1,52 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "owner", + srcs = [ + "manager.go", + "mock.go", + ], + importpath = "github.com/pingcap/tidb/owner", + visibility = ["//visibility:public"], + deps = [ + "//metrics", + "//parser/terror", + "//util", + "//util/logutil", + "@com_github_pingcap_errors//:errors", + "@io_etcd_go_etcd_api_v3//mvccpb", + "@io_etcd_go_etcd_api_v3//v3rpc/rpctypes", + "@io_etcd_go_etcd_client_v3//:client", + "@io_etcd_go_etcd_client_v3//concurrency", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "owner_test", + srcs = [ + "fail_test.go", + "main_test.go", + "manager_test.go", + ], + embed = [":owner"], + flaky = True, + deps = [ + "//ddl", + "//infoschema", + "//parser/terror", + "//store/mockstore", + "//testkit/testsetup", + "//util", + "//util/logutil", + "@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", + "@io_etcd_go_etcd_client_v3//concurrency", + "@io_etcd_go_etcd_tests_v3//integration", + "@org_golang_google_grpc//:grpc", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/owner/manager.go b/owner/manager.go index f90dd4cebdd2d..1f4eae6c11786 100644 --- a/owner/manager.go +++ b/owner/manager.go @@ -54,6 +54,9 @@ type Manager interface { Cancel() // RequireOwner requires the ownerManager is owner. RequireOwner(ctx context.Context) error + + // SetBeOwnerHook sets a hook. The hook is called before becoming an owner. + SetBeOwnerHook(hook func()) } const ( @@ -68,16 +71,17 @@ type DDLOwnerChecker interface { // ownerManager represents the structure which is used for electing owner. type ownerManager struct { - id string // id is the ID of the manager. - key string - ctx context.Context - prompt string - logPrefix string - logCtx context.Context - etcdCli *clientv3.Client - cancel context.CancelFunc - elec unsafe.Pointer - wg sync.WaitGroup + id string // id is the ID of the manager. + key string + ctx context.Context + prompt string + logPrefix string + logCtx context.Context + etcdCli *clientv3.Client + cancel context.CancelFunc + elec unsafe.Pointer + wg sync.WaitGroup + beOwnerHook func() } // NewOwnerManager creates a new Manager. @@ -117,6 +121,10 @@ func (m *ownerManager) RequireOwner(ctx context.Context) error { return nil } +func (m *ownerManager) SetBeOwnerHook(hook func()) { + m.beOwnerHook = hook +} + // ManagerSessionTTL is the etcd session's TTL in seconds. It's exported for testing. var ManagerSessionTTL = 60 @@ -166,6 +174,9 @@ func (m *ownerManager) ResignOwner(ctx context.Context) error { } func (m *ownerManager) toBeOwner(elec *concurrency.Election) { + if m.beOwnerHook != nil { + m.beOwnerHook() + } atomic.StorePointer(&m.elec, unsafe.Pointer(elec)) } diff --git a/owner/manager_test.go b/owner/manager_test.go index ae080fbe85b63..3668c4d060ad2 100644 --- a/owner/manager_test.go +++ b/owner/manager_test.go @@ -65,10 +65,6 @@ func TestSingle(t *testing.T) { WithInfoCache(ic), ) require.NoError(t, d.OwnerManager().CampaignOwner()) - defer func() { - _ = d.Stop() - }() - isOwner := checkOwner(d, true) require.True(t, isOwner) diff --git a/owner/mock.go b/owner/mock.go index c13ff88f3fdf6..559c46650d080 100644 --- a/owner/mock.go +++ b/owner/mock.go @@ -27,9 +27,10 @@ var _ Manager = &mockManager{} // It's used for local store and testing. // So this worker will always be the owner. type mockManager struct { - owner int32 - id string // id is the ID of manager. - cancel context.CancelFunc + owner int32 + id string // id is the ID of manager. + cancel context.CancelFunc + beOwnerHook func() } // NewMockManager creates a new mock Manager. @@ -52,6 +53,9 @@ func (m *mockManager) IsOwner() bool { } func (m *mockManager) toBeOwner() { + if m.beOwnerHook != nil { + m.beOwnerHook() + } atomic.StoreInt32(&m.owner, 1) } @@ -91,3 +95,7 @@ func (m *mockManager) ResignOwner(ctx context.Context) error { func (m *mockManager) RequireOwner(context.Context) error { return nil } + +func (m *mockManager) SetBeOwnerHook(hook func()) { + m.beOwnerHook = hook +} diff --git a/parser/BUILD.bazel b/parser/BUILD.bazel new file mode 100644 index 0000000000000..a8f3569b97f30 --- /dev/null +++ b/parser/BUILD.bazel @@ -0,0 +1,56 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "parser", + srcs = [ + "digester.go", + "hintparser.go", + "hintparserimpl.go", + "lexer.go", + "misc.go", + "parser.go", + "yy_parser.go", + ], + importpath = "github.com/pingcap/tidb/parser", + visibility = ["//visibility:public"], + deps = [ + "//parser/ast", + "//parser/auth", + "//parser/charset", + "//parser/model", + "//parser/mysql", + "//parser/opcode", + "//parser/terror", + "//parser/tidb", + "//parser/types", + "@com_github_pingcap_errors//:errors", + ], +) + +go_test( + name = "parser_test", + srcs = [ + "bench_test.go", + "consistent_test.go", + "digester_test.go", + "hintparser_test.go", + "lexer_test.go", + "main_test.go", + "parser_test.go", + ], + data = glob(["**"]), + embed = [":parser"], + deps = [ + "//parser/ast", + "//parser/charset", + "//parser/format", + "//parser/model", + "//parser/mysql", + "//parser/opcode", + "//parser/terror", + "//parser/test_driver", + "@com_github_pingcap_errors//:errors", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/parser/ast/BUILD.bazel b/parser/ast/BUILD.bazel new file mode 100644 index 0000000000000..ba1c18eac879b --- /dev/null +++ b/parser/ast/BUILD.bazel @@ -0,0 +1,57 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "ast", + srcs = [ + "advisor.go", + "ast.go", + "base.go", + "ddl.go", + "dml.go", + "expressions.go", + "flag.go", + "functions.go", + "misc.go", + "stats.go", + "util.go", + ], + importpath = "github.com/pingcap/tidb/parser/ast", + visibility = ["//visibility:public"], + deps = [ + "//parser/auth", + "//parser/charset", + "//parser/format", + "//parser/model", + "//parser/mysql", + "//parser/opcode", + "//parser/terror", + "//parser/tidb", + "//parser/types", + "@com_github_pingcap_errors//:errors", + ], +) + +go_test( + name = "ast_test", + srcs = [ + "base_test.go", + "ddl_test.go", + "dml_test.go", + "expressions_test.go", + "flag_test.go", + "format_test.go", + "functions_test.go", + "misc_test.go", + "util_test.go", + ], + embed = [":ast"], + deps = [ + "//parser", + "//parser/auth", + "//parser/charset", + "//parser/format", + "//parser/mysql", + "//parser/test_driver", + "@com_github_stretchr_testify//require", + ], +) diff --git a/parser/ast/dml.go b/parser/ast/dml.go index f1f5674f9a70c..93ee525d30bf5 100644 --- a/parser/ast/dml.go +++ b/parser/ast/dml.go @@ -2674,6 +2674,7 @@ const ( ShowPlacementForTable ShowPlacementForPartition ShowPlacementLabels + ShowSessionStates ) const ( @@ -3025,6 +3026,8 @@ func (n *ShowStmt) Restore(ctx *format.RestoreCtx) error { ctx.WriteKeyWord("PLACEMENT") case ShowPlacementLabels: ctx.WriteKeyWord("PLACEMENT LABELS") + case ShowSessionStates: + ctx.WriteKeyWord("SESSION_STATES") default: return errors.New("Unknown ShowStmt type") } diff --git a/parser/ast/misc.go b/parser/ast/misc.go index a4cd2aa1a61e7..3ec7d5c753ba8 100644 --- a/parser/ast/misc.go +++ b/parser/ast/misc.go @@ -46,6 +46,7 @@ var ( _ StmtNode = &SetRoleStmt{} _ StmtNode = &SetDefaultRoleStmt{} _ StmtNode = &SetStmt{} + _ StmtNode = &SetSessionStatesStmt{} _ StmtNode = &UseStmt{} _ StmtNode = &FlushStmt{} _ StmtNode = &KillStmt{} @@ -1055,6 +1056,28 @@ func (n *SetConfigStmt) Accept(v Visitor) (Node, bool) { return v.Leave(n) } +// SetSessionStatesStmt is a statement to restore session states. +type SetSessionStatesStmt struct { + stmtNode + + SessionStates string +} + +func (n *SetSessionStatesStmt) Restore(ctx *format.RestoreCtx) error { + ctx.WriteKeyWord("SET SESSION_STATES ") + ctx.WriteString(n.SessionStates) + return nil +} + +func (n *SetSessionStatesStmt) Accept(v Visitor) (Node, bool) { + newNode, skipChildren := v.Enter(n) + if skipChildren { + return v.Leave(newNode) + } + n = newNode.(*SetSessionStatesStmt) + return v.Leave(n) +} + /* // SetCharsetStmt is a statement to assign values to character and collation variables. // See https://dev.mysql.com/doc/refman/5.7/en/set-statement.html @@ -3527,7 +3550,7 @@ func (n *TableOptimizerHint) Restore(ctx *format.RestoreCtx) error { ctx.WritePlainf("%d", n.HintData.(uint64)) case "nth_plan": ctx.WritePlainf("%d", n.HintData.(int64)) - case "tidb_hj", "tidb_smj", "tidb_inlj", "hash_join", "merge_join", "inl_join", "broadcast_join", "inl_hash_join", "inl_merge_join", "leading": + case "tidb_hj", "tidb_smj", "tidb_inlj", "hash_join", "ordered_hash_join", "merge_join", "inl_join", "broadcast_join", "inl_hash_join", "inl_merge_join", "leading": for i, table := range n.Tables { if i != 0 { ctx.WritePlain(", ") diff --git a/parser/ast/misc_test.go b/parser/ast/misc_test.go index 0f5c2270c6341..b87f45c99af11 100644 --- a/parser/ast/misc_test.go +++ b/parser/ast/misc_test.go @@ -241,6 +241,7 @@ func TestTableOptimizerHintRestore(t *testing.T) { {"INL_MERGE_JOIN(t1,t2)", "INL_MERGE_JOIN(`t1`, `t2`)"}, {"INL_JOIN(t1,t2)", "INL_JOIN(`t1`, `t2`)"}, {"HASH_JOIN(t1,t2)", "HASH_JOIN(`t1`, `t2`)"}, + {"ORDERED_HASH_JOIN(t1,t2)", "ORDERED_HASH_JOIN(`t1`, `t2`)"}, {"LEADING(t1)", "LEADING(`t1`)"}, {"LEADING(t1, c1)", "LEADING(`t1`, `c1`)"}, {"LEADING(t1, c1, t2)", "LEADING(`t1`, `c1`, `t2`)"}, diff --git a/parser/auth/BUILD.bazel b/parser/auth/BUILD.bazel new file mode 100644 index 0000000000000..93ad9d22d2d29 --- /dev/null +++ b/parser/auth/BUILD.bazel @@ -0,0 +1,27 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "auth", + srcs = [ + "auth.go", + "caching_sha2.go", + "mysql_native_password.go", + ], + importpath = "github.com/pingcap/tidb/parser/auth", + visibility = ["//visibility:public"], + deps = [ + "//parser/format", + "//parser/terror", + "@com_github_pingcap_errors//:errors", + ], +) + +go_test( + name = "auth_test", + srcs = [ + "caching_sha2_test.go", + "mysql_native_password_test.go", + ], + embed = [":auth"], + deps = ["@com_github_stretchr_testify//require"], +) diff --git a/parser/charset/BUILD.bazel b/parser/charset/BUILD.bazel new file mode 100644 index 0000000000000..564e0d8e29297 --- /dev/null +++ b/parser/charset/BUILD.bazel @@ -0,0 +1,46 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "charset", + srcs = [ + "charset.go", + "encoding.go", + "encoding_ascii.go", + "encoding_base.go", + "encoding_bin.go", + "encoding_gbk.go", + "encoding_latin1.go", + "encoding_table.go", + "encoding_utf8.go", + ], + importpath = "github.com/pingcap/tidb/parser/charset", + visibility = ["//visibility:public"], + deps = [ + "//parser/mysql", + "//parser/terror", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_log//:log", + "@org_golang_x_text//encoding", + "@org_golang_x_text//encoding/charmap", + "@org_golang_x_text//encoding/japanese", + "@org_golang_x_text//encoding/korean", + "@org_golang_x_text//encoding/simplifiedchinese", + "@org_golang_x_text//encoding/traditionalchinese", + "@org_golang_x_text//encoding/unicode", + "@org_golang_x_text//transform", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "charset_test", + srcs = [ + "charset_test.go", + "encoding_test.go", + ], + embed = [":charset"], + deps = [ + "@com_github_stretchr_testify//require", + "@org_golang_x_text//transform", + ], +) diff --git a/parser/consistent_test.go b/parser/consistent_test.go index 17163378b5439..e78b7f31ddddd 100644 --- a/parser/consistent_test.go +++ b/parser/consistent_test.go @@ -73,6 +73,7 @@ func extractMiddle(str, startMarker, endMarker string) string { } func extractQuotedWords(strs []string) []string { + //nolint: prealloc var words []string for _, str := range strs { word := extractMiddle(str, "\"", "\"") diff --git a/parser/format/BUILD.bazel b/parser/format/BUILD.bazel new file mode 100644 index 0000000000000..9ad24b5ca0bf6 --- /dev/null +++ b/parser/format/BUILD.bazel @@ -0,0 +1,18 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "format", + srcs = ["format.go"], + importpath = "github.com/pingcap/tidb/parser/format", + visibility = ["//visibility:public"], +) + +go_test( + name = "format_test", + srcs = ["format_test.go"], + embed = [":format"], + deps = [ + "@com_github_pingcap_errors//:errors", + "@com_github_stretchr_testify//require", + ], +) diff --git a/parser/goyacc/BUILD.bazel b/parser/goyacc/BUILD.bazel new file mode 100644 index 0000000000000..51d0991ed1b0c --- /dev/null +++ b/parser/goyacc/BUILD.bazel @@ -0,0 +1,26 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library") + +go_library( + name = "goyacc_lib", + srcs = [ + "format_yacc.go", + "main.go", + ], + importpath = "github.com/pingcap/tidb/parser/goyacc", + visibility = ["//visibility:private"], + deps = [ + "//parser/format", + "@com_github_cznic_mathutil//:mathutil", + "@com_github_cznic_sortutil//:sortutil", + "@com_github_cznic_strutil//:strutil", + "@com_github_pingcap_errors//:errors", + "@org_modernc_parser//yacc", + "@org_modernc_y//:y", + ], +) + +go_binary( + name = "goyacc", + embed = [":goyacc_lib"], + visibility = ["//visibility:public"], +) diff --git a/parser/hintparser.go b/parser/hintparser.go index b86638e44b682..906f1a0259978 100644 --- a/parser/hintparser.go +++ b/parser/hintparser.go @@ -41,201 +41,203 @@ type yyhintXError struct { } const ( - yyhintDefault = 57417 + yyhintDefault = 57418 yyhintEOFCode = 57344 yyhintErrCode = 57345 - hintAggToCop = 57377 - hintBCJoin = 57390 + hintAggToCop = 57378 + hintBCJoin = 57391 hintBKA = 57355 hintBNL = 57357 - hintDupsWeedOut = 57413 - hintFalse = 57409 - hintFirstMatch = 57414 - hintForceIndex = 57401 - hintGB = 57412 - hintHashAgg = 57379 + hintDupsWeedOut = 57414 + hintFalse = 57410 + hintFirstMatch = 57415 + hintForceIndex = 57402 + hintGB = 57413 + hintHashAgg = 57380 hintHashJoin = 57359 hintIdentifier = 57347 - hintIgnoreIndex = 57380 - hintIgnorePlanCache = 57378 - hintIndexMerge = 57363 - hintInlHashJoin = 57381 - hintInlJoin = 57382 - hintInlMergeJoin = 57383 + hintIgnoreIndex = 57381 + hintIgnorePlanCache = 57379 + hintIndexMerge = 57364 + hintInlHashJoin = 57382 + hintInlJoin = 57383 + hintInlMergeJoin = 57384 hintIntLit = 57346 hintInvalid = 57348 hintJoinFixedOrder = 57351 hintJoinOrder = 57352 hintJoinPrefix = 57353 hintJoinSuffix = 57354 - hintLeading = 57403 - hintLimitToCop = 57400 - hintLooseScan = 57415 - hintMB = 57411 - hintMRR = 57365 - hintMaterialization = 57416 - hintMaxExecutionTime = 57373 - hintMemoryQuota = 57384 - hintMerge = 57361 + hintLeading = 57404 + hintLimitToCop = 57401 + hintLooseScan = 57416 + hintMB = 57412 + hintMRR = 57366 + hintMaterialization = 57417 + hintMaxExecutionTime = 57374 + hintMemoryQuota = 57385 + hintMerge = 57362 hintNoBKA = 57356 hintNoBNL = 57358 - hintNoHashJoin = 57360 - hintNoICP = 57367 - hintNoIndexMerge = 57364 - hintNoMRR = 57366 - hintNoMerge = 57362 - hintNoRangeOptimization = 57368 - hintNoSemijoin = 57372 - hintNoSkipScan = 57370 - hintNoSwapJoinInputs = 57385 - hintNthPlan = 57399 - hintOLAP = 57404 - hintOLTP = 57405 - hintPartition = 57406 - hintQBName = 57376 - hintQueryType = 57386 - hintReadConsistentReplica = 57387 - hintReadFromStorage = 57388 - hintResourceGroup = 57375 - hintSMJoin = 57389 - hintSemijoin = 57371 - hintSetVar = 57374 + hintNoHashJoin = 57361 + hintNoICP = 57368 + hintNoIndexMerge = 57365 + hintNoMRR = 57367 + hintNoMerge = 57363 + hintNoRangeOptimization = 57369 + hintNoSemijoin = 57373 + hintNoSkipScan = 57371 + hintNoSwapJoinInputs = 57386 + hintNthPlan = 57400 + hintOLAP = 57405 + hintOLTP = 57406 + hintOrderedHashJoin = 57360 + hintPartition = 57407 + hintQBName = 57377 + hintQueryType = 57387 + hintReadConsistentReplica = 57388 + hintReadFromStorage = 57389 + hintResourceGroup = 57376 + hintSMJoin = 57390 + hintSemijoin = 57372 + hintSetVar = 57375 hintSingleAtIdentifier = 57349 - hintSkipScan = 57369 - hintStraightJoin = 57402 - hintStreamAgg = 57391 + hintSkipScan = 57370 + hintStraightJoin = 57403 + hintStreamAgg = 57392 hintStringLit = 57350 - hintSwapJoinInputs = 57392 - hintTiFlash = 57408 - hintTiKV = 57407 - hintTimeRange = 57397 - hintTrue = 57410 - hintUseCascades = 57398 - hintUseIndex = 57394 - hintUseIndexMerge = 57393 - hintUsePlanCache = 57395 - hintUseToja = 57396 + hintSwapJoinInputs = 57393 + hintTiFlash = 57409 + hintTiKV = 57408 + hintTimeRange = 57398 + hintTrue = 57411 + hintUseCascades = 57399 + hintUseIndex = 57395 + hintUseIndexMerge = 57394 + hintUsePlanCache = 57396 + hintUseToja = 57397 yyhintMaxDepth = 200 - yyhintTabOfs = -174 + yyhintTabOfs = -176 ) var ( yyhintXLAT = map[int]int{ - 41: 0, // ')' (131x) - 57377: 1, // hintAggToCop (123x) - 57390: 2, // hintBCJoin (123x) - 57355: 3, // hintBKA (123x) - 57357: 4, // hintBNL (123x) - 57401: 5, // hintForceIndex (123x) - 57379: 6, // hintHashAgg (123x) - 57359: 7, // hintHashJoin (123x) - 57380: 8, // hintIgnoreIndex (123x) - 57378: 9, // hintIgnorePlanCache (123x) - 57363: 10, // hintIndexMerge (123x) - 57381: 11, // hintInlHashJoin (123x) - 57382: 12, // hintInlJoin (123x) - 57383: 13, // hintInlMergeJoin (123x) - 57351: 14, // hintJoinFixedOrder (123x) - 57352: 15, // hintJoinOrder (123x) - 57353: 16, // hintJoinPrefix (123x) - 57354: 17, // hintJoinSuffix (123x) - 57403: 18, // hintLeading (123x) - 57400: 19, // hintLimitToCop (123x) - 57373: 20, // hintMaxExecutionTime (123x) - 57384: 21, // hintMemoryQuota (123x) - 57361: 22, // hintMerge (123x) - 57365: 23, // hintMRR (123x) - 57356: 24, // hintNoBKA (123x) - 57358: 25, // hintNoBNL (123x) - 57360: 26, // hintNoHashJoin (123x) - 57367: 27, // hintNoICP (123x) - 57364: 28, // hintNoIndexMerge (123x) - 57362: 29, // hintNoMerge (123x) - 57366: 30, // hintNoMRR (123x) - 57368: 31, // hintNoRangeOptimization (123x) - 57372: 32, // hintNoSemijoin (123x) - 57370: 33, // hintNoSkipScan (123x) - 57385: 34, // hintNoSwapJoinInputs (123x) - 57399: 35, // hintNthPlan (123x) - 57376: 36, // hintQBName (123x) - 57386: 37, // hintQueryType (123x) - 57387: 38, // hintReadConsistentReplica (123x) - 57388: 39, // hintReadFromStorage (123x) - 57375: 40, // hintResourceGroup (123x) - 57371: 41, // hintSemijoin (123x) - 57374: 42, // hintSetVar (123x) - 57369: 43, // hintSkipScan (123x) - 57389: 44, // hintSMJoin (123x) - 57402: 45, // hintStraightJoin (123x) - 57391: 46, // hintStreamAgg (123x) - 57392: 47, // hintSwapJoinInputs (123x) - 57397: 48, // hintTimeRange (123x) - 57398: 49, // hintUseCascades (123x) - 57394: 50, // hintUseIndex (123x) - 57393: 51, // hintUseIndexMerge (123x) - 57395: 52, // hintUsePlanCache (123x) - 57396: 53, // hintUseToja (123x) - 44: 54, // ',' (121x) - 57413: 55, // hintDupsWeedOut (101x) - 57414: 56, // hintFirstMatch (101x) - 57415: 57, // hintLooseScan (101x) - 57416: 58, // hintMaterialization (101x) - 57408: 59, // hintTiFlash (101x) - 57407: 60, // hintTiKV (101x) - 57409: 61, // hintFalse (100x) - 57404: 62, // hintOLAP (100x) - 57405: 63, // hintOLTP (100x) - 57410: 64, // hintTrue (100x) - 57412: 65, // hintGB (99x) - 57411: 66, // hintMB (99x) - 57347: 67, // hintIdentifier (98x) - 57349: 68, // hintSingleAtIdentifier (83x) - 93: 69, // ']' (77x) - 57406: 70, // hintPartition (71x) - 46: 71, // '.' (67x) - 61: 72, // '=' (67x) - 40: 73, // '(' (62x) - 57344: 74, // $end (24x) - 57437: 75, // QueryBlockOpt (17x) - 57429: 76, // Identifier (13x) - 57346: 77, // hintIntLit (8x) - 57350: 78, // hintStringLit (5x) - 57419: 79, // CommaOpt (4x) - 57425: 80, // HintTable (4x) - 57426: 81, // HintTableList (4x) - 91: 82, // '[' (3x) - 57418: 83, // BooleanHintName (2x) - 57420: 84, // HintIndexList (2x) - 57422: 85, // HintStorageType (2x) - 57423: 86, // HintStorageTypeAndTable (2x) - 57427: 87, // HintTableListOpt (2x) - 57432: 88, // JoinOrderOptimizerHintName (2x) - 57433: 89, // NullaryHintName (2x) - 57436: 90, // PartitionListOpt (2x) - 57439: 91, // StorageOptimizerHintOpt (2x) - 57440: 92, // SubqueryOptimizerHintName (2x) - 57443: 93, // SubqueryStrategy (2x) - 57444: 94, // SupportedIndexLevelOptimizerHintName (2x) - 57445: 95, // SupportedTableLevelOptimizerHintName (2x) - 57446: 96, // TableOptimizerHintOpt (2x) - 57448: 97, // UnsupportedIndexLevelOptimizerHintName (2x) - 57449: 98, // UnsupportedTableLevelOptimizerHintName (2x) - 57421: 99, // HintQueryType (1x) - 57424: 100, // HintStorageTypeAndTableList (1x) - 57428: 101, // HintTrueOrFalse (1x) - 57430: 102, // IndexNameList (1x) - 57431: 103, // IndexNameListOpt (1x) - 57434: 104, // OptimizerHintList (1x) - 57435: 105, // PartitionList (1x) - 57438: 106, // Start (1x) - 57441: 107, // SubqueryStrategies (1x) - 57442: 108, // SubqueryStrategiesOpt (1x) - 57447: 109, // UnitOfBytes (1x) - 57450: 110, // Value (1x) - 57417: 111, // $default (0x) - 57345: 112, // error (0x) - 57348: 113, // hintInvalid (0x) + 41: 0, // ')' (132x) + 57378: 1, // hintAggToCop (124x) + 57391: 2, // hintBCJoin (124x) + 57355: 3, // hintBKA (124x) + 57357: 4, // hintBNL (124x) + 57402: 5, // hintForceIndex (124x) + 57380: 6, // hintHashAgg (124x) + 57359: 7, // hintHashJoin (124x) + 57381: 8, // hintIgnoreIndex (124x) + 57379: 9, // hintIgnorePlanCache (124x) + 57364: 10, // hintIndexMerge (124x) + 57382: 11, // hintInlHashJoin (124x) + 57383: 12, // hintInlJoin (124x) + 57384: 13, // hintInlMergeJoin (124x) + 57351: 14, // hintJoinFixedOrder (124x) + 57352: 15, // hintJoinOrder (124x) + 57353: 16, // hintJoinPrefix (124x) + 57354: 17, // hintJoinSuffix (124x) + 57404: 18, // hintLeading (124x) + 57401: 19, // hintLimitToCop (124x) + 57374: 20, // hintMaxExecutionTime (124x) + 57385: 21, // hintMemoryQuota (124x) + 57362: 22, // hintMerge (124x) + 57366: 23, // hintMRR (124x) + 57356: 24, // hintNoBKA (124x) + 57358: 25, // hintNoBNL (124x) + 57361: 26, // hintNoHashJoin (124x) + 57368: 27, // hintNoICP (124x) + 57365: 28, // hintNoIndexMerge (124x) + 57363: 29, // hintNoMerge (124x) + 57367: 30, // hintNoMRR (124x) + 57369: 31, // hintNoRangeOptimization (124x) + 57373: 32, // hintNoSemijoin (124x) + 57371: 33, // hintNoSkipScan (124x) + 57386: 34, // hintNoSwapJoinInputs (124x) + 57400: 35, // hintNthPlan (124x) + 57360: 36, // hintOrderedHashJoin (124x) + 57377: 37, // hintQBName (124x) + 57387: 38, // hintQueryType (124x) + 57388: 39, // hintReadConsistentReplica (124x) + 57389: 40, // hintReadFromStorage (124x) + 57376: 41, // hintResourceGroup (124x) + 57372: 42, // hintSemijoin (124x) + 57375: 43, // hintSetVar (124x) + 57370: 44, // hintSkipScan (124x) + 57390: 45, // hintSMJoin (124x) + 57403: 46, // hintStraightJoin (124x) + 57392: 47, // hintStreamAgg (124x) + 57393: 48, // hintSwapJoinInputs (124x) + 57398: 49, // hintTimeRange (124x) + 57399: 50, // hintUseCascades (124x) + 57395: 51, // hintUseIndex (124x) + 57394: 52, // hintUseIndexMerge (124x) + 57396: 53, // hintUsePlanCache (124x) + 57397: 54, // hintUseToja (124x) + 44: 55, // ',' (122x) + 57414: 56, // hintDupsWeedOut (102x) + 57415: 57, // hintFirstMatch (102x) + 57416: 58, // hintLooseScan (102x) + 57417: 59, // hintMaterialization (102x) + 57409: 60, // hintTiFlash (102x) + 57408: 61, // hintTiKV (102x) + 57410: 62, // hintFalse (101x) + 57405: 63, // hintOLAP (101x) + 57406: 64, // hintOLTP (101x) + 57411: 65, // hintTrue (101x) + 57413: 66, // hintGB (100x) + 57412: 67, // hintMB (100x) + 57347: 68, // hintIdentifier (99x) + 57349: 69, // hintSingleAtIdentifier (84x) + 93: 70, // ']' (78x) + 57407: 71, // hintPartition (72x) + 46: 72, // '.' (68x) + 61: 73, // '=' (68x) + 40: 74, // '(' (63x) + 57344: 75, // $end (24x) + 57438: 76, // QueryBlockOpt (17x) + 57430: 77, // Identifier (13x) + 57346: 78, // hintIntLit (8x) + 57350: 79, // hintStringLit (5x) + 57420: 80, // CommaOpt (4x) + 57426: 81, // HintTable (4x) + 57427: 82, // HintTableList (4x) + 91: 83, // '[' (3x) + 57419: 84, // BooleanHintName (2x) + 57421: 85, // HintIndexList (2x) + 57423: 86, // HintStorageType (2x) + 57424: 87, // HintStorageTypeAndTable (2x) + 57428: 88, // HintTableListOpt (2x) + 57433: 89, // JoinOrderOptimizerHintName (2x) + 57434: 90, // NullaryHintName (2x) + 57437: 91, // PartitionListOpt (2x) + 57440: 92, // StorageOptimizerHintOpt (2x) + 57441: 93, // SubqueryOptimizerHintName (2x) + 57444: 94, // SubqueryStrategy (2x) + 57445: 95, // SupportedIndexLevelOptimizerHintName (2x) + 57446: 96, // SupportedTableLevelOptimizerHintName (2x) + 57447: 97, // TableOptimizerHintOpt (2x) + 57449: 98, // UnsupportedIndexLevelOptimizerHintName (2x) + 57450: 99, // UnsupportedTableLevelOptimizerHintName (2x) + 57422: 100, // HintQueryType (1x) + 57425: 101, // HintStorageTypeAndTableList (1x) + 57429: 102, // HintTrueOrFalse (1x) + 57431: 103, // IndexNameList (1x) + 57432: 104, // IndexNameListOpt (1x) + 57435: 105, // OptimizerHintList (1x) + 57436: 106, // PartitionList (1x) + 57439: 107, // Start (1x) + 57442: 108, // SubqueryStrategies (1x) + 57443: 109, // SubqueryStrategiesOpt (1x) + 57448: 110, // UnitOfBytes (1x) + 57451: 111, // Value (1x) + 57418: 112, // $default (0x) + 57345: 113, // error (0x) + 57348: 114, // hintInvalid (0x) } yyhintSymNames = []string{ @@ -275,6 +277,7 @@ var ( "hintNoSkipScan", "hintNoSwapJoinInputs", "hintNthPlan", + "hintOrderedHashJoin", "hintQBName", "hintQueryType", "hintReadConsistentReplica", @@ -357,65 +360,82 @@ var ( yyhintReductions = []struct{ xsym, components int }{ {0, 1}, - {106, 1}, - {104, 1}, - {104, 3}, - {104, 1}, - {104, 3}, - {96, 4}, - {96, 4}, - {96, 4}, - {96, 4}, - {96, 4}, - {96, 4}, - {96, 5}, - {96, 5}, - {96, 5}, - {96, 6}, - {96, 4}, - {96, 4}, - {96, 6}, - {96, 6}, - {96, 5}, - {96, 4}, - {96, 5}, - {91, 5}, - {100, 1}, - {100, 3}, - {86, 4}, - {75, 0}, - {75, 1}, - {79, 0}, - {79, 1}, - {90, 0}, - {90, 4}, + {107, 1}, {105, 1}, {105, 3}, - {87, 1}, - {87, 1}, - {81, 2}, + {105, 1}, + {105, 3}, + {97, 4}, + {97, 4}, + {97, 4}, + {97, 4}, + {97, 4}, + {97, 4}, + {97, 5}, + {97, 5}, + {97, 5}, + {97, 6}, + {97, 4}, + {97, 4}, + {97, 6}, + {97, 6}, + {97, 5}, + {97, 4}, + {97, 5}, + {92, 5}, + {101, 1}, + {101, 3}, + {87, 4}, + {76, 0}, + {76, 1}, + {80, 0}, + {80, 1}, + {91, 0}, + {91, 4}, + {106, 1}, + {106, 3}, + {88, 1}, + {88, 1}, + {82, 2}, + {82, 3}, {81, 3}, - {80, 3}, - {80, 5}, - {84, 4}, - {103, 0}, + {81, 5}, + {85, 4}, + {104, 0}, + {104, 1}, {103, 1}, - {102, 1}, - {102, 3}, - {108, 0}, + {103, 3}, + {109, 0}, + {109, 1}, {108, 1}, - {107, 1}, - {107, 3}, - {110, 1}, + {108, 3}, + {111, 1}, + {111, 1}, + {111, 1}, {110, 1}, {110, 1}, - {109, 1}, - {109, 1}, - {101, 1}, - {101, 1}, - {88, 1}, - {88, 1}, - {88, 1}, + {102, 1}, + {102, 1}, + {89, 1}, + {89, 1}, + {89, 1}, + {99, 1}, + {99, 1}, + {99, 1}, + {99, 1}, + {99, 1}, + {99, 1}, + {99, 1}, + {96, 1}, + {96, 1}, + {96, 1}, + {96, 1}, + {96, 1}, + {96, 1}, + {96, 1}, + {96, 1}, + {96, 1}, + {96, 1}, {98, 1}, {98, 1}, {98, 1}, @@ -427,423 +447,410 @@ var ( {95, 1}, {95, 1}, {95, 1}, - {95, 1}, - {95, 1}, - {95, 1}, - {95, 1}, - {95, 1}, - {97, 1}, - {97, 1}, - {97, 1}, - {97, 1}, - {97, 1}, - {97, 1}, - {97, 1}, + {93, 1}, + {93, 1}, {94, 1}, {94, 1}, {94, 1}, {94, 1}, - {92, 1}, - {92, 1}, - {93, 1}, - {93, 1}, - {93, 1}, - {93, 1}, - {83, 1}, - {83, 1}, - {89, 1}, - {89, 1}, - {89, 1}, - {89, 1}, - {89, 1}, - {89, 1}, - {89, 1}, - {89, 1}, - {89, 1}, - {99, 1}, - {99, 1}, - {85, 1}, - {85, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, - {76, 1}, + {84, 1}, + {84, 1}, + {90, 1}, + {90, 1}, + {90, 1}, + {90, 1}, + {90, 1}, + {90, 1}, + {90, 1}, + {90, 1}, + {90, 1}, + {100, 1}, + {100, 1}, + {86, 1}, + {86, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, + {77, 1}, } yyhintXErrors = map[yyhintXError]string{} - yyhintParseTab = [257][]uint16{ + yyhintParseTab = [259][]uint16{ // 0 - {1: 234, 208, 200, 202, 226, 232, 214, 224, 238, 216, 210, 209, 213, 179, 197, 198, 199, 215, 235, 186, 191, 205, 217, 201, 203, 204, 219, 236, 206, 218, 220, 228, 222, 212, 187, 190, 195, 237, 196, 189, 227, 188, 221, 207, 239, 233, 211, 192, 230, 223, 225, 231, 229, 83: 193, 88: 180, 194, 91: 178, 185, 94: 184, 182, 177, 183, 181, 104: 176, 106: 175}, - {74: 174}, - {1: 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 328, 74: 173, 79: 428}, - {1: 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, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 74: 172}, - {1: 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, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 74: 170}, + {1: 237, 210, 202, 204, 229, 235, 216, 227, 241, 219, 212, 211, 215, 181, 199, 200, 201, 218, 238, 188, 193, 207, 220, 203, 205, 206, 222, 239, 208, 221, 223, 231, 225, 214, 189, 217, 192, 197, 240, 198, 191, 230, 190, 224, 209, 242, 236, 213, 194, 233, 226, 228, 234, 232, 84: 195, 89: 182, 196, 92: 180, 187, 95: 186, 184, 179, 185, 183, 105: 178, 107: 177}, + {75: 176}, + {1: 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 332, 75: 175, 80: 432}, + {1: 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, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 75: 174}, + {1: 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, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 75: 172}, // 5 - {73: 425}, - {73: 422}, - {73: 419}, - {73: 414}, - {73: 411}, + {74: 429}, + {74: 426}, + {74: 423}, + {74: 418}, + {74: 415}, // 10 - {73: 400}, - {73: 388}, - {73: 384}, - {73: 380}, - {73: 372}, + {74: 404}, + {74: 392}, + {74: 388}, + {74: 384}, + {74: 376}, // 15 - {73: 369}, - {73: 366}, - {73: 359}, - {73: 354}, - {73: 348}, + {74: 373}, + {74: 370}, + {74: 363}, + {74: 358}, + {74: 352}, // 20 - {73: 345}, - {73: 339}, - {73: 240}, - {73: 117}, - {73: 116}, + {74: 349}, + {74: 343}, + {74: 243}, + {74: 119}, + {74: 118}, // 25 - {73: 115}, - {73: 114}, - {73: 113}, - {73: 112}, - {73: 111}, + {74: 117}, + {74: 116}, + {74: 115}, + {74: 114}, + {74: 113}, // 30 - {73: 110}, - {73: 109}, - {73: 108}, - {73: 107}, - {73: 106}, + {74: 112}, + {74: 111}, + {74: 110}, + {74: 109}, + {74: 108}, // 35 - {73: 105}, - {73: 104}, - {73: 103}, - {73: 102}, - {73: 101}, + {74: 107}, + {74: 106}, + {74: 105}, + {74: 104}, + {74: 103}, // 40 - {73: 100}, - {73: 99}, - {73: 98}, - {73: 97}, - {73: 96}, + {74: 102}, + {74: 101}, + {74: 100}, + {74: 99}, + {74: 98}, // 45 - {73: 95}, - {73: 94}, - {73: 93}, - {73: 92}, - {73: 91}, + {74: 97}, + {74: 96}, + {74: 95}, + {74: 94}, + {74: 93}, // 50 - {73: 90}, - {73: 89}, - {73: 88}, - {73: 87}, - {73: 86}, + {74: 92}, + {74: 91}, + {74: 90}, + {74: 89}, + {74: 88}, // 55 - {73: 81}, - {73: 80}, - {73: 79}, - {73: 78}, - {73: 77}, + {74: 87}, + {74: 82}, + {74: 81}, + {74: 80}, + {74: 79}, // 60 - {73: 76}, - {73: 75}, - {73: 74}, - {73: 73}, - {73: 72}, + {74: 78}, + {74: 77}, + {74: 76}, + {74: 75}, + {74: 74}, // 65 - {73: 71}, - {59: 147, 147, 68: 242, 75: 241}, - {59: 247, 246, 85: 245, 244, 100: 243}, - {146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 69: 146, 146, 77: 146}, - {336, 54: 337}, + {74: 73}, + {74: 72}, + {60: 149, 149, 69: 245, 76: 244}, + {60: 250, 249, 86: 248, 247, 101: 246}, + {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, 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, 70: 148, 148, 78: 148}, // 70 - {150, 54: 150}, - {82: 248}, - {82: 68}, - {82: 67}, - {1: 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 55: 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 242, 75: 250, 81: 249}, + {340, 55: 341}, + {152, 55: 152}, + {83: 251}, + {83: 69}, + {83: 68}, // 75 - {54: 334, 69: 333}, - {1: 280, 294, 258, 260, 304, 283, 262, 284, 282, 266, 285, 286, 287, 254, 255, 256, 257, 306, 281, 276, 288, 264, 268, 259, 261, 263, 270, 267, 265, 269, 271, 275, 273, 289, 303, 279, 290, 291, 292, 278, 274, 277, 272, 293, 305, 295, 296, 301, 302, 298, 297, 299, 300, 55: 315, 316, 317, 318, 310, 309, 311, 307, 308, 312, 314, 313, 253, 76: 252, 80: 251}, - {137, 54: 137, 69: 137}, - {147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 242, 147, 147, 320, 75: 319}, - {66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66}, + {1: 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 56: 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 245, 76: 253, 82: 252}, + {55: 338, 70: 337}, + {1: 284, 298, 261, 263, 308, 287, 265, 288, 286, 270, 289, 290, 291, 257, 258, 259, 260, 310, 285, 280, 292, 268, 272, 262, 264, 267, 274, 271, 269, 273, 275, 279, 277, 293, 307, 266, 283, 294, 295, 296, 282, 278, 281, 276, 297, 309, 299, 300, 305, 306, 302, 301, 303, 304, 56: 319, 320, 321, 322, 314, 313, 315, 311, 312, 316, 318, 317, 256, 77: 255, 81: 254}, + {139, 55: 139, 70: 139}, + {149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 245, 149, 149, 324, 76: 323}, // 80 - {65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65}, - {64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64}, - {63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63}, - {62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62}, - {61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61}, + {67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67}, + {66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66}, + {65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65}, + {64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64}, + {63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63}, // 85 - {60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60}, - {59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59}, - {58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58}, - {57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57}, - {56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56}, + {62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62}, + {61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61}, + {60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60}, + {59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59}, + {58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58}, // 90 - {55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55}, - {54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54}, - {53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53}, - {52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52}, - {51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51}, + {57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57}, + {56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56}, + {55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55}, + {54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54}, + {53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53}, // 95 - {50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50}, - {49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49}, - {48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48}, - {47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47}, - {46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46}, + {52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52}, + {51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51}, + {50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50}, + {49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49}, + {48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48}, // 100 - {45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45}, - {44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44}, - {43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43}, - {42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42}, - {41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41}, + {47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47}, + {46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46}, + {45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45}, + {44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44}, + {43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43}, // 105 - {40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40}, - {39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39}, - {38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38}, - {37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37}, - {36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36}, + {42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42}, + {41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41}, + {40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40}, + {39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39}, + {38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38}, // 110 - {35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35}, - {34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34}, - {33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33}, - {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32}, - {31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31}, + {37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37}, + {36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36}, + {35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35}, + {34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34}, + {33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33}, // 115 - {30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30}, - {29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29}, - {28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28}, - {27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27}, - {26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26}, + {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32}, + {31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31}, + {30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30}, + {29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29}, + {28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28}, // 120 - {25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25}, - {24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24}, - {23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23}, - {22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22}, - {21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21}, + {27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27}, + {26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26}, + {25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25}, + {24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24}, + {23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23}, // 125 - {20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20}, - {19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19}, - {18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18}, - {17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17}, - {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16}, + {22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22}, + {21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21}, + {20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20}, + {19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19}, + {18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18}, // 130 - {15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15}, - {14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14}, - {13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13}, - {12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, - {11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11}, + {17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17}, + {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16}, + {15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15}, + {14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14}, + {13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13}, // 135 - {10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, - {9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}, - {8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8}, - {7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7}, - {6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6}, + {12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, + {11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11}, + {10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, + {9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}, + {8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8}, // 140 - {5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5}, - {4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4}, - {3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3}, - {2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2}, - {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7}, + {6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6}, + {5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5}, + {4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4}, + {3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3}, // 145 - {143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 69: 143, 323, 90: 332}, - {1: 280, 294, 258, 260, 304, 283, 262, 284, 282, 266, 285, 286, 287, 254, 255, 256, 257, 306, 281, 276, 288, 264, 268, 259, 261, 263, 270, 267, 265, 269, 271, 275, 273, 289, 303, 279, 290, 291, 292, 278, 274, 277, 272, 293, 305, 295, 296, 301, 302, 298, 297, 299, 300, 55: 315, 316, 317, 318, 310, 309, 311, 307, 308, 312, 314, 313, 253, 76: 321}, - {147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 242, 147, 147, 75: 322}, - {143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 69: 143, 323, 90: 324}, - {73: 325}, + {2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2}, + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 70: 145, 327, 91: 336}, + {1: 284, 298, 261, 263, 308, 287, 265, 288, 286, 270, 289, 290, 291, 257, 258, 259, 260, 310, 285, 280, 292, 268, 272, 262, 264, 267, 274, 271, 269, 273, 275, 279, 277, 293, 307, 266, 283, 294, 295, 296, 282, 278, 281, 276, 297, 309, 299, 300, 305, 306, 302, 301, 303, 304, 56: 319, 320, 321, 322, 314, 313, 315, 311, 312, 316, 318, 317, 256, 77: 325}, + {149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 245, 149, 149, 76: 326}, // 150 - {134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 69: 134}, - {1: 280, 294, 258, 260, 304, 283, 262, 284, 282, 266, 285, 286, 287, 254, 255, 256, 257, 306, 281, 276, 288, 264, 268, 259, 261, 263, 270, 267, 265, 269, 271, 275, 273, 289, 303, 279, 290, 291, 292, 278, 274, 277, 272, 293, 305, 295, 296, 301, 302, 298, 297, 299, 300, 55: 315, 316, 317, 318, 310, 309, 311, 307, 308, 312, 314, 313, 253, 76: 327, 105: 326}, - {329, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 328, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 79: 330}, - {141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141}, - {144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 55: 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 78: 144}, + {145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 70: 145, 327, 91: 328}, + {74: 329}, + {136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 70: 136}, + {1: 284, 298, 261, 263, 308, 287, 265, 288, 286, 270, 289, 290, 291, 257, 258, 259, 260, 310, 285, 280, 292, 268, 272, 262, 264, 267, 274, 271, 269, 273, 275, 279, 277, 293, 307, 266, 283, 294, 295, 296, 282, 278, 281, 276, 297, 309, 299, 300, 305, 306, 302, 301, 303, 304, 56: 319, 320, 321, 322, 314, 313, 315, 311, 312, 316, 318, 317, 256, 77: 331, 106: 330}, + {333, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 332, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 80: 334}, // 155 - {142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 69: 142}, - {1: 280, 294, 258, 260, 304, 283, 262, 284, 282, 266, 285, 286, 287, 254, 255, 256, 257, 306, 281, 276, 288, 264, 268, 259, 261, 263, 270, 267, 265, 269, 271, 275, 273, 289, 303, 279, 290, 291, 292, 278, 274, 277, 272, 293, 305, 295, 296, 301, 302, 298, 297, 299, 300, 55: 315, 316, 317, 318, 310, 309, 311, 307, 308, 312, 314, 313, 253, 76: 331}, - {140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140}, - {135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 69: 135}, - {148, 54: 148}, + {143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143}, + {146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 56: 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 79: 146}, + {144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 70: 144}, + {1: 284, 298, 261, 263, 308, 287, 265, 288, 286, 270, 289, 290, 291, 257, 258, 259, 260, 310, 285, 280, 292, 268, 272, 262, 264, 267, 274, 271, 269, 273, 275, 279, 277, 293, 307, 266, 283, 294, 295, 296, 282, 278, 281, 276, 297, 309, 299, 300, 305, 306, 302, 301, 303, 304, 56: 319, 320, 321, 322, 314, 313, 315, 311, 312, 316, 318, 317, 256, 77: 335}, + {142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142}, // 160 - {1: 280, 294, 258, 260, 304, 283, 262, 284, 282, 266, 285, 286, 287, 254, 255, 256, 257, 306, 281, 276, 288, 264, 268, 259, 261, 263, 270, 267, 265, 269, 271, 275, 273, 289, 303, 279, 290, 291, 292, 278, 274, 277, 272, 293, 305, 295, 296, 301, 302, 298, 297, 299, 300, 55: 315, 316, 317, 318, 310, 309, 311, 307, 308, 312, 314, 313, 253, 76: 252, 80: 335}, - {136, 54: 136, 69: 136}, - {1: 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 74: 151}, - {59: 247, 246, 85: 245, 338}, - {149, 54: 149}, + {137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 70: 137}, + {150, 55: 150}, + {1: 284, 298, 261, 263, 308, 287, 265, 288, 286, 270, 289, 290, 291, 257, 258, 259, 260, 310, 285, 280, 292, 268, 272, 262, 264, 267, 274, 271, 269, 273, 275, 279, 277, 293, 307, 266, 283, 294, 295, 296, 282, 278, 281, 276, 297, 309, 299, 300, 305, 306, 302, 301, 303, 304, 56: 319, 320, 321, 322, 314, 313, 315, 311, 312, 316, 318, 317, 256, 77: 255, 81: 339}, + {138, 55: 138, 70: 138}, + {1: 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 75: 153}, // 165 - {62: 147, 147, 68: 242, 75: 340}, - {62: 342, 343, 99: 341}, - {344}, - {70}, - {69}, + {60: 250, 249, 86: 248, 342}, + {151, 55: 151}, + {63: 149, 149, 69: 245, 76: 344}, + {63: 346, 347, 100: 345}, + {348}, // 170 - {1: 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 74: 152}, - {147, 68: 242, 75: 346}, - {347}, - {1: 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 74: 153}, - {61: 147, 64: 147, 68: 242, 75: 349}, + {71}, + {70}, + {1: 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 75: 154}, + {149, 69: 245, 76: 350}, + {351}, // 175 - {61: 352, 64: 351, 101: 350}, - {353}, - {119}, - {118}, - {1: 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 74: 154}, + {1: 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 75: 155}, + {62: 149, 65: 149, 69: 245, 76: 353}, + {62: 356, 65: 355, 102: 354}, + {357}, + {121}, // 180 - {78: 355}, - {54: 328, 78: 145, 356}, - {78: 357}, - {358}, - {1: 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 74: 155}, + {120}, + {1: 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 75: 156}, + {79: 359}, + {55: 332, 79: 147, 360}, + {79: 361}, // 185 - {68: 242, 75: 360, 77: 147}, - {77: 361}, - {65: 364, 363, 109: 362}, - {365}, - {121}, + {362}, + {1: 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 75: 157}, + {69: 245, 76: 364, 78: 149}, + {78: 365}, + {66: 368, 367, 110: 366}, // 190 - {120}, - {1: 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 74: 156}, - {1: 280, 294, 258, 260, 304, 283, 262, 284, 282, 266, 285, 286, 287, 254, 255, 256, 257, 306, 281, 276, 288, 264, 268, 259, 261, 263, 270, 267, 265, 269, 271, 275, 273, 289, 303, 279, 290, 291, 292, 278, 274, 277, 272, 293, 305, 295, 296, 301, 302, 298, 297, 299, 300, 55: 315, 316, 317, 318, 310, 309, 311, 307, 308, 312, 314, 313, 253, 76: 367}, - {368}, - {1: 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 74: 157}, - // 195 - {1: 280, 294, 258, 260, 304, 283, 262, 284, 282, 266, 285, 286, 287, 254, 255, 256, 257, 306, 281, 276, 288, 264, 268, 259, 261, 263, 270, 267, 265, 269, 271, 275, 273, 289, 303, 279, 290, 291, 292, 278, 274, 277, 272, 293, 305, 295, 296, 301, 302, 298, 297, 299, 300, 55: 315, 316, 317, 318, 310, 309, 311, 307, 308, 312, 314, 313, 253, 76: 370}, - {371}, - {1: 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 74: 158}, - {1: 280, 294, 258, 260, 304, 283, 262, 284, 282, 266, 285, 286, 287, 254, 255, 256, 257, 306, 281, 276, 288, 264, 268, 259, 261, 263, 270, 267, 265, 269, 271, 275, 273, 289, 303, 279, 290, 291, 292, 278, 274, 277, 272, 293, 305, 295, 296, 301, 302, 298, 297, 299, 300, 55: 315, 316, 317, 318, 310, 309, 311, 307, 308, 312, 314, 313, 253, 76: 373}, - {72: 374}, - // 200 - {1: 280, 294, 258, 260, 304, 283, 262, 284, 282, 266, 285, 286, 287, 254, 255, 256, 257, 306, 281, 276, 288, 264, 268, 259, 261, 263, 270, 267, 265, 269, 271, 275, 273, 289, 303, 279, 290, 291, 292, 278, 274, 277, 272, 293, 305, 295, 296, 301, 302, 298, 297, 299, 300, 55: 315, 316, 317, 318, 310, 309, 311, 307, 308, 312, 314, 313, 253, 76: 377, 378, 376, 110: 375}, - {379}, - {124}, + {369}, {123}, {122}, - // 205 - {1: 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 74: 159}, - {68: 242, 75: 381, 77: 147}, - {77: 382}, + {1: 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 75: 158}, + {1: 284, 298, 261, 263, 308, 287, 265, 288, 286, 270, 289, 290, 291, 257, 258, 259, 260, 310, 285, 280, 292, 268, 272, 262, 264, 267, 274, 271, 269, 273, 275, 279, 277, 293, 307, 266, 283, 294, 295, 296, 282, 278, 281, 276, 297, 309, 299, 300, 305, 306, 302, 301, 303, 304, 56: 319, 320, 321, 322, 314, 313, 315, 311, 312, 316, 318, 317, 256, 77: 371}, + // 195 + {372}, + {1: 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 75: 159}, + {1: 284, 298, 261, 263, 308, 287, 265, 288, 286, 270, 289, 290, 291, 257, 258, 259, 260, 310, 285, 280, 292, 268, 272, 262, 264, 267, 274, 271, 269, 273, 275, 279, 277, 293, 307, 266, 283, 294, 295, 296, 282, 278, 281, 276, 297, 309, 299, 300, 305, 306, 302, 301, 303, 304, 56: 319, 320, 321, 322, 314, 313, 315, 311, 312, 316, 318, 317, 256, 77: 374}, + {375}, + {1: 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 75: 160}, + // 200 + {1: 284, 298, 261, 263, 308, 287, 265, 288, 286, 270, 289, 290, 291, 257, 258, 259, 260, 310, 285, 280, 292, 268, 272, 262, 264, 267, 274, 271, 269, 273, 275, 279, 277, 293, 307, 266, 283, 294, 295, 296, 282, 278, 281, 276, 297, 309, 299, 300, 305, 306, 302, 301, 303, 304, 56: 319, 320, 321, 322, 314, 313, 315, 311, 312, 316, 318, 317, 256, 77: 377}, + {73: 378}, + {1: 284, 298, 261, 263, 308, 287, 265, 288, 286, 270, 289, 290, 291, 257, 258, 259, 260, 310, 285, 280, 292, 268, 272, 262, 264, 267, 274, 271, 269, 273, 275, 279, 277, 293, 307, 266, 283, 294, 295, 296, 282, 278, 281, 276, 297, 309, 299, 300, 305, 306, 302, 301, 303, 304, 56: 319, 320, 321, 322, 314, 313, 315, 311, 312, 316, 318, 317, 256, 77: 381, 382, 380, 111: 379}, {383}, - {1: 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 74: 160}, + {126}, + // 205 + {125}, + {124}, + {1: 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 75: 161}, + {69: 245, 76: 385, 78: 149}, + {78: 386}, // 210 - {68: 242, 75: 385, 77: 147}, - {77: 386}, {387}, - {1: 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 74: 161}, - {147, 55: 147, 147, 147, 147, 68: 242, 75: 389}, + {1: 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 75: 162}, + {69: 245, 76: 389, 78: 149}, + {78: 390}, + {391}, // 215 - {128, 55: 393, 394, 395, 396, 93: 392, 107: 391, 390}, - {399}, - {127, 54: 397}, - {126, 54: 126}, - {85, 54: 85}, + {1: 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 75: 163}, + {149, 56: 149, 149, 149, 149, 69: 245, 76: 393}, + {130, 56: 397, 398, 399, 400, 94: 396, 108: 395, 394}, + {403}, + {129, 55: 401}, // 220 - {84, 54: 84}, - {83, 54: 83}, - {82, 54: 82}, - {55: 393, 394, 395, 396, 93: 398}, - {125, 54: 125}, + {128, 55: 128}, + {86, 55: 86}, + {85, 55: 85}, + {84, 55: 84}, + {83, 55: 83}, // 225 - {1: 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 74: 162}, - {1: 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 55: 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 242, 75: 402, 84: 401}, - {410}, - {1: 280, 294, 258, 260, 304, 283, 262, 284, 282, 266, 285, 286, 287, 254, 255, 256, 257, 306, 281, 276, 288, 264, 268, 259, 261, 263, 270, 267, 265, 269, 271, 275, 273, 289, 303, 279, 290, 291, 292, 278, 274, 277, 272, 293, 305, 295, 296, 301, 302, 298, 297, 299, 300, 55: 315, 316, 317, 318, 310, 309, 311, 307, 308, 312, 314, 313, 253, 76: 252, 80: 403}, - {145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 328, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 79: 404}, + {56: 397, 398, 399, 400, 94: 402}, + {127, 55: 127}, + {1: 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 75: 164}, + {1: 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 56: 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 245, 76: 406, 85: 405}, + {414}, // 230 - {132, 280, 294, 258, 260, 304, 283, 262, 284, 282, 266, 285, 286, 287, 254, 255, 256, 257, 306, 281, 276, 288, 264, 268, 259, 261, 263, 270, 267, 265, 269, 271, 275, 273, 289, 303, 279, 290, 291, 292, 278, 274, 277, 272, 293, 305, 295, 296, 301, 302, 298, 297, 299, 300, 55: 315, 316, 317, 318, 310, 309, 311, 307, 308, 312, 314, 313, 253, 76: 407, 102: 406, 405}, - {133}, - {131, 54: 408}, - {130, 54: 130}, - {1: 280, 294, 258, 260, 304, 283, 262, 284, 282, 266, 285, 286, 287, 254, 255, 256, 257, 306, 281, 276, 288, 264, 268, 259, 261, 263, 270, 267, 265, 269, 271, 275, 273, 289, 303, 279, 290, 291, 292, 278, 274, 277, 272, 293, 305, 295, 296, 301, 302, 298, 297, 299, 300, 55: 315, 316, 317, 318, 310, 309, 311, 307, 308, 312, 314, 313, 253, 76: 409}, + {1: 284, 298, 261, 263, 308, 287, 265, 288, 286, 270, 289, 290, 291, 257, 258, 259, 260, 310, 285, 280, 292, 268, 272, 262, 264, 267, 274, 271, 269, 273, 275, 279, 277, 293, 307, 266, 283, 294, 295, 296, 282, 278, 281, 276, 297, 309, 299, 300, 305, 306, 302, 301, 303, 304, 56: 319, 320, 321, 322, 314, 313, 315, 311, 312, 316, 318, 317, 256, 77: 255, 81: 407}, + {147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 332, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 80: 408}, + {134, 284, 298, 261, 263, 308, 287, 265, 288, 286, 270, 289, 290, 291, 257, 258, 259, 260, 310, 285, 280, 292, 268, 272, 262, 264, 267, 274, 271, 269, 273, 275, 279, 277, 293, 307, 266, 283, 294, 295, 296, 282, 278, 281, 276, 297, 309, 299, 300, 305, 306, 302, 301, 303, 304, 56: 319, 320, 321, 322, 314, 313, 315, 311, 312, 316, 318, 317, 256, 77: 411, 103: 410, 409}, + {135}, + {133, 55: 412}, // 235 - {129, 54: 129}, - {1: 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 74: 163}, - {1: 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 55: 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 242, 75: 402, 84: 412}, - {413}, - {1: 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 74: 164}, + {132, 55: 132}, + {1: 284, 298, 261, 263, 308, 287, 265, 288, 286, 270, 289, 290, 291, 257, 258, 259, 260, 310, 285, 280, 292, 268, 272, 262, 264, 267, 274, 271, 269, 273, 275, 279, 277, 293, 307, 266, 283, 294, 295, 296, 282, 278, 281, 276, 297, 309, 299, 300, 305, 306, 302, 301, 303, 304, 56: 319, 320, 321, 322, 314, 313, 315, 311, 312, 316, 318, 317, 256, 77: 413}, + {131, 55: 131}, + {1: 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 75: 165}, + {1: 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 56: 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 245, 76: 406, 85: 416}, // 240 - {147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 55: 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 242, 75: 417, 81: 416, 87: 415}, - {418}, - {139, 54: 334}, - {138, 280, 294, 258, 260, 304, 283, 262, 284, 282, 266, 285, 286, 287, 254, 255, 256, 257, 306, 281, 276, 288, 264, 268, 259, 261, 263, 270, 267, 265, 269, 271, 275, 273, 289, 303, 279, 290, 291, 292, 278, 274, 277, 272, 293, 305, 295, 296, 301, 302, 298, 297, 299, 300, 55: 315, 316, 317, 318, 310, 309, 311, 307, 308, 312, 314, 313, 253, 76: 252, 80: 251}, - {1: 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 74: 165}, + {417}, + {1: 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, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 75: 166}, + {149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 56: 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 245, 76: 421, 82: 420, 88: 419}, + {422}, + {141, 55: 338}, // 245 - {147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 55: 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 242, 75: 417, 81: 416, 87: 420}, - {421}, - {1: 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, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 74: 166}, - {1: 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 55: 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 242, 75: 250, 81: 423}, - {424, 54: 334}, + {140, 284, 298, 261, 263, 308, 287, 265, 288, 286, 270, 289, 290, 291, 257, 258, 259, 260, 310, 285, 280, 292, 268, 272, 262, 264, 267, 274, 271, 269, 273, 275, 279, 277, 293, 307, 266, 283, 294, 295, 296, 282, 278, 281, 276, 297, 309, 299, 300, 305, 306, 302, 301, 303, 304, 56: 319, 320, 321, 322, 314, 313, 315, 311, 312, 316, 318, 317, 256, 77: 255, 81: 254}, + {1: 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, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 75: 167}, + {149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 56: 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 245, 76: 421, 82: 420, 88: 424}, + {425}, + {1: 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, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 75: 168}, // 250 - {1: 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, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 74: 167}, - {147, 68: 242, 75: 426}, - {427}, - {1: 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, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 74: 168}, - {1: 234, 208, 200, 202, 226, 232, 214, 224, 238, 216, 210, 209, 213, 179, 197, 198, 199, 215, 235, 186, 191, 205, 217, 201, 203, 204, 219, 236, 206, 218, 220, 228, 222, 212, 187, 190, 195, 237, 196, 189, 227, 188, 221, 207, 239, 233, 211, 192, 230, 223, 225, 231, 229, 83: 193, 88: 180, 194, 91: 430, 185, 94: 184, 182, 429, 183, 181}, + {1: 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 56: 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 245, 76: 253, 82: 427}, + {428, 55: 338}, + {1: 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, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 75: 169}, + {149, 69: 245, 76: 430}, + {431}, // 255 - {1: 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, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 74: 171}, - {1: 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, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 74: 169}, + {1: 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, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 75: 170}, + {1: 237, 210, 202, 204, 229, 235, 216, 227, 241, 219, 212, 211, 215, 181, 199, 200, 201, 218, 238, 188, 193, 207, 220, 203, 205, 206, 222, 239, 208, 221, 223, 231, 225, 214, 189, 217, 192, 197, 240, 198, 191, 230, 190, 224, 209, 242, 236, 213, 194, 233, 226, 228, 234, 232, 84: 195, 89: 182, 196, 92: 434, 187, 95: 186, 184, 433, 185, 183}, + {1: 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, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 75: 173}, + {1: 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, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 75: 171}, } ) @@ -883,7 +890,7 @@ func yyhintlex1(yylex yyhintLexer, lval *yyhintSymType) (n int) { } func yyhintParse(yylex yyhintLexer, parser *hintParser) int { - const yyError = 112 + const yyError = 113 yyEx, _ := yylex.(yyhintLexerEx) var yyn int diff --git a/parser/hintparser.y b/parser/hintparser.y index e3c3dacf4faff..0938acff9df22 100644 --- a/parser/hintparser.y +++ b/parser/hintparser.y @@ -61,6 +61,7 @@ import ( hintBNL "BNL" hintNoBNL "NO_BNL" hintHashJoin "HASH_JOIN" + hintOrderedHashJoin "ORDERED_HASH_JOIN" hintNoHashJoin "NO_HASH_JOIN" hintMerge "MERGE" hintNoMerge "NO_MERGE" @@ -541,6 +542,7 @@ SupportedTableLevelOptimizerHintName: | "NO_SWAP_JOIN_INPUTS" | "INL_MERGE_JOIN" | "HASH_JOIN" +| "ORDERED_HASH_JOIN" | "LEADING" UnsupportedIndexLevelOptimizerHintName: @@ -604,6 +606,7 @@ Identifier: | "BNL" | "NO_BNL" | "HASH_JOIN" +| "ORDERED_HASH_JOIN" | "NO_HASH_JOIN" | "MERGE" | "NO_MERGE" diff --git a/parser/lexer_test.go b/parser/lexer_test.go index 91d45d559d863..3328bc315237c 100644 --- a/parser/lexer_test.go +++ b/parser/lexer_test.go @@ -375,16 +375,16 @@ func TestFeatureIDsComment(t *testing.T) { requires.Equal(t, identifier, tok) requires.Equal(t, "auto_random", lit) requires.Equal(t, Pos{1, 16, 16}, pos) - tok, pos, _ = l.scan() + tok, _, _ = l.scan() requires.Equal(t, int('('), tok) _, pos, lit = l.scan() requires.Equal(t, "5", lit) requires.Equal(t, Pos{1, 28, 28}, pos) - tok, pos, _ = l.scan() + tok, _, _ = l.scan() requires.Equal(t, int(')'), tok) l = NewScanner("/*T![unsupported_feature] unsupported(123) */") - tok, pos, _ = l.scan() + tok, _, _ = l.scan() requires.Equal(t, 0, tok) } diff --git a/parser/misc.go b/parser/misc.go index 5ee673b55b3cb..baea9412beaa6 100644 --- a/parser/misc.go +++ b/parser/misc.go @@ -632,6 +632,7 @@ var tokenMap = map[string]int{ "SERIAL": serial, "SERIALIZABLE": serializable, "SESSION": session, + "SESSION_STATES": sessionStates, "SET": set, "SETVAL": setval, "SHARD_ROW_ID_BITS": shardRowIDBits, @@ -892,6 +893,7 @@ var hintTokenMap = map[string]int{ "BNL": hintBNL, "NO_BNL": hintNoBNL, "HASH_JOIN": hintHashJoin, + "ORDERED_HASH_JOIN": hintOrderedHashJoin, "NO_HASH_JOIN": hintNoHashJoin, "MERGE": hintMerge, "NO_MERGE": hintNoMerge, diff --git a/parser/model/BUILD.bazel b/parser/model/BUILD.bazel new file mode 100644 index 0000000000000..b33cdd2e16bf1 --- /dev/null +++ b/parser/model/BUILD.bazel @@ -0,0 +1,32 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "model", + srcs = [ + "ddl.go", + "flags.go", + "model.go", + ], + importpath = "github.com/pingcap/tidb/parser/model", + visibility = ["//visibility:public"], + deps = [ + "//parser/auth", + "//parser/charset", + "//parser/mysql", + "//parser/terror", + "//parser/types", + "@com_github_pingcap_errors//:errors", + ], +) + +go_test( + name = "model_test", + srcs = ["model_test.go"], + embed = [":model"], + deps = [ + "//parser/charset", + "//parser/mysql", + "//parser/types", + "@com_github_stretchr_testify//require", + ], +) diff --git a/parser/model/ddl.go b/parser/model/ddl.go index 3b17a9bd69fe8..1769d3b526d7f 100644 --- a/parser/model/ddl.go +++ b/parser/model/ddl.go @@ -95,6 +95,7 @@ const ( ActionAlterTableStatsOptions ActionType = 58 ActionAlterNoCacheTable ActionType = 59 ActionCreateTables ActionType = 60 + ActionMultiSchemaChange ActionType = 61 ) var actionMap = map[ActionType]string{ @@ -157,6 +158,7 @@ var actionMap = map[ActionType]string{ ActionAlterCacheTable: "alter table cache", ActionAlterNoCacheTable: "alter table nocache", ActionAlterTableStatsOptions: "alter table statistics options", + ActionMultiSchemaChange: "alter table multi-schema change", // `ActionAlterTableAlterPartition` is removed and will never be used. // Just left a tombstone here for compatibility. @@ -256,6 +258,38 @@ func NewDDLReorgMeta() *DDLReorgMeta { // MultiSchemaInfo keeps some information for multi schema change. type MultiSchemaInfo struct { Warnings []*errors.Error + + SubJobs []*SubJob `json:"sub_jobs"` + Revertible bool `json:"revertible"` + + AddColumns []CIStr `json:"-"` + DropColumns []CIStr `json:"-"` + ModifyColumns []CIStr `json:"-"` + AddIndexes []CIStr `json:"-"` + DropIndexes []CIStr `json:"-"` + AlterIndexes []CIStr `json:"-"` + + RelativeColumns []CIStr `json:"-"` +} + +func NewMultiSchemaInfo() *MultiSchemaInfo { + return &MultiSchemaInfo{ + SubJobs: nil, + Revertible: true, + } +} + +type SubJob struct { + Type ActionType `json:"type"` + Args []interface{} `json:"-"` + RawArgs json.RawMessage `json:"raw_args"` + SchemaState SchemaState `json:"schema_state"` + SnapshotVer uint64 `json:"snapshot_ver"` + Revertible bool `json:"revertible"` + State JobState `json:"state"` + RowCount int64 `json:"row_count"` + Warning *terror.Error `json:"warning"` + CtxVars []interface{} `json:"-"` } // Job is for a DDL operation. diff --git a/parser/model/model.go b/parser/model/model.go index 0fdfe50fd8dfb..43e3e4bc5bcfb 100644 --- a/parser/model/model.go +++ b/parser/model/model.go @@ -808,6 +808,54 @@ func NewExtraPhysTblIDColInfo() *ColumnInfo { return colInfo } +// GetPrimaryKey extract the primary key in a table and return `IndexInfo` +// The returned primary key could be explicit or implicit. +// If there is no explicit primary key in table, +// the first UNIQUE INDEX on NOT NULL columns will be the implicit primary key. +// For more information about implicit primary key, see +// https://dev.mysql.com/doc/refman/8.0/en/invisible-indexes.html +func (t *TableInfo) GetPrimaryKey() *IndexInfo { + var implicitPK *IndexInfo + + for _, key := range t.Indices { + if key.Primary { + // table has explicit primary key + return key + } + // The case index without any columns should never happen, but still do a check here + if len(key.Columns) == 0 { + continue + } + // find the first unique key with NOT NULL columns + if implicitPK == nil && key.Unique { + // ensure all columns in unique key have NOT NULL flag + allColNotNull := true + skip := false + for _, idxCol := range key.Columns { + col := FindColumnInfo(t.Cols(), idxCol.Name.L) + // This index has a column in DeleteOnly state, + // or it is expression index (it defined on a hidden column), + // it can not be implicit PK, go to next index iterator + if col == nil || col.Hidden { + skip = true + break + } + if !mysql.HasNotNullFlag(col.GetFlag()) { + allColNotNull = false + break + } + } + if skip { + continue + } + if allColNotNull { + implicitPK = key + } + } + } + return implicitPK +} + // ColumnIsInIndex checks whether c is included in any indices of t. func (t *TableInfo) ColumnIsInIndex(c *ColumnInfo) bool { for _, index := range t.Indices { @@ -1378,8 +1426,7 @@ type PolicyInfo struct { } func (p *PolicyInfo) Clone() *PolicyInfo { - var cloned PolicyInfo - cloned = *p + cloned := *p cloned.PlacementSettings = p.PlacementSettings.Clone() return &cloned } @@ -1441,8 +1488,7 @@ func (p *PlacementSettings) String() string { } func (p *PlacementSettings) Clone() *PlacementSettings { - var cloned PlacementSettings - cloned = *p + cloned := *p return &cloned } diff --git a/parser/mysql/BUILD.bazel b/parser/mysql/BUILD.bazel new file mode 100644 index 0000000000000..da3f279a5c264 --- /dev/null +++ b/parser/mysql/BUILD.bazel @@ -0,0 +1,35 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "mysql", + srcs = [ + "charset.go", + "const.go", + "errcode.go", + "errname.go", + "error.go", + "locale_format.go", + "privs.go", + "state.go", + "type.go", + "util.go", + ], + importpath = "github.com/pingcap/tidb/parser/mysql", + visibility = ["//visibility:public"], + deps = [ + "//parser/format", + "@com_github_pingcap_errors//:errors", + ], +) + +go_test( + name = "mysql_test", + srcs = [ + "const_test.go", + "error_test.go", + "privs_test.go", + "type_test.go", + ], + embed = [":mysql"], + deps = ["@com_github_stretchr_testify//require"], +) diff --git a/parser/opcode/BUILD.bazel b/parser/opcode/BUILD.bazel new file mode 100644 index 0000000000000..25d2447e484f3 --- /dev/null +++ b/parser/opcode/BUILD.bazel @@ -0,0 +1,15 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "opcode", + srcs = ["opcode.go"], + importpath = "github.com/pingcap/tidb/parser/opcode", + visibility = ["//visibility:public"], + deps = ["//parser/format"], +) + +go_test( + name = "opcode_test", + srcs = ["opcode_test.go"], + embed = [":opcode"], +) diff --git a/parser/parser.go b/parser/parser.go index 6beca587191e4..6263a9718444b 100644 --- a/parser/parser.go +++ b/parser/parser.go @@ -54,7 +54,7 @@ type yyXError struct { } const ( - yyDefault = 58109 + yyDefault = 58110 yyEOFCode = 57344 account = 57573 action = 57574 @@ -72,7 +72,7 @@ const ( analyze = 57362 and = 57363 andand = 57354 - andnot = 58070 + andnot = 58071 any = 57581 approxCountDistinct = 57913 approxPercentile = 57914 @@ -80,7 +80,7 @@ const ( asc = 57365 ascii = 57582 asof = 57347 - assignmentEq = 58071 + assignmentEq = 58072 attributes = 57583 autoIdCache = 57588 autoIncrement = 57589 @@ -102,7 +102,7 @@ const ( bindings = 57601 binlog = 57602 bitAnd = 57915 - bitLit = 58069 + bitLit = 58070 bitOr = 57916 bitType = 57603 bitXor = 57917 @@ -115,33 +115,33 @@ const ( briefType = 57919 btree = 57607 buckets = 57998 - builtinApproxCountDistinct = 58043 - builtinApproxPercentile = 58044 - builtinBitAnd = 58038 - builtinBitOr = 58039 - builtinBitXor = 58040 - builtinCast = 58041 - builtinCount = 58042 - builtinCurDate = 58045 - builtinCurTime = 58046 - builtinDateAdd = 58047 - builtinDateSub = 58048 - builtinExtract = 58049 - builtinGroupConcat = 58050 - builtinMax = 58051 - builtinMin = 58052 - builtinNow = 58053 - builtinPosition = 58054 - builtinStddevPop = 58058 - builtinStddevSamp = 58059 - builtinSubstring = 58055 - builtinSum = 58056 - builtinSysDate = 58057 - builtinTranslate = 58060 - builtinTrim = 58061 - builtinUser = 58062 - builtinVarPop = 58063 - builtinVarSamp = 58064 + builtinApproxCountDistinct = 58044 + builtinApproxPercentile = 58045 + builtinBitAnd = 58039 + builtinBitOr = 58040 + builtinBitXor = 58041 + builtinCast = 58042 + builtinCount = 58043 + builtinCurDate = 58046 + builtinCurTime = 58047 + builtinDateAdd = 58048 + builtinDateSub = 58049 + builtinExtract = 58050 + builtinGroupConcat = 58051 + builtinMax = 58052 + builtinMin = 58053 + builtinNow = 58054 + builtinPosition = 58055 + builtinStddevPop = 58059 + builtinStddevSamp = 58060 + builtinSubstring = 58056 + builtinSum = 58057 + builtinSysDate = 58058 + builtinTranslate = 58061 + builtinTrim = 58062 + builtinUser = 58063 + builtinVarPop = 58064 + builtinVarSamp = 58065 builtins = 57999 by = 57371 byteType = 57608 @@ -195,7 +195,7 @@ const ( correlation = 58004 cpu = 57637 create = 57383 - createTableSelect = 58093 + createTableSelect = 58094 cross = 57384 csvBackslashEscape = 57638 csvDelimiter = 57639 @@ -227,7 +227,7 @@ const ( daySecond = 57396 ddl = 58005 deallocate = 57652 - decLit = 58066 + decLit = 58067 decimalType = 57397 defaultKwd = 57398 definer = 57653 @@ -259,7 +259,7 @@ const ( duplicate = 57661 dynamic = 57662 elseKwd = 57410 - empty = 58084 + empty = 58085 enable = 57663 enabled = 57664 enclosed = 57411 @@ -269,7 +269,7 @@ const ( engine = 57668 engines = 57669 enum = 57670 - eq = 58072 + eq = 58073 yyErrCode = 57345 errorKwd = 57671 escape = 57672 @@ -298,7 +298,7 @@ const ( firstValue = 57418 fixed = 57686 flashback = 57931 - floatLit = 58065 + floatLit = 58066 floatType = 57419 flush = 57687 follower = 57932 @@ -313,7 +313,7 @@ const ( full = 57690 fulltext = 57424 function = 57691 - ge = 58073 + ge = 58074 general = 57692 generated = 57425 getFormat = 57935 @@ -326,13 +326,13 @@ const ( hash = 57695 having = 57429 help = 57696 - hexLit = 58068 + hexLit = 58069 highPriority = 57430 - higherThanComma = 58108 - higherThanParenthese = 58102 + higherThanComma = 58109 + higherThanParenthese = 58103 hintComment = 57353 histogram = 57697 - histogramsInFlight = 58027 + histogramsInFlight = 58028 history = 57698 hosts = 57699 hour = 57700 @@ -356,7 +356,7 @@ const ( inplace = 57938 insert = 57446 insertMethod = 57708 - insertValues = 58091 + insertValues = 58092 instance = 57709 instant = 57939 int1Type = 57448 @@ -364,7 +364,7 @@ const ( int3Type = 57450 int4Type = 57451 int8Type = 57452 - intLit = 58067 + intLit = 58068 intType = 57447 integerType = 57440 internal = 57940 @@ -385,8 +385,8 @@ const ( jsonArrayagg = 57941 jsonObjectAgg = 57942 jsonType = 57716 - jss = 58075 - juss = 58076 + jss = 58076 + juss = 58077 key = 57454 keyBlockSize = 57717 keys = 57455 @@ -398,7 +398,7 @@ const ( lastBackup = 57721 lastValue = 57458 lastval = 57722 - le = 58074 + le = 58075 lead = 57459 leader = 57943 leaderConstraints = 57944 @@ -426,25 +426,25 @@ const ( longblobType = 57470 longtextType = 57471 lowPriority = 57472 - lowerThanCharsetKwd = 58094 - lowerThanComma = 58107 - lowerThanCreateTableSelect = 58092 - lowerThanEq = 58104 - lowerThanFunction = 58099 - lowerThanInsertValues = 58090 - lowerThanKey = 58095 - lowerThanLocal = 58096 - lowerThanNot = 58106 - lowerThanOn = 58103 - lowerThanParenthese = 58101 - lowerThanRemove = 58097 - lowerThanSelectOpt = 58085 - lowerThanSelectStmt = 58089 - lowerThanSetKeyword = 58088 - lowerThanStringLitToken = 58087 - lowerThanValueKeyword = 58086 - lowerThenOrder = 58098 - lsh = 58077 + lowerThanCharsetKwd = 58095 + lowerThanComma = 58108 + lowerThanCreateTableSelect = 58093 + lowerThanEq = 58105 + lowerThanFunction = 58100 + lowerThanInsertValues = 58091 + lowerThanKey = 58096 + lowerThanLocal = 58097 + lowerThanNot = 58107 + lowerThanOn = 58104 + lowerThanParenthese = 58102 + lowerThanRemove = 58098 + lowerThanSelectOpt = 58086 + lowerThanSelectStmt = 58090 + lowerThanSetKeyword = 58089 + lowerThanStringLitToken = 58088 + lowerThanValueKeyword = 58087 + lowerThenOrder = 58099 + lsh = 58078 master = 57730 match = 57473 max = 57949 @@ -477,9 +477,9 @@ const ( national = 57749 natural = 57572 ncharType = 57750 - neg = 58105 - neq = 58078 - neqSynonym = 58079 + neg = 58106 + neq = 58079 + neqSynonym = 58080 never = 57751 next = 57752 next_row_id = 57937 @@ -496,13 +496,13 @@ const ( nonclustered = 57760 none = 57761 not = 57481 - not2 = 58083 + not2 = 58084 now = 57950 nowait = 57762 nthValue = 57483 ntile = 57484 null = 57485 - nulleq = 58080 + nulleq = 58081 nulls = 57764 numericType = 57486 nvarcharType = 57763 @@ -530,7 +530,7 @@ const ( over = 57495 packKeys = 57772 pageSym = 57773 - paramMarker = 58081 + paramMarker = 58082 parser = 57774 partial = 57775 partition = 57496 @@ -583,8 +583,8 @@ const ( redundant = 57803 references = 57506 regexpKwd = 57507 - region = 58037 - regions = 58036 + region = 58038 + regions = 58037 release = 57508 reload = 57804 remove = 57805 @@ -600,7 +600,7 @@ const ( replication = 57811 require = 57512 required = 57812 - reset = 58035 + reset = 58036 respect = 57813 restart = 57814 restore = 57815 @@ -619,7 +619,7 @@ const ( rowFormat = 57823 rowNumber = 57519 rows = 57518 - rsh = 58082 + rsh = 58083 rtree = 57824 run = 58017 running = 57960 @@ -642,6 +642,7 @@ const ( serial = 57835 serializable = 57836 session = 57837 + sessionStates = 58020 set = 57522 setval = 57838 shardRowIDBits = 57839 @@ -661,7 +662,7 @@ const ( some = 57850 source = 57851 spatial = 57525 - split = 58033 + split = 58034 sql = 57526 sqlBigResult = 57527 sqlBufferResult = 57852 @@ -681,21 +682,21 @@ const ( staleness = 57963 start = 57863 starting = 57531 - statistics = 58020 - stats = 58021 + statistics = 58021 + stats = 58022 statsAutoRecalc = 57864 - statsBuckets = 58024 + statsBuckets = 58025 statsColChoice = 57586 statsColList = 57587 statsExtended = 57532 - statsHealthy = 58025 - statsHistograms = 58023 - statsMeta = 58022 + statsHealthy = 58026 + statsHistograms = 58024 + statsMeta = 58023 statsOptions = 57584 statsPersistent = 57865 statsSamplePages = 57866 statsSampleRate = 57585 - statsTopN = 58026 + statsTopN = 58027 status = 57867 std = 57964 stddev = 57965 @@ -722,21 +723,21 @@ const ( systemTime = 57877 tableChecksum = 57878 tableKwd = 57534 - tableRefPriority = 58100 + tableRefPriority = 58101 tableSample = 57535 tables = 57879 tablespace = 57880 target = 57974 - telemetry = 58028 - telemetryID = 58029 + telemetry = 58029 + telemetryID = 58030 temporary = 57881 temptable = 57882 terminated = 57537 textType = 57883 than = 57884 then = 57538 - tiFlash = 58031 - tidb = 58030 + tiFlash = 58032 + tidb = 58031 tikvImporter = 57885 timeType = 57887 timestampAdd = 57975 @@ -756,7 +757,7 @@ const ( tokudbUncompressed = 57984 tokudbZlib = 57985 top = 57986 - topn = 58032 + topn = 58033 tp = 57888 trace = 57889 traditional = 57890 @@ -810,7 +811,7 @@ const ( weightString = 57907 when = 57564 where = 57565 - width = 58034 + width = 58035 window = 57567 with = 57568 without = 57908 @@ -822,1390 +823,1391 @@ const ( zerofill = 57571 yyMaxDepth = 200 - yyTabOfs = -2500 + yyTabOfs = -2504 ) var ( yyXLAT = map[int]int{ - 57344: 0, // $end (2205x) - 59: 1, // ';' (2204x) - 57805: 2, // remove (1848x) - 57806: 3, // reorganize (1848x) - 57626: 4, // comment (1784x) - 57868: 5, // storage (1760x) - 57589: 6, // autoIncrement (1749x) - 44: 7, // ',' (1663x) - 57685: 8, // first (1648x) - 57576: 9, // after (1646x) - 57835: 10, // serial (1642x) - 57590: 11, // autoRandom (1641x) - 57623: 12, // columnFormat (1641x) - 57778: 13, // password (1610x) - 57614: 14, // charsetKwd (1608x) - 57616: 15, // checksum (1596x) - 57952: 16, // placement (1594x) - 57717: 17, // keyBlockSize (1578x) - 57880: 18, // tablespace (1575x) - 57665: 19, // encryption (1573x) - 57668: 20, // engine (1570x) - 57648: 21, // data (1568x) - 57708: 22, // insertMethod (1566x) - 57735: 23, // maxRows (1566x) - 57742: 24, // minRows (1566x) - 57757: 25, // nodegroup (1566x) - 57633: 26, // connection (1558x) - 57591: 27, // autoRandomBase (1555x) - 58024: 28, // statsBuckets (1553x) - 58026: 29, // statsTopN (1553x) - 57588: 30, // autoIdCache (1552x) - 57593: 31, // avgRowLength (1552x) - 57631: 32, // compression (1552x) - 57654: 33, // delayKeyWrite (1552x) - 57772: 34, // packKeys (1552x) - 57785: 35, // preSplitRegions (1552x) - 57823: 36, // rowFormat (1552x) - 57828: 37, // secondaryEngine (1552x) - 57839: 38, // shardRowIDBits (1552x) - 57864: 39, // statsAutoRecalc (1552x) - 57586: 40, // statsColChoice (1552x) - 57587: 41, // statsColList (1552x) - 57865: 42, // statsPersistent (1552x) - 57866: 43, // statsSamplePages (1552x) - 57585: 44, // statsSampleRate (1552x) - 57878: 45, // tableChecksum (1552x) - 57573: 46, // account (1499x) - 41: 47, // ')' (1493x) - 57817: 48, // resume (1489x) - 57843: 49, // signed (1489x) - 57849: 50, // snapshot (1488x) - 57594: 51, // backend (1487x) - 57615: 52, // checkpoint (1487x) - 57632: 53, // concurrency (1487x) - 57638: 54, // csvBackslashEscape (1487x) - 57639: 55, // csvDelimiter (1487x) - 57640: 56, // csvHeader (1487x) - 57641: 57, // csvNotNull (1487x) - 57642: 58, // csvNull (1487x) - 57643: 59, // csvSeparator (1487x) - 57644: 60, // csvTrimLastSeparators (1487x) - 57721: 61, // lastBackup (1487x) - 57767: 62, // onDuplicate (1487x) - 57768: 63, // online (1487x) - 57800: 64, // rateLimit (1487x) - 57832: 65, // sendCredentialsToTiKV (1487x) - 57846: 66, // skipSchemaFiles (1487x) - 57869: 67, // strictFormat (1487x) - 57885: 68, // tikvImporter (1487x) - 57893: 69, // truncate (1484x) - 57754: 70, // no (1483x) - 57863: 71, // start (1481x) - 57609: 72, // cache (1478x) - 57755: 73, // nocache (1477x) - 57647: 74, // cycle (1476x) - 57744: 75, // minValue (1476x) - 57705: 76, // increment (1475x) - 57756: 77, // nocycle (1475x) - 57758: 78, // nomaxvalue (1475x) - 57759: 79, // nominvalue (1475x) - 57814: 80, // restart (1473x) - 57579: 81, // algorithm (1472x) - 57888: 82, // tp (1472x) - 57646: 83, // clustered (1471x) - 57710: 84, // invisible (1471x) - 57760: 85, // nonclustered (1471x) - 58036: 86, // regions (1471x) - 57904: 87, // visible (1471x) - 57922: 88, // constraints (1464x) - 57933: 89, // followerConstraints (1464x) - 57934: 90, // followers (1464x) - 57944: 91, // leaderConstraints (1464x) - 57946: 92, // learnerConstraints (1464x) - 57947: 93, // learners (1464x) - 57957: 94, // primaryRegion (1464x) - 57962: 95, // schedule (1464x) - 57994: 96, // voterConstraints (1464x) - 57995: 97, // voters (1464x) - 57624: 98, // columns (1463x) - 57903: 99, // view (1463x) - 57871: 100, // subpartition (1459x) - 57582: 101, // ascii (1458x) - 57608: 102, // byteType (1458x) - 57777: 103, // partitions (1458x) - 57897: 104, // unicodeSym (1458x) - 57910: 105, // yearType (1458x) - 57651: 106, // day (1457x) - 57683: 107, // fields (1457x) - 57827: 108, // second (1456x) - 57862: 109, // sqlTsiYear (1456x) - 57879: 110, // tables (1456x) - 57700: 111, // hour (1455x) - 57741: 112, // microsecond (1455x) - 57743: 113, // minute (1455x) - 57747: 114, // month (1455x) - 57796: 115, // quarter (1455x) - 57855: 116, // sqlTsiDay (1455x) - 57856: 117, // sqlTsiHour (1455x) - 57857: 118, // sqlTsiMinute (1455x) - 57858: 119, // sqlTsiMonth (1455x) - 57859: 120, // sqlTsiQuarter (1455x) - 57860: 121, // sqlTsiSecond (1455x) - 57861: 122, // sqlTsiWeek (1455x) - 57867: 123, // status (1455x) - 57906: 124, // week (1455x) - 57833: 125, // separator (1454x) - 57733: 126, // maxConnectionsPerHour (1453x) - 57734: 127, // maxQueriesPerHour (1453x) - 57736: 128, // maxUpdatesPerHour (1453x) - 57737: 129, // maxUserConnections (1453x) - 57786: 130, // preceding (1453x) - 57617: 131, // cipher (1452x) - 57703: 132, // importKwd (1452x) - 57715: 133, // issuer (1452x) - 57825: 134, // san (1452x) - 57870: 135, // subject (1452x) - 57726: 136, // local (1451x) - 57798: 137, // query (1451x) - 57845: 138, // skip (1451x) - 57601: 139, // bindings (1450x) - 57653: 140, // definer (1450x) - 57695: 141, // hash (1450x) - 57701: 142, // identified (1450x) - 57729: 143, // logs (1450x) - 57813: 144, // respect (1450x) - 57627: 145, // commit (1449x) - 57645: 146, // current (1449x) - 57667: 147, // enforced (1449x) - 57688: 148, // following (1449x) - 57346: 149, // identifier (1449x) - 57762: 150, // nowait (1449x) - 57769: 151, // only (1449x) - 57820: 152, // rollback (1449x) - 57826: 153, // savepoint (1449x) - 57901: 154, // value (1449x) - 57597: 155, // begin (1448x) - 57599: 156, // binding (1448x) - 57666: 157, // end (1448x) - 57693: 158, // global (1448x) - 57937: 159, // next_row_id (1448x) - 57784: 160, // policy (1448x) - 57956: 161, // predicate (1448x) - 57881: 162, // temporary (1448x) - 57894: 163, // unbounded (1448x) - 57899: 164, // user (1448x) - 57716: 165, // jsonType (1447x) - 57766: 166, // offset (1447x) - 57954: 167, // planCache (1447x) - 57787: 168, // prepare (1447x) - 57819: 169, // role (1447x) - 57898: 170, // unknown (1447x) - 57911: 171, // wait (1447x) - 57607: 172, // btree (1446x) - 57649: 173, // datetimeType (1446x) - 57650: 174, // dateType (1446x) - 57686: 175, // fixed (1446x) - 57702: 176, // identSQLErrors (1446x) - 57714: 177, // isolation (1446x) - 57728: 178, // location (1446x) - 57731: 179, // max_idxnum (1446x) - 57739: 180, // memory (1446x) - 57765: 181, // off (1446x) - 57771: 182, // optional (1446x) - 57780: 183, // per_db (1446x) - 57789: 184, // privileges (1446x) - 57812: 185, // required (1446x) - 57824: 186, // rtree (1446x) - 57960: 187, // running (1446x) - 58019: 188, // sampleRate (1446x) - 57834: 189, // sequence (1446x) - 57837: 190, // session (1446x) - 57848: 191, // slow (1446x) - 57887: 192, // timeType (1446x) - 57900: 193, // validation (1446x) - 57902: 194, // variables (1446x) - 57583: 195, // attributes (1445x) - 57629: 196, // compact (1445x) - 57656: 197, // disable (1445x) - 57661: 198, // duplicate (1445x) - 57662: 199, // dynamic (1445x) - 57663: 200, // enable (1445x) - 57671: 201, // errorKwd (1445x) - 57687: 202, // flush (1445x) - 57690: 203, // full (1445x) - 57738: 204, // mb (1445x) - 57745: 205, // mode (1445x) - 57751: 206, // never (1445x) - 57953: 207, // plan (1445x) - 57783: 208, // plugins (1445x) - 57791: 209, // processlist (1445x) - 57802: 210, // recover (1445x) - 57807: 211, // repair (1445x) - 57808: 212, // repeatable (1445x) - 57809: 213, // replica (1445x) - 58020: 214, // statistics (1445x) - 57872: 215, // subpartitions (1445x) - 58030: 216, // tidb (1445x) - 58031: 217, // tiFlash (1445x) - 57886: 218, // timestampType (1445x) - 57908: 219, // without (1445x) - 57996: 220, // admin (1444x) - 57595: 221, // backup (1444x) - 57997: 222, // batch (1444x) - 57602: 223, // binlog (1444x) - 57604: 224, // block (1444x) - 57605: 225, // booleanType (1444x) - 57919: 226, // briefType (1444x) - 57998: 227, // buckets (1444x) - 58001: 228, // cardinality (1444x) - 57613: 229, // chain (1444x) - 57620: 230, // clientErrorsSummary (1444x) - 58002: 231, // cmSketch (1444x) - 57621: 232, // coalesce (1444x) - 57630: 233, // compressed (1444x) - 57636: 234, // context (1444x) - 57921: 235, // copyKwd (1444x) - 58004: 236, // correlation (1444x) - 57637: 237, // cpu (1444x) - 57652: 238, // deallocate (1444x) - 58006: 239, // dependency (1444x) - 57655: 240, // directory (1444x) - 57658: 241, // discard (1444x) - 57659: 242, // disk (1444x) - 57660: 243, // do (1444x) - 57926: 244, // dotType (1444x) - 58008: 245, // drainer (1444x) - 58009: 246, // dry (1444x) - 57676: 247, // exchange (1444x) - 57678: 248, // execute (1444x) - 57679: 249, // expansion (1444x) - 57931: 250, // flashback (1444x) - 57689: 251, // format (1444x) - 57692: 252, // general (1444x) - 57696: 253, // help (1444x) - 57697: 254, // histogram (1444x) - 57699: 255, // hosts (1444x) - 57938: 256, // inplace (1444x) - 57709: 257, // instance (1444x) - 57939: 258, // instant (1444x) - 57713: 259, // ipc (1444x) - 58011: 260, // job (1444x) - 58010: 261, // jobs (1444x) - 57718: 262, // labels (1444x) - 57727: 263, // locked (1444x) - 57746: 264, // modify (1444x) - 57752: 265, // next (1444x) - 58012: 266, // nodeID (1444x) - 58013: 267, // nodeState (1444x) - 57764: 268, // nulls (1444x) - 57773: 269, // pageSym (1444x) - 58016: 270, // pump (1444x) - 57795: 271, // purge (1444x) - 57801: 272, // rebuild (1444x) - 57803: 273, // redundant (1444x) - 57804: 274, // reload (1444x) - 57815: 275, // restore (1444x) - 57821: 276, // routine (1444x) - 57961: 277, // s3 (1444x) - 58018: 278, // samples (1444x) - 57829: 279, // secondaryLoad (1444x) - 57830: 280, // secondaryUnload (1444x) - 57840: 281, // share (1444x) - 57842: 282, // shutdown (1444x) - 57851: 283, // source (1444x) - 58033: 284, // split (1444x) - 58021: 285, // stats (1444x) - 57584: 286, // statsOptions (1444x) - 57968: 287, // stop (1444x) - 57874: 288, // swaps (1444x) - 57978: 289, // tokudbDefault (1444x) - 57979: 290, // tokudbFast (1444x) - 57980: 291, // tokudbLzma (1444x) - 57981: 292, // tokudbQuickLZ (1444x) - 57983: 293, // tokudbSmall (1444x) - 57982: 294, // tokudbSnappy (1444x) - 57984: 295, // tokudbUncompressed (1444x) - 57985: 296, // tokudbZlib (1444x) - 58032: 297, // topn (1444x) - 57889: 298, // trace (1444x) - 57890: 299, // traditional (1444x) - 57992: 300, // trueCardCost (1444x) - 57991: 301, // verboseType (1444x) - 57905: 302, // warnings (1444x) - 57574: 303, // action (1443x) - 57575: 304, // advise (1443x) - 57577: 305, // against (1443x) - 57578: 306, // ago (1443x) - 57580: 307, // always (1443x) - 57596: 308, // backups (1443x) - 57598: 309, // bernoulli (1443x) - 57600: 310, // bindingCache (1443x) - 57603: 311, // bitType (1443x) - 57606: 312, // boolType (1443x) - 57999: 313, // builtins (1443x) - 58000: 314, // cancel (1443x) - 57610: 315, // capture (1443x) - 57611: 316, // cascaded (1443x) - 57612: 317, // causal (1443x) - 57618: 318, // cleanup (1443x) - 57619: 319, // client (1443x) - 57622: 320, // collation (1443x) - 58003: 321, // columnStatsUsage (1443x) - 57628: 322, // committed (1443x) - 57625: 323, // config (1443x) - 57634: 324, // consistency (1443x) - 57635: 325, // consistent (1443x) - 58005: 326, // ddl (1443x) - 58007: 327, // depth (1443x) - 57657: 328, // disabled (1443x) - 57927: 329, // dump (1443x) - 57664: 330, // enabled (1443x) - 57669: 331, // engines (1443x) - 57670: 332, // enum (1443x) - 57674: 333, // events (1443x) - 57675: 334, // evolve (1443x) - 57680: 335, // expire (1443x) - 57929: 336, // exprPushdownBlacklist (1443x) - 57681: 337, // extended (1443x) - 57682: 338, // faultsSym (1443x) - 57691: 339, // function (1443x) - 57694: 340, // grants (1443x) - 58027: 341, // histogramsInFlight (1443x) - 57698: 342, // history (1443x) - 57704: 343, // imports (1443x) - 57706: 344, // incremental (1443x) - 57707: 345, // indexes (1443x) - 57940: 346, // internal (1443x) - 57711: 347, // invoker (1443x) - 57712: 348, // io (1443x) - 57719: 349, // language (1443x) - 57720: 350, // last (1443x) - 57723: 351, // less (1443x) - 57724: 352, // level (1443x) - 57725: 353, // list (1443x) - 57730: 354, // master (1443x) - 57732: 355, // max_minutes (1443x) - 57740: 356, // merge (1443x) - 57749: 357, // national (1443x) - 57750: 358, // ncharType (1443x) - 57753: 359, // nextval (1443x) - 57761: 360, // none (1443x) - 57763: 361, // nvarcharType (1443x) - 57770: 362, // open (1443x) - 58014: 363, // optimistic (1443x) - 57951: 364, // optRuleBlacklist (1443x) - 57774: 365, // parser (1443x) - 57775: 366, // partial (1443x) - 57776: 367, // partitioning (1443x) - 57781: 368, // per_table (1443x) - 57779: 369, // percent (1443x) - 58015: 370, // pessimistic (1443x) - 57788: 371, // preserve (1443x) - 57792: 372, // profile (1443x) - 57793: 373, // profiles (1443x) - 57797: 374, // queries (1443x) - 57958: 375, // recent (1443x) - 58037: 376, // region (1443x) - 57959: 377, // replayer (1443x) - 58035: 378, // reset (1443x) - 57816: 379, // restores (1443x) - 58017: 380, // run (1443x) - 57831: 381, // security (1443x) - 57836: 382, // serializable (1443x) - 57844: 383, // simple (1443x) - 57847: 384, // slave (1443x) - 58025: 385, // statsHealthy (1443x) - 58023: 386, // statsHistograms (1443x) - 58022: 387, // statsMeta (1443x) - 57969: 388, // strict (1443x) - 57875: 389, // switchesSym (1443x) - 57876: 390, // system (1443x) - 57877: 391, // systemTime (1443x) - 57974: 392, // target (1443x) - 58029: 393, // telemetryID (1443x) - 57882: 394, // temptable (1443x) - 57883: 395, // textType (1443x) - 57884: 396, // than (1443x) - 57977: 397, // tls (1443x) - 57986: 398, // top (1443x) - 57891: 399, // transaction (1443x) - 57892: 400, // triggers (1443x) - 57895: 401, // uncommitted (1443x) - 57896: 402, // undefined (1443x) - 58034: 403, // width (1443x) - 57909: 404, // x509 (1443x) - 57912: 405, // addDate (1442x) - 57581: 406, // any (1442x) - 57913: 407, // approxCountDistinct (1442x) - 57914: 408, // approxPercentile (1442x) - 57592: 409, // avg (1442x) - 57915: 410, // bitAnd (1442x) - 57916: 411, // bitOr (1442x) - 57917: 412, // bitXor (1442x) - 57918: 413, // bound (1442x) - 57920: 414, // cast (1442x) - 57923: 415, // curTime (1442x) - 57924: 416, // dateAdd (1442x) - 57925: 417, // dateSub (1442x) - 57672: 418, // escape (1442x) - 57673: 419, // event (1442x) - 57928: 420, // exact (1442x) - 57677: 421, // exclusive (1442x) - 57930: 422, // extract (1442x) - 57684: 423, // file (1442x) - 57932: 424, // follower (1442x) - 57935: 425, // getFormat (1442x) - 57936: 426, // groupConcat (1442x) - 57941: 427, // jsonArrayagg (1442x) - 57942: 428, // jsonObjectAgg (1442x) - 57722: 429, // lastval (1442x) - 57943: 430, // leader (1442x) - 57945: 431, // learner (1442x) - 57949: 432, // max (1442x) - 57948: 433, // min (1442x) - 57748: 434, // names (1442x) - 57950: 435, // now (1442x) - 57955: 436, // position (1442x) - 57790: 437, // process (1442x) - 57794: 438, // proxy (1442x) - 57799: 439, // quick (1442x) - 57810: 440, // replicas (1442x) - 57811: 441, // replication (1442x) - 57818: 442, // reverse (1442x) - 57822: 443, // rowCount (1442x) - 57838: 444, // setval (1442x) - 57841: 445, // shared (1442x) - 57850: 446, // some (1442x) - 57852: 447, // sqlBufferResult (1442x) - 57853: 448, // sqlCache (1442x) - 57854: 449, // sqlNoCache (1442x) - 57963: 450, // staleness (1442x) - 57964: 451, // std (1442x) - 57965: 452, // stddev (1442x) - 57966: 453, // stddevPop (1442x) - 57967: 454, // stddevSamp (1442x) - 57970: 455, // strong (1442x) - 57971: 456, // subDate (1442x) - 57973: 457, // substring (1442x) - 57972: 458, // sum (1442x) - 57873: 459, // super (1442x) - 58028: 460, // telemetry (1442x) - 57975: 461, // timestampAdd (1442x) - 57976: 462, // timestampDiff (1442x) - 57987: 463, // trim (1442x) - 57988: 464, // variance (1442x) - 57989: 465, // varPop (1442x) - 57990: 466, // varSamp (1442x) - 57993: 467, // voter (1442x) - 57907: 468, // weightString (1442x) - 57488: 469, // on (1378x) - 40: 470, // '(' (1294x) - 57568: 471, // with (1196x) - 57349: 472, // stringLit (1177x) - 58083: 473, // not2 (1176x) - 57481: 474, // not (1121x) - 57364: 475, // as (1089x) - 57398: 476, // defaultKwd (1085x) - 57547: 477, // union (1052x) - 57553: 478, // using (1046x) - 57379: 479, // collate (1036x) - 57461: 480, // left (1032x) - 57515: 481, // right (1032x) - 45: 482, // '-' (1001x) - 43: 483, // '+' (1000x) - 57480: 484, // mod (981x) - 57415: 485, // except (945x) - 57441: 486, // intersect (944x) - 57435: 487, // ignore (942x) - 57496: 488, // partition (942x) - 57485: 489, // null (930x) - 57463: 490, // limit (924x) - 57420: 491, // forKwd (922x) - 57443: 492, // into (915x) - 57469: 493, // lock (911x) - 57565: 494, // where (904x) - 57423: 495, // from (903x) - 58072: 496, // eq (902x) - 57417: 497, // fetch (901x) - 57557: 498, // values (900x) - 57493: 499, // order (897x) - 57421: 500, // force (892x) - 57522: 501, // set (884x) - 57363: 502, // and (881x) - 57377: 503, // charType (881x) - 57511: 504, // replace (873x) - 58067: 505, // intLit (867x) - 57492: 506, // or (858x) - 57354: 507, // andand (857x) - 57782: 508, // pipesAsOr (857x) - 57569: 509, // xor (857x) - 57427: 510, // group (832x) - 57429: 511, // having (832x) - 57533: 512, // straightJoin (826x) - 57567: 513, // window (818x) - 57453: 514, // join (814x) - 57462: 515, // like (805x) - 57572: 516, // natural (804x) - 57384: 517, // cross (803x) - 57439: 518, // inner (803x) - 125: 519, // '}' (800x) - 42: 520, // '*' (796x) - 57518: 521, // rows (788x) - 57552: 522, // use (784x) - 57535: 523, // tableSample (778x) - 57501: 524, // rangeKwd (777x) - 57428: 525, // groups (776x) - 57402: 526, // desc (775x) - 57365: 527, // asc (773x) - 57393: 528, // dayHour (771x) - 57394: 529, // dayMicrosecond (771x) - 57395: 530, // dayMinute (771x) - 57396: 531, // daySecond (771x) - 57431: 532, // hourMicrosecond (771x) - 57432: 533, // hourMinute (771x) - 57433: 534, // hourSecond (771x) - 57478: 535, // minuteMicrosecond (771x) - 57479: 536, // minuteSecond (771x) - 57520: 537, // secondMicrosecond (771x) - 57570: 538, // yearMonth (771x) - 57564: 539, // when (770x) - 57436: 540, // in (768x) - 57368: 541, // binaryType (767x) - 57410: 542, // elseKwd (767x) - 57538: 543, // then (764x) - 60: 544, // '<' (757x) - 62: 545, // '>' (757x) - 58073: 546, // ge (757x) - 57445: 547, // is (757x) - 58074: 548, // le (757x) - 58078: 549, // neq (757x) - 58079: 550, // neqSynonym (757x) - 58080: 551, // nulleq (757x) - 57366: 552, // between (755x) - 47: 553, // '/' (754x) - 37: 554, // '%' (753x) - 38: 555, // '&' (753x) - 94: 556, // '^' (753x) - 124: 557, // '|' (753x) - 57406: 558, // div (753x) - 58077: 559, // lsh (753x) - 58082: 560, // rsh (753x) - 57507: 561, // regexpKwd (747x) - 57516: 562, // rlike (747x) - 57434: 563, // ifKwd (742x) - 57446: 564, // insert (729x) - 57350: 565, // singleAtIdentifier (724x) - 57534: 566, // tableKwd (723x) - 57389: 567, // currentUser (720x) - 57416: 568, // falseKwd (718x) - 57545: 569, // trueKwd (718x) - 57454: 570, // key (715x) - 58066: 571, // decLit (712x) - 58065: 572, // floatLit (712x) - 57517: 573, // row (712x) - 58068: 574, // hexLit (710x) - 58081: 575, // paramMarker (710x) - 123: 576, // '{' (708x) - 58069: 577, // bitLit (708x) - 57442: 578, // interval (707x) - 57378: 579, // check (705x) - 57355: 580, // pipes (705x) - 57499: 581, // primary (705x) - 57391: 582, // database (703x) - 57413: 583, // exists (703x) - 57382: 584, // convert (700x) - 58053: 585, // builtinNow (699x) - 57388: 586, // currentTs (699x) - 57351: 587, // doubleAtIdentifier (699x) - 57467: 588, // localTime (699x) - 57468: 589, // localTs (699x) - 57348: 590, // underscoreCS (698x) - 57546: 591, // unique (698x) - 58042: 592, // builtinCount (697x) - 33: 593, // '!' (696x) - 126: 594, // '~' (696x) - 58043: 595, // builtinApproxCountDistinct (696x) - 58044: 596, // builtinApproxPercentile (696x) - 58038: 597, // builtinBitAnd (696x) - 58039: 598, // builtinBitOr (696x) - 58040: 599, // builtinBitXor (696x) - 58041: 600, // builtinCast (696x) - 58045: 601, // builtinCurDate (696x) - 58046: 602, // builtinCurTime (696x) - 58047: 603, // builtinDateAdd (696x) - 58048: 604, // builtinDateSub (696x) - 58049: 605, // builtinExtract (696x) - 58050: 606, // builtinGroupConcat (696x) - 58051: 607, // builtinMax (696x) - 58052: 608, // builtinMin (696x) - 58054: 609, // builtinPosition (696x) - 58058: 610, // builtinStddevPop (696x) - 58059: 611, // builtinStddevSamp (696x) - 58055: 612, // builtinSubstring (696x) - 58056: 613, // builtinSum (696x) - 58057: 614, // builtinSysDate (696x) - 58060: 615, // builtinTranslate (696x) - 58061: 616, // builtinTrim (696x) - 58062: 617, // builtinUser (696x) - 58063: 618, // builtinVarPop (696x) - 58064: 619, // builtinVarSamp (696x) - 57374: 620, // caseKwd (696x) - 57381: 621, // constraint (696x) - 57385: 622, // cumeDist (696x) - 57386: 623, // currentDate (696x) - 57390: 624, // currentRole (696x) - 57387: 625, // currentTime (696x) - 57401: 626, // denseRank (696x) - 57418: 627, // firstValue (696x) - 57457: 628, // lag (696x) - 57458: 629, // lastValue (696x) - 57459: 630, // lead (696x) - 57483: 631, // nthValue (696x) - 57484: 632, // ntile (696x) - 57497: 633, // percentRank (696x) - 57502: 634, // rank (696x) - 57510: 635, // repeat (696x) - 57519: 636, // rowNumber (696x) - 57554: 637, // utcDate (696x) - 57556: 638, // utcTime (696x) - 57555: 639, // utcTimestamp (696x) - 57506: 640, // references (693x) - 57425: 641, // generated (689x) - 57521: 642, // selectKwd (680x) - 57376: 643, // character (654x) - 57473: 644, // match (646x) - 57437: 645, // index (642x) - 57542: 646, // to (565x) - 57360: 647, // all (551x) - 46: 648, // '.' (545x) - 57362: 649, // analyze (526x) - 57550: 650, // update (520x) - 58075: 651, // jss (512x) - 58076: 652, // juss (512x) - 57474: 653, // maxValue (508x) - 57464: 654, // lines (501x) - 57371: 655, // by (498x) - 58071: 656, // assignmentEq (497x) - 57361: 657, // alter (495x) - 57512: 658, // require (493x) - 58331: 659, // Identifier (489x) - 58407: 660, // NotKeywordToken (489x) - 58633: 661, // TiDBKeyword (489x) - 58643: 662, // UnReservedKeyword (489x) - 64: 663, // '@' (488x) - 57526: 664, // sql (485x) - 57408: 665, // drop (482x) - 57373: 666, // cascade (481x) - 57503: 667, // read (481x) - 57513: 668, // restrict (481x) - 57347: 669, // asof (479x) - 57383: 670, // create (477x) - 57422: 671, // foreign (477x) - 57424: 672, // fulltext (477x) - 57560: 673, // varcharacter (475x) - 57559: 674, // varcharType (475x) - 57375: 675, // change (474x) - 57397: 676, // decimalType (474x) - 57407: 677, // doubleType (474x) - 57419: 678, // floatType (474x) - 57440: 679, // integerType (474x) - 57447: 680, // intType (474x) - 57504: 681, // realType (474x) - 57509: 682, // rename (474x) - 57566: 683, // write (474x) - 57561: 684, // varbinaryType (473x) - 57359: 685, // add (472x) - 57367: 686, // bigIntType (472x) - 57369: 687, // blobType (472x) - 57448: 688, // int1Type (472x) - 57449: 689, // int2Type (472x) - 57450: 690, // int3Type (472x) - 57451: 691, // int4Type (472x) - 57452: 692, // int8Type (472x) - 57558: 693, // long (472x) - 57470: 694, // longblobType (472x) - 57471: 695, // longtextType (472x) - 57475: 696, // mediumblobType (472x) - 57476: 697, // mediumIntType (472x) - 57477: 698, // mediumtextType (472x) - 57486: 699, // numericType (472x) - 57489: 700, // optimize (472x) - 57524: 701, // smallIntType (472x) - 57539: 702, // tinyblobType (472x) - 57540: 703, // tinyIntType (472x) - 57541: 704, // tinytextType (472x) - 58598: 705, // SubSelect (214x) - 58652: 706, // UserVariable (172x) - 58573: 707, // SimpleIdent (171x) - 58383: 708, // Literal (169x) - 58588: 709, // StringLiteral (169x) - 58404: 710, // NextValueForSequence (168x) - 58308: 711, // FunctionCallGeneric (167x) - 58309: 712, // FunctionCallKeyword (167x) - 58310: 713, // FunctionCallNonKeyword (167x) - 58311: 714, // FunctionNameConflict (167x) - 58312: 715, // FunctionNameDateArith (167x) - 58313: 716, // FunctionNameDateArithMultiForms (167x) - 58314: 717, // FunctionNameDatetimePrecision (167x) - 58315: 718, // FunctionNameOptionalBraces (167x) - 58316: 719, // FunctionNameSequence (167x) - 58572: 720, // SimpleExpr (167x) - 58599: 721, // SumExpr (167x) - 58601: 722, // SystemVariable (167x) - 58663: 723, // Variable (167x) - 58686: 724, // WindowFuncCall (167x) - 58158: 725, // BitExpr (154x) - 58479: 726, // PredicateExpr (131x) - 58161: 727, // BoolPri (128x) - 58275: 728, // Expression (128x) - 58402: 729, // NUM (98x) - 58701: 730, // logAnd (96x) - 58702: 731, // logOr (96x) - 58265: 732, // EqOpt (75x) - 58611: 733, // TableName (75x) - 58589: 734, // StringName (56x) - 57400: 735, // deleteKwd (52x) - 57549: 736, // unsigned (47x) - 57495: 737, // over (45x) - 57571: 738, // zerofill (45x) - 58184: 739, // ColumnName (41x) - 58374: 740, // LengthNum (41x) - 57404: 741, // distinct (36x) - 57405: 742, // distinctRow (36x) - 58691: 743, // WindowingClause (35x) - 58527: 744, // SelectStmt (34x) - 58528: 745, // SelectStmtBasic (34x) - 58530: 746, // SelectStmtFromDualTable (34x) - 58531: 747, // SelectStmtFromTable (34x) - 58548: 748, // SetOprClause (34x) - 57399: 749, // delayed (33x) - 57430: 750, // highPriority (33x) - 57472: 751, // lowPriority (33x) - 58549: 752, // SetOprClauseList (33x) - 58552: 753, // SetOprStmtWithLimitOrderBy (33x) - 58553: 754, // SetOprStmtWoutLimitOrderBy (33x) - 58692: 755, // WithClause (31x) - 58540: 756, // SelectStmtWithClause (30x) - 58551: 757, // SetOprStmt (30x) - 57353: 758, // hintComment (27x) - 58286: 759, // FieldLen (26x) - 58363: 760, // Int64Num (26x) - 58445: 761, // OptWindowingClause (24x) - 58240: 762, // DeleteWithoutUsingStmt (23x) - 58451: 763, // OrderBy (23x) - 58534: 764, // SelectStmtLimit (23x) - 57527: 765, // sqlBigResult (23x) - 57528: 766, // sqlCalcFoundRows (23x) - 57529: 767, // sqlSmallResult (23x) - 58646: 768, // UpdateStmtNoWith (22x) - 58172: 769, // CharsetKw (20x) - 58360: 770, // InsertIntoStmt (20x) - 58501: 771, // ReplaceIntoStmt (20x) - 58645: 772, // UpdateStmt (20x) - 58654: 773, // Username (20x) - 58276: 774, // ExpressionList (18x) - 58239: 775, // DeleteWithUsingStmt (17x) - 58474: 776, // PlacementPolicyOption (17x) - 58332: 777, // IfExists (16x) - 57537: 778, // terminated (16x) - 58238: 779, // DeleteFromStmt (15x) - 58242: 780, // DistinctKwd (15x) - 58333: 781, // IfNotExists (15x) - 58430: 782, // OptFieldLen (15x) - 58243: 783, // DistinctOpt (14x) - 57411: 784, // enclosed (14x) - 58462: 785, // PartitionNameList (14x) - 58676: 786, // WhereClause (14x) - 58677: 787, // WhereClauseOptional (14x) - 58235: 788, // DefaultKwdOpt (13x) - 57412: 789, // escaped (13x) - 57491: 790, // optionally (13x) - 58612: 791, // TableNameList (13x) - 58274: 792, // ExprOrDefault (12x) - 58368: 793, // JoinTable (12x) - 58424: 794, // OptBinary (12x) - 57508: 795, // release (12x) - 58517: 796, // RolenameComposed (12x) - 58608: 797, // TableFactor (12x) - 58621: 798, // TableRef (12x) - 58132: 799, // AnalyzeOptionListOpt (11x) - 58303: 800, // FromOrIn (11x) - 58635: 801, // TimestampUnit (11x) - 58128: 802, // AlterTableStmt (10x) - 58173: 803, // CharsetName (10x) - 58185: 804, // ColumnNameList (10x) - 57466: 805, // load (10x) - 58408: 806, // NotSym (10x) - 58452: 807, // OrderByOptional (10x) - 58454: 808, // PartDefOption (10x) - 58571: 809, // SignedNum (10x) - 58164: 810, // BuggyDefaultFalseDistinctOpt (9x) - 58225: 811, // DBName (9x) - 58234: 812, // DefaultFalseDistinctOpt (9x) - 58369: 813, // JoinType (9x) - 57482: 814, // noWriteToBinLog (9x) - 58414: 815, // NumLiteral (9x) - 58516: 816, // Rolename (9x) - 58511: 817, // RoleNameString (9x) - 58224: 818, // CrossOpt (8x) - 58266: 819, // EqOrAssignmentEq (8x) - 58273: 820, // ExplainableStmt (8x) - 58277: 821, // ExpressionListOpt (8x) - 58354: 822, // IndexPartSpecification (8x) - 58370: 823, // KeyOrIndex (8x) - 58535: 824, // SelectStmtLimitOpt (8x) - 58634: 825, // TimeUnit (8x) - 58666: 826, // VariableName (8x) - 58114: 827, // AllOrPartitionNameList (7x) - 58208: 828, // ConstraintKeywordOpt (7x) - 58292: 829, // FieldsOrColumns (7x) - 58301: 830, // ForceOpt (7x) - 58355: 831, // IndexPartSpecificationList (7x) - 58405: 832, // NoWriteToBinLogAliasOpt (7x) - 58483: 833, // Priority (7x) - 58521: 834, // RowFormat (7x) - 58524: 835, // RowValue (7x) - 58546: 836, // SetExpr (7x) - 58557: 837, // ShowDatabaseNameOpt (7x) - 58618: 838, // TableOption (7x) - 57562: 839, // varying (7x) - 58153: 840, // BeginTransactionStmt (6x) - 58155: 841, // BindableStmt (6x) - 57380: 842, // column (6x) - 58179: 843, // ColumnDef (6x) - 58198: 844, // CommitStmt (6x) - 58227: 845, // DatabaseOption (6x) - 58230: 846, // DatabaseSym (6x) - 58268: 847, // EscapedTableRef (6x) - 58290: 848, // FieldTerminator (6x) - 57426: 849, // grant (6x) - 58337: 850, // IgnoreOptional (6x) - 58346: 851, // IndexInvisible (6x) - 58351: 852, // IndexNameList (6x) - 58357: 853, // IndexType (6x) - 58387: 854, // LoadDataStmt (6x) - 58463: 855, // PartitionNameListOpt (6x) - 58496: 856, // ReleaseSavepointStmt (6x) - 58518: 857, // RolenameList (6x) - 58520: 858, // RollbackStmt (6x) - 58525: 859, // SavepointStmt (6x) - 58556: 860, // SetStmt (6x) - 57523: 861, // show (6x) - 58616: 862, // TableOptimizerHints (6x) - 58655: 863, // UsernameList (6x) - 58693: 864, // WithClustered (6x) - 58112: 865, // AlgorithmClause (5x) - 58166: 866, // ByItem (5x) - 58178: 867, // CollationName (5x) - 58182: 868, // ColumnKeywordOpt (5x) - 58241: 869, // DirectPlacementOption (5x) - 58288: 870, // FieldOpt (5x) - 58289: 871, // FieldOpts (5x) - 58329: 872, // IdentList (5x) - 58349: 873, // IndexName (5x) - 58352: 874, // IndexOption (5x) - 58353: 875, // IndexOptionList (5x) - 57438: 876, // infile (5x) - 58379: 877, // LimitOption (5x) - 58391: 878, // LockClause (5x) - 58426: 879, // OptCharsetWithOptBinary (5x) - 58437: 880, // OptNullTreatment (5x) - 58477: 881, // PolicyName (5x) - 58484: 882, // PriorityOpt (5x) - 58526: 883, // SelectLockOpt (5x) - 58533: 884, // SelectStmtIntoOption (5x) - 58622: 885, // TableRefs (5x) - 58648: 886, // UserSpec (5x) - 58138: 887, // Assignment (4x) - 58144: 888, // AuthString (4x) - 58145: 889, // BRIEBooleanOptionName (4x) - 58146: 890, // BRIEIntegerOptionName (4x) - 58147: 891, // BRIEKeywordOptionName (4x) - 58148: 892, // BRIEOption (4x) - 58149: 893, // BRIEOptions (4x) - 58151: 894, // BRIEStringOptionName (4x) - 58167: 895, // ByList (4x) - 58171: 896, // Char (4x) - 58202: 897, // ConfigItemName (4x) - 58206: 898, // Constraint (4x) - 58297: 899, // FloatOpt (4x) - 58358: 900, // IndexTypeName (4x) - 57490: 901, // option (4x) - 58442: 902, // OptWild (4x) - 57494: 903, // outer (4x) - 58478: 904, // Precision (4x) - 58492: 905, // ReferDef (4x) - 58507: 906, // RestrictOrCascadeOpt (4x) - 58523: 907, // RowStmt (4x) - 58541: 908, // SequenceOption (4x) - 57532: 909, // statsExtended (4x) - 58603: 910, // TableAsName (4x) - 58604: 911, // TableAsNameOpt (4x) - 58615: 912, // TableNameOptWild (4x) - 58617: 913, // TableOptimizerHintsOpt (4x) - 58619: 914, // TableOptionList (4x) - 58637: 915, // TraceableStmt (4x) - 58638: 916, // TransactionChar (4x) - 58649: 917, // UserSpecList (4x) - 58687: 918, // WindowName (4x) - 58135: 919, // AsOfClause (3x) - 58139: 920, // AssignmentList (3x) - 58141: 921, // AttributesOpt (3x) - 58162: 922, // Boolean (3x) - 58191: 923, // ColumnOption (3x) - 58194: 924, // ColumnPosition (3x) - 58199: 925, // CommonTableExpr (3x) - 58220: 926, // CreateTableStmt (3x) - 58228: 927, // DatabaseOptionList (3x) - 58236: 928, // DefaultTrueDistinctOpt (3x) - 58262: 929, // EnforcedOrNot (3x) - 57414: 930, // explain (3x) - 58279: 931, // ExtendedPriv (3x) - 58317: 932, // GeneratedAlways (3x) - 58319: 933, // GlobalScope (3x) - 58323: 934, // GroupByClause (3x) - 58341: 935, // IndexHint (3x) - 58345: 936, // IndexHintType (3x) - 58350: 937, // IndexNameAndTypeOpt (3x) - 57455: 938, // keys (3x) - 58381: 939, // Lines (3x) - 58399: 940, // MaxValueOrExpression (3x) - 58409: 941, // NowSym (3x) - 58410: 942, // NowSymFunc (3x) - 58411: 943, // NowSymOptionFraction (3x) - 58438: 944, // OptOrder (3x) - 58441: 945, // OptTemporary (3x) - 58455: 946, // PartDefOptionList (3x) - 58457: 947, // PartitionDefinition (3x) - 58466: 948, // PasswordExpire (3x) - 58468: 949, // PasswordOrLockOption (3x) - 58476: 950, // PluginNameList (3x) - 58482: 951, // PrimaryOpt (3x) - 58485: 952, // PrivElem (3x) - 58487: 953, // PrivType (3x) - 57500: 954, // procedure (3x) - 58502: 955, // RequireClause (3x) - 58503: 956, // RequireClauseOpt (3x) - 58505: 957, // RequireListElement (3x) - 58519: 958, // RolenameWithoutIdent (3x) - 58512: 959, // RoleOrPrivElem (3x) - 58532: 960, // SelectStmtGroup (3x) - 58550: 961, // SetOprOpt (3x) - 58602: 962, // TableAliasRefList (3x) - 58605: 963, // TableElement (3x) - 58614: 964, // TableNameListOpt2 (3x) - 58630: 965, // TextString (3x) - 58639: 966, // TransactionChars (3x) - 57544: 967, // trigger (3x) - 57548: 968, // unlock (3x) - 57551: 969, // usage (3x) - 58659: 970, // ValuesList (3x) - 58661: 971, // ValuesStmtList (3x) - 58657: 972, // ValueSym (3x) - 58664: 973, // VariableAssignment (3x) - 58684: 974, // WindowFrameStart (3x) - 58111: 975, // AdminStmt (2x) - 58113: 976, // AllColumnsOrPredicateColumnsOpt (2x) - 58115: 977, // AlterDatabaseStmt (2x) - 58116: 978, // AlterImportStmt (2x) - 58117: 979, // AlterInstanceStmt (2x) - 58118: 980, // AlterOrderItem (2x) - 58120: 981, // AlterPolicyStmt (2x) - 58121: 982, // AlterSequenceOption (2x) - 58123: 983, // AlterSequenceStmt (2x) - 58125: 984, // AlterTableSpec (2x) - 58129: 985, // AlterUserStmt (2x) - 58130: 986, // AnalyzeOption (2x) - 58133: 987, // AnalyzeTableStmt (2x) - 58157: 988, // BinlogStmt (2x) - 58150: 989, // BRIEStmt (2x) - 58152: 990, // BRIETables (2x) - 58165: 991, // BuiltinFunction (2x) - 57372: 992, // call (2x) - 58168: 993, // CallStmt (2x) - 58169: 994, // CastType (2x) - 58170: 995, // ChangeStmt (2x) - 58176: 996, // CheckConstraintKeyword (2x) - 58186: 997, // ColumnNameListOpt (2x) - 58189: 998, // ColumnNameOrUserVariable (2x) - 58192: 999, // ColumnOptionList (2x) - 58193: 1000, // ColumnOptionListOpt (2x) - 58195: 1001, // ColumnSetValue (2x) - 58201: 1002, // CompletionTypeWithinTransaction (2x) - 58203: 1003, // ConnectionOption (2x) - 58205: 1004, // ConnectionOptions (2x) - 58209: 1005, // CreateBindingStmt (2x) - 58210: 1006, // CreateDatabaseStmt (2x) - 58211: 1007, // CreateImportStmt (2x) - 58212: 1008, // CreateIndexStmt (2x) - 58213: 1009, // CreatePolicyStmt (2x) - 58214: 1010, // CreateRoleStmt (2x) - 58216: 1011, // CreateSequenceStmt (2x) - 58217: 1012, // CreateStatisticsStmt (2x) - 58218: 1013, // CreateTableOptionListOpt (2x) - 58221: 1014, // CreateUserStmt (2x) - 58223: 1015, // CreateViewStmt (2x) - 57392: 1016, // databases (2x) - 58232: 1017, // DeallocateStmt (2x) - 58233: 1018, // DeallocateSym (2x) - 57403: 1019, // describe (2x) - 58244: 1020, // DoStmt (2x) - 58245: 1021, // DropBindingStmt (2x) - 58246: 1022, // DropDatabaseStmt (2x) - 58247: 1023, // DropImportStmt (2x) - 58248: 1024, // DropIndexStmt (2x) - 58249: 1025, // DropPolicyStmt (2x) - 58250: 1026, // DropRoleStmt (2x) - 58251: 1027, // DropSequenceStmt (2x) - 58252: 1028, // DropStatisticsStmt (2x) - 58253: 1029, // DropStatsStmt (2x) - 58254: 1030, // DropTableStmt (2x) - 58255: 1031, // DropUserStmt (2x) - 58256: 1032, // DropViewStmt (2x) - 58258: 1033, // DuplicateOpt (2x) - 58260: 1034, // EmptyStmt (2x) - 58261: 1035, // EncryptionOpt (2x) - 58263: 1036, // EnforcedOrNotOpt (2x) - 58267: 1037, // ErrorHandling (2x) - 58269: 1038, // ExecuteStmt (2x) - 58270: 1039, // ExplainFormatType (2x) - 58271: 1040, // ExplainStmt (2x) - 58272: 1041, // ExplainSym (2x) - 58281: 1042, // Field (2x) - 58284: 1043, // FieldItem (2x) - 58291: 1044, // Fields (2x) - 58295: 1045, // FlashbackTableStmt (2x) - 58300: 1046, // FlushStmt (2x) - 58306: 1047, // FuncDatetimePrecList (2x) - 58307: 1048, // FuncDatetimePrecListOpt (2x) - 58320: 1049, // GrantProxyStmt (2x) - 58321: 1050, // GrantRoleStmt (2x) - 58322: 1051, // GrantStmt (2x) - 58324: 1052, // HandleRange (2x) - 58326: 1053, // HashString (2x) - 58327: 1054, // HavingClause (2x) - 58328: 1055, // HelpStmt (2x) - 58340: 1056, // IndexAdviseStmt (2x) - 58342: 1057, // IndexHintList (2x) - 58343: 1058, // IndexHintListOpt (2x) - 58348: 1059, // IndexLockAndAlgorithmOpt (2x) - 58361: 1060, // InsertValues (2x) - 58365: 1061, // IntoOpt (2x) - 58371: 1062, // KeyOrIndexOpt (2x) - 57456: 1063, // kill (2x) - 58372: 1064, // KillOrKillTiDB (2x) - 58373: 1065, // KillStmt (2x) - 58378: 1066, // LimitClause (2x) - 57465: 1067, // linear (2x) - 58380: 1068, // LinearOpt (2x) - 58384: 1069, // LoadDataSetItem (2x) - 58388: 1070, // LoadStatsStmt (2x) - 58389: 1071, // LocalOpt (2x) - 58390: 1072, // LocationLabelList (2x) - 58392: 1073, // LockTablesStmt (2x) - 58400: 1074, // MaxValueOrExpressionList (2x) - 58406: 1075, // NonTransactionalDeleteStmt (2x) - 58412: 1076, // NowSymOptionFractionParentheses (2x) - 58413: 1077, // NumList (2x) - 58416: 1078, // ObjectType (2x) - 57487: 1079, // of (2x) - 58417: 1080, // OfTablesOpt (2x) - 58418: 1081, // OnCommitOpt (2x) - 58419: 1082, // OnDelete (2x) - 58422: 1083, // OnUpdate (2x) - 58427: 1084, // OptCollate (2x) - 58432: 1085, // OptFull (2x) - 58434: 1086, // OptInteger (2x) - 58447: 1087, // OptionalBraces (2x) - 58446: 1088, // OptionLevel (2x) - 58436: 1089, // OptLeadLagInfo (2x) - 58435: 1090, // OptLLDefault (2x) - 58453: 1091, // OuterOpt (2x) - 58458: 1092, // PartitionDefinitionList (2x) - 58459: 1093, // PartitionDefinitionListOpt (2x) - 58465: 1094, // PartitionOpt (2x) - 58467: 1095, // PasswordOpt (2x) - 58469: 1096, // PasswordOrLockOptionList (2x) - 58470: 1097, // PasswordOrLockOptions (2x) - 58473: 1098, // PlacementOptionList (2x) - 58475: 1099, // PlanReplayerStmt (2x) - 58481: 1100, // PreparedStmt (2x) - 58486: 1101, // PrivLevel (2x) - 58489: 1102, // PurgeImportStmt (2x) - 58490: 1103, // QuickOptional (2x) - 58491: 1104, // RecoverTableStmt (2x) - 58493: 1105, // ReferOpt (2x) - 58495: 1106, // RegexpSym (2x) - 58497: 1107, // RenameTableStmt (2x) - 58498: 1108, // RenameUserStmt (2x) - 58500: 1109, // RepeatableOpt (2x) - 58506: 1110, // RestartStmt (2x) - 58508: 1111, // ResumeImportStmt (2x) - 57514: 1112, // revoke (2x) - 58509: 1113, // RevokeRoleStmt (2x) - 58510: 1114, // RevokeStmt (2x) - 58513: 1115, // RoleOrPrivElemList (2x) - 58514: 1116, // RoleSpec (2x) - 58536: 1117, // SelectStmtOpt (2x) - 58539: 1118, // SelectStmtSQLCache (2x) - 58543: 1119, // SetBindingStmt (2x) - 58544: 1120, // SetDefaultRoleOpt (2x) - 58545: 1121, // SetDefaultRoleStmt (2x) - 58555: 1122, // SetRoleStmt (2x) - 58558: 1123, // ShowImportStmt (2x) - 58563: 1124, // ShowProfileType (2x) - 58566: 1125, // ShowStmt (2x) - 58567: 1126, // ShowTableAliasOpt (2x) - 58569: 1127, // ShutdownStmt (2x) - 58570: 1128, // SignedLiteral (2x) - 58574: 1129, // SplitOption (2x) - 58575: 1130, // SplitRegionStmt (2x) - 58579: 1131, // Statement (2x) - 58582: 1132, // StatsOptionsOpt (2x) - 58583: 1133, // StatsPersistentVal (2x) - 58584: 1134, // StatsType (2x) - 58585: 1135, // StopImportStmt (2x) - 58592: 1136, // SubPartDefinition (2x) - 58595: 1137, // SubPartitionMethod (2x) - 58600: 1138, // Symbol (2x) - 58606: 1139, // TableElementList (2x) - 58609: 1140, // TableLock (2x) - 58613: 1141, // TableNameListOpt (2x) - 58620: 1142, // TableOrTables (2x) - 58629: 1143, // TablesTerminalSym (2x) - 58627: 1144, // TableToTable (2x) - 58631: 1145, // TextStringList (2x) - 58636: 1146, // TraceStmt (2x) - 58641: 1147, // TruncateTableStmt (2x) - 58644: 1148, // UnlockTablesStmt (2x) - 58650: 1149, // UserToUser (2x) - 58647: 1150, // UseStmt (2x) - 58662: 1151, // Varchar (2x) - 58665: 1152, // VariableAssignmentList (2x) - 58674: 1153, // WhenClause (2x) - 58679: 1154, // WindowDefinition (2x) - 58682: 1155, // WindowFrameBound (2x) - 58689: 1156, // WindowSpec (2x) - 58694: 1157, // WithGrantOptionOpt (2x) - 58695: 1158, // WithList (2x) - 58699: 1159, // Writeable (2x) - 58110: 1160, // AdminShowSlow (1x) - 58119: 1161, // AlterOrderList (1x) - 58122: 1162, // AlterSequenceOptionList (1x) - 58124: 1163, // AlterTablePartitionOpt (1x) - 58126: 1164, // AlterTableSpecList (1x) - 58127: 1165, // AlterTableSpecListOpt (1x) - 58131: 1166, // AnalyzeOptionList (1x) - 58134: 1167, // AnyOrAll (1x) - 58136: 1168, // AsOfClauseOpt (1x) - 58137: 1169, // AsOpt (1x) - 58142: 1170, // AuthOption (1x) - 58143: 1171, // AuthPlugin (1x) - 58154: 1172, // BetweenOrNotOp (1x) - 58156: 1173, // BindingStatusType (1x) - 58159: 1174, // BitValueType (1x) - 58160: 1175, // BlobType (1x) - 58163: 1176, // BooleanType (1x) - 57370: 1177, // both (1x) - 58174: 1178, // CharsetNameOrDefault (1x) - 58175: 1179, // CharsetOpt (1x) - 58177: 1180, // ClearPasswordExpireOptions (1x) - 58181: 1181, // ColumnFormat (1x) - 58183: 1182, // ColumnList (1x) - 58190: 1183, // ColumnNameOrUserVariableList (1x) - 58187: 1184, // ColumnNameOrUserVarListOpt (1x) - 58188: 1185, // ColumnNameOrUserVarListOptWithBrackets (1x) - 58196: 1186, // ColumnSetValueList (1x) - 58200: 1187, // CompareOp (1x) - 58204: 1188, // ConnectionOptionList (1x) - 58207: 1189, // ConstraintElem (1x) - 58215: 1190, // CreateSequenceOptionListOpt (1x) - 58219: 1191, // CreateTableSelectOpt (1x) - 58222: 1192, // CreateViewSelectOpt (1x) - 58229: 1193, // DatabaseOptionListOpt (1x) - 58231: 1194, // DateAndTimeType (1x) - 58226: 1195, // DBNameList (1x) - 58237: 1196, // DefaultValueExpr (1x) - 58257: 1197, // DryRunOptions (1x) - 57409: 1198, // dual (1x) - 58259: 1199, // ElseOpt (1x) - 58264: 1200, // EnforcedOrNotOrNotNullOpt (1x) - 58278: 1201, // ExpressionOpt (1x) - 58280: 1202, // FetchFirstOpt (1x) - 58282: 1203, // FieldAsName (1x) - 58283: 1204, // FieldAsNameOpt (1x) - 58285: 1205, // FieldItemList (1x) - 58287: 1206, // FieldList (1x) - 58293: 1207, // FirstOrNext (1x) - 58294: 1208, // FixedPointType (1x) - 58296: 1209, // FlashbackToNewName (1x) - 58298: 1210, // FloatingPointType (1x) - 58299: 1211, // FlushOption (1x) - 58302: 1212, // FromDual (1x) - 58304: 1213, // FulltextSearchModifierOpt (1x) - 58305: 1214, // FuncDatetimePrec (1x) - 58318: 1215, // GetFormatSelector (1x) - 58325: 1216, // HandleRangeList (1x) - 58330: 1217, // IdentListWithParenOpt (1x) - 58334: 1218, // IfNotRunning (1x) - 58335: 1219, // IfRunning (1x) - 58336: 1220, // IgnoreLines (1x) - 58338: 1221, // ImportTruncate (1x) - 58344: 1222, // IndexHintScope (1x) - 58347: 1223, // IndexKeyTypeOpt (1x) - 58356: 1224, // IndexPartSpecificationListOpt (1x) - 58359: 1225, // IndexTypeOpt (1x) - 58339: 1226, // InOrNotOp (1x) - 58362: 1227, // InstanceOption (1x) - 58364: 1228, // IntegerType (1x) - 58367: 1229, // IsolationLevel (1x) - 58366: 1230, // IsOrNotOp (1x) - 57460: 1231, // leading (1x) - 58375: 1232, // LikeEscapeOpt (1x) - 58376: 1233, // LikeOrNotOp (1x) - 58377: 1234, // LikeTableWithOrWithoutParen (1x) - 58382: 1235, // LinesTerminated (1x) - 58385: 1236, // LoadDataSetList (1x) - 58386: 1237, // LoadDataSetSpecOpt (1x) - 58393: 1238, // LockType (1x) - 58394: 1239, // LogTypeOpt (1x) - 58395: 1240, // Match (1x) - 58396: 1241, // MatchOpt (1x) - 58397: 1242, // MaxIndexNumOpt (1x) - 58398: 1243, // MaxMinutesOpt (1x) - 58401: 1244, // NChar (1x) - 58415: 1245, // NumericType (1x) - 58403: 1246, // NVarchar (1x) - 58420: 1247, // OnDeleteUpdateOpt (1x) - 58421: 1248, // OnDuplicateKeyUpdate (1x) - 58423: 1249, // OptBinMod (1x) - 58425: 1250, // OptCharset (1x) - 58428: 1251, // OptErrors (1x) - 58429: 1252, // OptExistingWindowName (1x) - 58431: 1253, // OptFromFirstLast (1x) - 58433: 1254, // OptGConcatSeparator (1x) - 58448: 1255, // OptionalShardColumn (1x) - 58439: 1256, // OptPartitionClause (1x) - 58440: 1257, // OptTable (1x) - 58443: 1258, // OptWindowFrameClause (1x) - 58444: 1259, // OptWindowOrderByClause (1x) - 58450: 1260, // Order (1x) - 58449: 1261, // OrReplace (1x) - 57444: 1262, // outfile (1x) - 58456: 1263, // PartDefValuesOpt (1x) - 58460: 1264, // PartitionKeyAlgorithmOpt (1x) - 58461: 1265, // PartitionMethod (1x) - 58464: 1266, // PartitionNumOpt (1x) - 58471: 1267, // PerDB (1x) - 58472: 1268, // PerTable (1x) - 57498: 1269, // precisionType (1x) - 58480: 1270, // PrepareSQL (1x) - 58488: 1271, // ProcedureCall (1x) - 57505: 1272, // recursive (1x) - 58494: 1273, // RegexpOrNotOp (1x) - 58499: 1274, // ReorganizePartitionRuleOpt (1x) - 58504: 1275, // RequireList (1x) - 58515: 1276, // RoleSpecList (1x) - 58522: 1277, // RowOrRows (1x) - 58529: 1278, // SelectStmtFieldList (1x) - 58537: 1279, // SelectStmtOpts (1x) - 58538: 1280, // SelectStmtOptsList (1x) - 58542: 1281, // SequenceOptionList (1x) - 58547: 1282, // SetOpr (1x) - 58554: 1283, // SetRoleOpt (1x) - 58559: 1284, // ShowIndexKwd (1x) - 58560: 1285, // ShowLikeOrWhereOpt (1x) - 58561: 1286, // ShowPlacementTarget (1x) - 58562: 1287, // ShowProfileArgsOpt (1x) - 58564: 1288, // ShowProfileTypes (1x) - 58565: 1289, // ShowProfileTypesOpt (1x) - 58568: 1290, // ShowTargetFilterable (1x) - 57525: 1291, // spatial (1x) - 58576: 1292, // SplitSyntaxOption (1x) - 57530: 1293, // ssl (1x) - 58577: 1294, // Start (1x) - 58578: 1295, // Starting (1x) - 57531: 1296, // starting (1x) - 58580: 1297, // StatementList (1x) - 58581: 1298, // StatementScope (1x) - 58586: 1299, // StorageMedia (1x) - 57536: 1300, // stored (1x) - 58587: 1301, // StringList (1x) - 58590: 1302, // StringNameOrBRIEOptionKeyword (1x) - 58591: 1303, // StringType (1x) - 58593: 1304, // SubPartDefinitionList (1x) - 58594: 1305, // SubPartDefinitionListOpt (1x) - 58596: 1306, // SubPartitionNumOpt (1x) - 58597: 1307, // SubPartitionOpt (1x) - 58607: 1308, // TableElementListOpt (1x) - 58610: 1309, // TableLockList (1x) - 58623: 1310, // TableRefsClause (1x) - 58624: 1311, // TableSampleMethodOpt (1x) - 58625: 1312, // TableSampleOpt (1x) - 58626: 1313, // TableSampleUnitOpt (1x) - 58628: 1314, // TableToTableList (1x) - 58632: 1315, // TextType (1x) - 57543: 1316, // trailing (1x) - 58640: 1317, // TrimDirection (1x) - 58642: 1318, // Type (1x) - 58651: 1319, // UserToUserList (1x) - 58653: 1320, // UserVariableList (1x) - 58656: 1321, // UsingRoles (1x) - 58658: 1322, // Values (1x) - 58660: 1323, // ValuesOpt (1x) - 58667: 1324, // ViewAlgorithm (1x) - 58668: 1325, // ViewCheckOption (1x) - 58669: 1326, // ViewDefiner (1x) - 58670: 1327, // ViewFieldList (1x) - 58671: 1328, // ViewName (1x) - 58672: 1329, // ViewSQLSecurity (1x) - 57563: 1330, // virtual (1x) - 58673: 1331, // VirtualOrStored (1x) - 58675: 1332, // WhenClauseList (1x) - 58678: 1333, // WindowClauseOptional (1x) - 58680: 1334, // WindowDefinitionList (1x) - 58681: 1335, // WindowFrameBetween (1x) - 58683: 1336, // WindowFrameExtent (1x) - 58685: 1337, // WindowFrameUnits (1x) - 58688: 1338, // WindowNameOrSpec (1x) - 58690: 1339, // WindowSpecDetails (1x) - 58696: 1340, // WithReadLockOpt (1x) - 58697: 1341, // WithValidation (1x) - 58698: 1342, // WithValidationOpt (1x) - 58700: 1343, // Year (1x) - 58109: 1344, // $default (0x) - 58070: 1345, // andnot (0x) - 58140: 1346, // AssignmentListOpt (0x) - 58180: 1347, // ColumnDefList (0x) - 58197: 1348, // CommaOpt (0x) - 58093: 1349, // createTableSelect (0x) - 58084: 1350, // empty (0x) - 57345: 1351, // error (0x) - 58108: 1352, // higherThanComma (0x) - 58102: 1353, // higherThanParenthese (0x) - 58091: 1354, // insertValues (0x) - 57352: 1355, // invalid (0x) - 58094: 1356, // lowerThanCharsetKwd (0x) - 58107: 1357, // lowerThanComma (0x) - 58092: 1358, // lowerThanCreateTableSelect (0x) - 58104: 1359, // lowerThanEq (0x) - 58099: 1360, // lowerThanFunction (0x) - 58090: 1361, // lowerThanInsertValues (0x) - 58095: 1362, // lowerThanKey (0x) - 58096: 1363, // lowerThanLocal (0x) - 58106: 1364, // lowerThanNot (0x) - 58103: 1365, // lowerThanOn (0x) - 58101: 1366, // lowerThanParenthese (0x) - 58097: 1367, // lowerThanRemove (0x) - 58085: 1368, // lowerThanSelectOpt (0x) - 58089: 1369, // lowerThanSelectStmt (0x) - 58088: 1370, // lowerThanSetKeyword (0x) - 58087: 1371, // lowerThanStringLitToken (0x) - 58086: 1372, // lowerThanValueKeyword (0x) - 58098: 1373, // lowerThenOrder (0x) - 58105: 1374, // neg (0x) - 57356: 1375, // odbcDateType (0x) - 57358: 1376, // odbcTimestampType (0x) - 57357: 1377, // odbcTimeType (0x) - 58100: 1378, // tableRefPriority (0x) + 57344: 0, // $end (2209x) + 59: 1, // ';' (2208x) + 57805: 2, // remove (1852x) + 57806: 3, // reorganize (1852x) + 57626: 4, // comment (1788x) + 57868: 5, // storage (1764x) + 57589: 6, // autoIncrement (1753x) + 44: 7, // ',' (1665x) + 57685: 8, // first (1652x) + 57576: 9, // after (1650x) + 57835: 10, // serial (1646x) + 57590: 11, // autoRandom (1645x) + 57623: 12, // columnFormat (1645x) + 57778: 13, // password (1614x) + 57614: 14, // charsetKwd (1612x) + 57616: 15, // checksum (1600x) + 57952: 16, // placement (1598x) + 57717: 17, // keyBlockSize (1582x) + 57880: 18, // tablespace (1579x) + 57665: 19, // encryption (1577x) + 57668: 20, // engine (1574x) + 57648: 21, // data (1572x) + 57708: 22, // insertMethod (1570x) + 57735: 23, // maxRows (1570x) + 57742: 24, // minRows (1570x) + 57757: 25, // nodegroup (1570x) + 57633: 26, // connection (1562x) + 57591: 27, // autoRandomBase (1559x) + 58025: 28, // statsBuckets (1557x) + 58027: 29, // statsTopN (1557x) + 57588: 30, // autoIdCache (1556x) + 57593: 31, // avgRowLength (1556x) + 57631: 32, // compression (1556x) + 57654: 33, // delayKeyWrite (1556x) + 57772: 34, // packKeys (1556x) + 57785: 35, // preSplitRegions (1556x) + 57823: 36, // rowFormat (1556x) + 57828: 37, // secondaryEngine (1556x) + 57839: 38, // shardRowIDBits (1556x) + 57864: 39, // statsAutoRecalc (1556x) + 57586: 40, // statsColChoice (1556x) + 57587: 41, // statsColList (1556x) + 57865: 42, // statsPersistent (1556x) + 57866: 43, // statsSamplePages (1556x) + 57585: 44, // statsSampleRate (1556x) + 57878: 45, // tableChecksum (1556x) + 57573: 46, // account (1503x) + 41: 47, // ')' (1495x) + 57817: 48, // resume (1493x) + 57843: 49, // signed (1493x) + 57849: 50, // snapshot (1492x) + 57594: 51, // backend (1491x) + 57615: 52, // checkpoint (1491x) + 57632: 53, // concurrency (1491x) + 57638: 54, // csvBackslashEscape (1491x) + 57639: 55, // csvDelimiter (1491x) + 57640: 56, // csvHeader (1491x) + 57641: 57, // csvNotNull (1491x) + 57642: 58, // csvNull (1491x) + 57643: 59, // csvSeparator (1491x) + 57644: 60, // csvTrimLastSeparators (1491x) + 57721: 61, // lastBackup (1491x) + 57767: 62, // onDuplicate (1491x) + 57768: 63, // online (1491x) + 57800: 64, // rateLimit (1491x) + 57832: 65, // sendCredentialsToTiKV (1491x) + 57846: 66, // skipSchemaFiles (1491x) + 57869: 67, // strictFormat (1491x) + 57885: 68, // tikvImporter (1491x) + 57893: 69, // truncate (1488x) + 57754: 70, // no (1487x) + 57863: 71, // start (1485x) + 57609: 72, // cache (1482x) + 57755: 73, // nocache (1481x) + 57647: 74, // cycle (1480x) + 57744: 75, // minValue (1480x) + 57705: 76, // increment (1479x) + 57756: 77, // nocycle (1479x) + 57758: 78, // nomaxvalue (1479x) + 57759: 79, // nominvalue (1479x) + 57814: 80, // restart (1477x) + 57579: 81, // algorithm (1476x) + 57888: 82, // tp (1476x) + 57646: 83, // clustered (1475x) + 57710: 84, // invisible (1475x) + 57760: 85, // nonclustered (1475x) + 58037: 86, // regions (1475x) + 57904: 87, // visible (1475x) + 57922: 88, // constraints (1468x) + 57933: 89, // followerConstraints (1468x) + 57934: 90, // followers (1468x) + 57944: 91, // leaderConstraints (1468x) + 57946: 92, // learnerConstraints (1468x) + 57947: 93, // learners (1468x) + 57957: 94, // primaryRegion (1468x) + 57962: 95, // schedule (1468x) + 57994: 96, // voterConstraints (1468x) + 57995: 97, // voters (1468x) + 57624: 98, // columns (1467x) + 57903: 99, // view (1467x) + 57871: 100, // subpartition (1463x) + 57910: 101, // yearType (1463x) + 57582: 102, // ascii (1462x) + 57608: 103, // byteType (1462x) + 57651: 104, // day (1462x) + 57777: 105, // partitions (1462x) + 57897: 106, // unicodeSym (1462x) + 57683: 107, // fields (1461x) + 57827: 108, // second (1461x) + 57862: 109, // sqlTsiYear (1461x) + 57700: 110, // hour (1460x) + 57741: 111, // microsecond (1460x) + 57743: 112, // minute (1460x) + 57747: 113, // month (1460x) + 57796: 114, // quarter (1460x) + 57855: 115, // sqlTsiDay (1460x) + 57856: 116, // sqlTsiHour (1460x) + 57857: 117, // sqlTsiMinute (1460x) + 57858: 118, // sqlTsiMonth (1460x) + 57859: 119, // sqlTsiQuarter (1460x) + 57860: 120, // sqlTsiSecond (1460x) + 57861: 121, // sqlTsiWeek (1460x) + 57879: 122, // tables (1460x) + 57906: 123, // week (1460x) + 57867: 124, // status (1459x) + 57833: 125, // separator (1458x) + 57733: 126, // maxConnectionsPerHour (1457x) + 57734: 127, // maxQueriesPerHour (1457x) + 57736: 128, // maxUpdatesPerHour (1457x) + 57737: 129, // maxUserConnections (1457x) + 57786: 130, // preceding (1457x) + 57617: 131, // cipher (1456x) + 57703: 132, // importKwd (1456x) + 57715: 133, // issuer (1456x) + 57825: 134, // san (1456x) + 57870: 135, // subject (1456x) + 57726: 136, // local (1455x) + 57798: 137, // query (1455x) + 57845: 138, // skip (1455x) + 57601: 139, // bindings (1454x) + 57653: 140, // definer (1454x) + 57695: 141, // hash (1454x) + 57701: 142, // identified (1454x) + 57729: 143, // logs (1454x) + 57813: 144, // respect (1454x) + 57627: 145, // commit (1453x) + 57645: 146, // current (1453x) + 57667: 147, // enforced (1453x) + 57688: 148, // following (1453x) + 57346: 149, // identifier (1453x) + 57762: 150, // nowait (1453x) + 57769: 151, // only (1453x) + 57820: 152, // rollback (1453x) + 57826: 153, // savepoint (1453x) + 57901: 154, // value (1453x) + 57597: 155, // begin (1452x) + 57599: 156, // binding (1452x) + 57666: 157, // end (1452x) + 57693: 158, // global (1452x) + 57937: 159, // next_row_id (1452x) + 57784: 160, // policy (1452x) + 57956: 161, // predicate (1452x) + 57881: 162, // temporary (1452x) + 57894: 163, // unbounded (1452x) + 57899: 164, // user (1452x) + 57716: 165, // jsonType (1451x) + 57766: 166, // offset (1451x) + 57954: 167, // planCache (1451x) + 57787: 168, // prepare (1451x) + 57819: 169, // role (1451x) + 57898: 170, // unknown (1451x) + 57911: 171, // wait (1451x) + 57607: 172, // btree (1450x) + 57649: 173, // datetimeType (1450x) + 57650: 174, // dateType (1450x) + 57686: 175, // fixed (1450x) + 57702: 176, // identSQLErrors (1450x) + 57714: 177, // isolation (1450x) + 57728: 178, // location (1450x) + 57731: 179, // max_idxnum (1450x) + 57739: 180, // memory (1450x) + 57765: 181, // off (1450x) + 57771: 182, // optional (1450x) + 57780: 183, // per_db (1450x) + 57789: 184, // privileges (1450x) + 57812: 185, // required (1450x) + 57824: 186, // rtree (1450x) + 57960: 187, // running (1450x) + 58019: 188, // sampleRate (1450x) + 57834: 189, // sequence (1450x) + 57837: 190, // session (1450x) + 57848: 191, // slow (1450x) + 57887: 192, // timeType (1450x) + 57900: 193, // validation (1450x) + 57902: 194, // variables (1450x) + 57583: 195, // attributes (1449x) + 57629: 196, // compact (1449x) + 57656: 197, // disable (1449x) + 57661: 198, // duplicate (1449x) + 57662: 199, // dynamic (1449x) + 57663: 200, // enable (1449x) + 57671: 201, // errorKwd (1449x) + 57687: 202, // flush (1449x) + 57690: 203, // full (1449x) + 57738: 204, // mb (1449x) + 57745: 205, // mode (1449x) + 57751: 206, // never (1449x) + 57953: 207, // plan (1449x) + 57783: 208, // plugins (1449x) + 57791: 209, // processlist (1449x) + 57802: 210, // recover (1449x) + 57807: 211, // repair (1449x) + 57808: 212, // repeatable (1449x) + 57809: 213, // replica (1449x) + 58021: 214, // statistics (1449x) + 57872: 215, // subpartitions (1449x) + 58031: 216, // tidb (1449x) + 58032: 217, // tiFlash (1449x) + 57886: 218, // timestampType (1449x) + 57908: 219, // without (1449x) + 57996: 220, // admin (1448x) + 57595: 221, // backup (1448x) + 57997: 222, // batch (1448x) + 57602: 223, // binlog (1448x) + 57604: 224, // block (1448x) + 57605: 225, // booleanType (1448x) + 57919: 226, // briefType (1448x) + 57998: 227, // buckets (1448x) + 58001: 228, // cardinality (1448x) + 57613: 229, // chain (1448x) + 57620: 230, // clientErrorsSummary (1448x) + 58002: 231, // cmSketch (1448x) + 57621: 232, // coalesce (1448x) + 57630: 233, // compressed (1448x) + 57636: 234, // context (1448x) + 57921: 235, // copyKwd (1448x) + 58004: 236, // correlation (1448x) + 57637: 237, // cpu (1448x) + 57652: 238, // deallocate (1448x) + 58006: 239, // dependency (1448x) + 57655: 240, // directory (1448x) + 57658: 241, // discard (1448x) + 57659: 242, // disk (1448x) + 57660: 243, // do (1448x) + 57926: 244, // dotType (1448x) + 58008: 245, // drainer (1448x) + 58009: 246, // dry (1448x) + 57676: 247, // exchange (1448x) + 57678: 248, // execute (1448x) + 57679: 249, // expansion (1448x) + 57931: 250, // flashback (1448x) + 57689: 251, // format (1448x) + 57692: 252, // general (1448x) + 57696: 253, // help (1448x) + 57697: 254, // histogram (1448x) + 57699: 255, // hosts (1448x) + 57938: 256, // inplace (1448x) + 57709: 257, // instance (1448x) + 57939: 258, // instant (1448x) + 57713: 259, // ipc (1448x) + 58011: 260, // job (1448x) + 58010: 261, // jobs (1448x) + 57718: 262, // labels (1448x) + 57727: 263, // locked (1448x) + 57746: 264, // modify (1448x) + 57752: 265, // next (1448x) + 58012: 266, // nodeID (1448x) + 58013: 267, // nodeState (1448x) + 57764: 268, // nulls (1448x) + 57773: 269, // pageSym (1448x) + 58016: 270, // pump (1448x) + 57795: 271, // purge (1448x) + 57801: 272, // rebuild (1448x) + 57803: 273, // redundant (1448x) + 57804: 274, // reload (1448x) + 57815: 275, // restore (1448x) + 57821: 276, // routine (1448x) + 57961: 277, // s3 (1448x) + 58018: 278, // samples (1448x) + 57829: 279, // secondaryLoad (1448x) + 57830: 280, // secondaryUnload (1448x) + 57840: 281, // share (1448x) + 57842: 282, // shutdown (1448x) + 57851: 283, // source (1448x) + 58034: 284, // split (1448x) + 58022: 285, // stats (1448x) + 57584: 286, // statsOptions (1448x) + 57968: 287, // stop (1448x) + 57874: 288, // swaps (1448x) + 57978: 289, // tokudbDefault (1448x) + 57979: 290, // tokudbFast (1448x) + 57980: 291, // tokudbLzma (1448x) + 57981: 292, // tokudbQuickLZ (1448x) + 57983: 293, // tokudbSmall (1448x) + 57982: 294, // tokudbSnappy (1448x) + 57984: 295, // tokudbUncompressed (1448x) + 57985: 296, // tokudbZlib (1448x) + 58033: 297, // topn (1448x) + 57889: 298, // trace (1448x) + 57890: 299, // traditional (1448x) + 57992: 300, // trueCardCost (1448x) + 57991: 301, // verboseType (1448x) + 57905: 302, // warnings (1448x) + 57574: 303, // action (1447x) + 57575: 304, // advise (1447x) + 57577: 305, // against (1447x) + 57578: 306, // ago (1447x) + 57580: 307, // always (1447x) + 57596: 308, // backups (1447x) + 57598: 309, // bernoulli (1447x) + 57600: 310, // bindingCache (1447x) + 57603: 311, // bitType (1447x) + 57606: 312, // boolType (1447x) + 57999: 313, // builtins (1447x) + 58000: 314, // cancel (1447x) + 57610: 315, // capture (1447x) + 57611: 316, // cascaded (1447x) + 57612: 317, // causal (1447x) + 57618: 318, // cleanup (1447x) + 57619: 319, // client (1447x) + 57622: 320, // collation (1447x) + 58003: 321, // columnStatsUsage (1447x) + 57628: 322, // committed (1447x) + 57625: 323, // config (1447x) + 57634: 324, // consistency (1447x) + 57635: 325, // consistent (1447x) + 58005: 326, // ddl (1447x) + 58007: 327, // depth (1447x) + 57657: 328, // disabled (1447x) + 57927: 329, // dump (1447x) + 57664: 330, // enabled (1447x) + 57669: 331, // engines (1447x) + 57670: 332, // enum (1447x) + 57674: 333, // events (1447x) + 57675: 334, // evolve (1447x) + 57680: 335, // expire (1447x) + 57929: 336, // exprPushdownBlacklist (1447x) + 57681: 337, // extended (1447x) + 57682: 338, // faultsSym (1447x) + 57691: 339, // function (1447x) + 57694: 340, // grants (1447x) + 58028: 341, // histogramsInFlight (1447x) + 57698: 342, // history (1447x) + 57704: 343, // imports (1447x) + 57706: 344, // incremental (1447x) + 57707: 345, // indexes (1447x) + 57940: 346, // internal (1447x) + 57711: 347, // invoker (1447x) + 57712: 348, // io (1447x) + 57719: 349, // language (1447x) + 57720: 350, // last (1447x) + 57723: 351, // less (1447x) + 57724: 352, // level (1447x) + 57725: 353, // list (1447x) + 57730: 354, // master (1447x) + 57732: 355, // max_minutes (1447x) + 57740: 356, // merge (1447x) + 57749: 357, // national (1447x) + 57750: 358, // ncharType (1447x) + 57753: 359, // nextval (1447x) + 57761: 360, // none (1447x) + 57763: 361, // nvarcharType (1447x) + 57770: 362, // open (1447x) + 58014: 363, // optimistic (1447x) + 57951: 364, // optRuleBlacklist (1447x) + 57774: 365, // parser (1447x) + 57775: 366, // partial (1447x) + 57776: 367, // partitioning (1447x) + 57781: 368, // per_table (1447x) + 57779: 369, // percent (1447x) + 58015: 370, // pessimistic (1447x) + 57788: 371, // preserve (1447x) + 57792: 372, // profile (1447x) + 57793: 373, // profiles (1447x) + 57797: 374, // queries (1447x) + 57958: 375, // recent (1447x) + 58038: 376, // region (1447x) + 57959: 377, // replayer (1447x) + 58036: 378, // reset (1447x) + 57816: 379, // restores (1447x) + 58017: 380, // run (1447x) + 57831: 381, // security (1447x) + 57836: 382, // serializable (1447x) + 58020: 383, // sessionStates (1447x) + 57844: 384, // simple (1447x) + 57847: 385, // slave (1447x) + 58026: 386, // statsHealthy (1447x) + 58024: 387, // statsHistograms (1447x) + 58023: 388, // statsMeta (1447x) + 57969: 389, // strict (1447x) + 57875: 390, // switchesSym (1447x) + 57876: 391, // system (1447x) + 57877: 392, // systemTime (1447x) + 57974: 393, // target (1447x) + 58030: 394, // telemetryID (1447x) + 57882: 395, // temptable (1447x) + 57883: 396, // textType (1447x) + 57884: 397, // than (1447x) + 57977: 398, // tls (1447x) + 57986: 399, // top (1447x) + 57891: 400, // transaction (1447x) + 57892: 401, // triggers (1447x) + 57895: 402, // uncommitted (1447x) + 57896: 403, // undefined (1447x) + 58035: 404, // width (1447x) + 57909: 405, // x509 (1447x) + 57912: 406, // addDate (1446x) + 57581: 407, // any (1446x) + 57913: 408, // approxCountDistinct (1446x) + 57914: 409, // approxPercentile (1446x) + 57592: 410, // avg (1446x) + 57915: 411, // bitAnd (1446x) + 57916: 412, // bitOr (1446x) + 57917: 413, // bitXor (1446x) + 57918: 414, // bound (1446x) + 57920: 415, // cast (1446x) + 57923: 416, // curTime (1446x) + 57924: 417, // dateAdd (1446x) + 57925: 418, // dateSub (1446x) + 57672: 419, // escape (1446x) + 57673: 420, // event (1446x) + 57928: 421, // exact (1446x) + 57677: 422, // exclusive (1446x) + 57930: 423, // extract (1446x) + 57684: 424, // file (1446x) + 57932: 425, // follower (1446x) + 57935: 426, // getFormat (1446x) + 57936: 427, // groupConcat (1446x) + 57941: 428, // jsonArrayagg (1446x) + 57942: 429, // jsonObjectAgg (1446x) + 57722: 430, // lastval (1446x) + 57943: 431, // leader (1446x) + 57945: 432, // learner (1446x) + 57949: 433, // max (1446x) + 57948: 434, // min (1446x) + 57748: 435, // names (1446x) + 57950: 436, // now (1446x) + 57955: 437, // position (1446x) + 57790: 438, // process (1446x) + 57794: 439, // proxy (1446x) + 57799: 440, // quick (1446x) + 57810: 441, // replicas (1446x) + 57811: 442, // replication (1446x) + 57818: 443, // reverse (1446x) + 57822: 444, // rowCount (1446x) + 57838: 445, // setval (1446x) + 57841: 446, // shared (1446x) + 57850: 447, // some (1446x) + 57852: 448, // sqlBufferResult (1446x) + 57853: 449, // sqlCache (1446x) + 57854: 450, // sqlNoCache (1446x) + 57963: 451, // staleness (1446x) + 57964: 452, // std (1446x) + 57965: 453, // stddev (1446x) + 57966: 454, // stddevPop (1446x) + 57967: 455, // stddevSamp (1446x) + 57970: 456, // strong (1446x) + 57971: 457, // subDate (1446x) + 57973: 458, // substring (1446x) + 57972: 459, // sum (1446x) + 57873: 460, // super (1446x) + 58029: 461, // telemetry (1446x) + 57975: 462, // timestampAdd (1446x) + 57976: 463, // timestampDiff (1446x) + 57987: 464, // trim (1446x) + 57988: 465, // variance (1446x) + 57989: 466, // varPop (1446x) + 57990: 467, // varSamp (1446x) + 57993: 468, // voter (1446x) + 57907: 469, // weightString (1446x) + 57488: 470, // on (1380x) + 40: 471, // '(' (1297x) + 57568: 472, // with (1198x) + 57349: 473, // stringLit (1182x) + 58084: 474, // not2 (1180x) + 57481: 475, // not (1124x) + 57364: 476, // as (1091x) + 57398: 477, // defaultKwd (1088x) + 57547: 478, // union (1054x) + 57553: 479, // using (1048x) + 57379: 480, // collate (1037x) + 57461: 481, // left (1036x) + 57515: 482, // right (1036x) + 43: 483, // '+' (1006x) + 45: 484, // '-' (1005x) + 57480: 485, // mod (985x) + 57415: 486, // except (947x) + 57441: 487, // intersect (946x) + 57435: 488, // ignore (944x) + 57496: 489, // partition (943x) + 57485: 490, // null (933x) + 57463: 491, // limit (926x) + 57420: 492, // forKwd (924x) + 57443: 493, // into (917x) + 57469: 494, // lock (913x) + 57565: 495, // where (907x) + 58073: 496, // eq (905x) + 57423: 497, // from (905x) + 57417: 498, // fetch (903x) + 57557: 499, // values (903x) + 57493: 500, // order (899x) + 57421: 501, // force (894x) + 57522: 502, // set (886x) + 57363: 503, // and (884x) + 57377: 504, // charType (884x) + 57511: 505, // replace (876x) + 58068: 506, // intLit (870x) + 57492: 507, // or (861x) + 57354: 508, // andand (860x) + 57782: 509, // pipesAsOr (860x) + 57569: 510, // xor (860x) + 57427: 511, // group (834x) + 57429: 512, // having (834x) + 57533: 513, // straightJoin (828x) + 57567: 514, // window (820x) + 57453: 515, // join (816x) + 57462: 516, // like (808x) + 57572: 517, // natural (806x) + 57384: 518, // cross (805x) + 57439: 519, // inner (805x) + 125: 520, // '}' (802x) + 42: 521, // '*' (798x) + 57518: 522, // rows (790x) + 57552: 523, // use (786x) + 57535: 524, // tableSample (780x) + 57501: 525, // rangeKwd (779x) + 57428: 526, // groups (778x) + 57402: 527, // desc (777x) + 57365: 528, // asc (775x) + 57393: 529, // dayHour (774x) + 57394: 530, // dayMicrosecond (774x) + 57395: 531, // dayMinute (774x) + 57396: 532, // daySecond (774x) + 57431: 533, // hourMicrosecond (774x) + 57432: 534, // hourMinute (774x) + 57433: 535, // hourSecond (774x) + 57478: 536, // minuteMicrosecond (774x) + 57479: 537, // minuteSecond (774x) + 57520: 538, // secondMicrosecond (774x) + 57570: 539, // yearMonth (774x) + 57564: 540, // when (772x) + 57368: 541, // binaryType (770x) + 57436: 542, // in (770x) + 57410: 543, // elseKwd (769x) + 57538: 544, // then (766x) + 60: 545, // '<' (759x) + 62: 546, // '>' (759x) + 58074: 547, // ge (759x) + 57445: 548, // is (759x) + 58075: 549, // le (759x) + 58079: 550, // neq (759x) + 58080: 551, // neqSynonym (759x) + 58081: 552, // nulleq (759x) + 57366: 553, // between (757x) + 47: 554, // '/' (756x) + 37: 555, // '%' (755x) + 38: 556, // '&' (755x) + 94: 557, // '^' (755x) + 124: 558, // '|' (755x) + 57406: 559, // div (755x) + 58078: 560, // lsh (755x) + 58083: 561, // rsh (755x) + 57507: 562, // regexpKwd (749x) + 57516: 563, // rlike (749x) + 57434: 564, // ifKwd (745x) + 57446: 565, // insert (732x) + 57350: 566, // singleAtIdentifier (727x) + 57534: 567, // tableKwd (724x) + 57389: 568, // currentUser (723x) + 57416: 569, // falseKwd (721x) + 57545: 570, // trueKwd (721x) + 57454: 571, // key (716x) + 58067: 572, // decLit (715x) + 58066: 573, // floatLit (715x) + 57517: 574, // row (715x) + 58069: 575, // hexLit (713x) + 58082: 576, // paramMarker (713x) + 123: 577, // '{' (711x) + 58070: 578, // bitLit (711x) + 57442: 579, // interval (710x) + 57378: 580, // check (706x) + 57391: 581, // database (706x) + 57413: 582, // exists (706x) + 57355: 583, // pipes (706x) + 57499: 584, // primary (706x) + 57382: 585, // convert (703x) + 58054: 586, // builtinNow (702x) + 57388: 587, // currentTs (702x) + 57351: 588, // doubleAtIdentifier (702x) + 57467: 589, // localTime (702x) + 57468: 590, // localTs (702x) + 57348: 591, // underscoreCS (701x) + 58043: 592, // builtinCount (700x) + 33: 593, // '!' (699x) + 126: 594, // '~' (699x) + 58044: 595, // builtinApproxCountDistinct (699x) + 58045: 596, // builtinApproxPercentile (699x) + 58039: 597, // builtinBitAnd (699x) + 58040: 598, // builtinBitOr (699x) + 58041: 599, // builtinBitXor (699x) + 58042: 600, // builtinCast (699x) + 58046: 601, // builtinCurDate (699x) + 58047: 602, // builtinCurTime (699x) + 58048: 603, // builtinDateAdd (699x) + 58049: 604, // builtinDateSub (699x) + 58050: 605, // builtinExtract (699x) + 58051: 606, // builtinGroupConcat (699x) + 58052: 607, // builtinMax (699x) + 58053: 608, // builtinMin (699x) + 58055: 609, // builtinPosition (699x) + 58059: 610, // builtinStddevPop (699x) + 58060: 611, // builtinStddevSamp (699x) + 58056: 612, // builtinSubstring (699x) + 58057: 613, // builtinSum (699x) + 58058: 614, // builtinSysDate (699x) + 58061: 615, // builtinTranslate (699x) + 58062: 616, // builtinTrim (699x) + 58063: 617, // builtinUser (699x) + 58064: 618, // builtinVarPop (699x) + 58065: 619, // builtinVarSamp (699x) + 57374: 620, // caseKwd (699x) + 57385: 621, // cumeDist (699x) + 57386: 622, // currentDate (699x) + 57390: 623, // currentRole (699x) + 57387: 624, // currentTime (699x) + 57401: 625, // denseRank (699x) + 57418: 626, // firstValue (699x) + 57457: 627, // lag (699x) + 57458: 628, // lastValue (699x) + 57459: 629, // lead (699x) + 57483: 630, // nthValue (699x) + 57484: 631, // ntile (699x) + 57497: 632, // percentRank (699x) + 57502: 633, // rank (699x) + 57510: 634, // repeat (699x) + 57519: 635, // rowNumber (699x) + 57546: 636, // unique (699x) + 57554: 637, // utcDate (699x) + 57556: 638, // utcTime (699x) + 57555: 639, // utcTimestamp (699x) + 57381: 640, // constraint (697x) + 57506: 641, // references (694x) + 57425: 642, // generated (690x) + 57521: 643, // selectKwd (681x) + 57376: 644, // character (655x) + 57473: 645, // match (648x) + 57437: 646, // index (643x) + 57542: 647, // to (566x) + 57360: 648, // all (552x) + 46: 649, // '.' (547x) + 57362: 650, // analyze (527x) + 57550: 651, // update (521x) + 58076: 652, // jss (513x) + 58077: 653, // juss (513x) + 57474: 654, // maxValue (509x) + 57464: 655, // lines (502x) + 58072: 656, // assignmentEq (499x) + 57371: 657, // by (499x) + 57361: 658, // alter (496x) + 57512: 659, // require (494x) + 58332: 660, // Identifier (491x) + 58408: 661, // NotKeywordToken (491x) + 58634: 662, // TiDBKeyword (491x) + 58644: 663, // UnReservedKeyword (491x) + 64: 664, // '@' (489x) + 57526: 665, // sql (486x) + 57408: 666, // drop (483x) + 57373: 667, // cascade (482x) + 57503: 668, // read (482x) + 57513: 669, // restrict (482x) + 57347: 670, // asof (480x) + 57383: 671, // create (478x) + 57422: 672, // foreign (478x) + 57424: 673, // fulltext (478x) + 57560: 674, // varcharacter (476x) + 57559: 675, // varcharType (476x) + 57375: 676, // change (475x) + 57397: 677, // decimalType (475x) + 57407: 678, // doubleType (475x) + 57419: 679, // floatType (475x) + 57440: 680, // integerType (475x) + 57447: 681, // intType (475x) + 57504: 682, // realType (475x) + 57509: 683, // rename (475x) + 57566: 684, // write (475x) + 57561: 685, // varbinaryType (474x) + 57359: 686, // add (473x) + 57367: 687, // bigIntType (473x) + 57369: 688, // blobType (473x) + 57448: 689, // int1Type (473x) + 57449: 690, // int2Type (473x) + 57450: 691, // int3Type (473x) + 57451: 692, // int4Type (473x) + 57452: 693, // int8Type (473x) + 57558: 694, // long (473x) + 57470: 695, // longblobType (473x) + 57471: 696, // longtextType (473x) + 57475: 697, // mediumblobType (473x) + 57476: 698, // mediumIntType (473x) + 57477: 699, // mediumtextType (473x) + 57486: 700, // numericType (473x) + 57489: 701, // optimize (473x) + 57524: 702, // smallIntType (473x) + 57539: 703, // tinyblobType (473x) + 57540: 704, // tinyIntType (473x) + 57541: 705, // tinytextType (473x) + 58599: 706, // SubSelect (216x) + 58653: 707, // UserVariable (174x) + 58574: 708, // SimpleIdent (173x) + 58384: 709, // Literal (171x) + 58589: 710, // StringLiteral (171x) + 58405: 711, // NextValueForSequence (170x) + 58309: 712, // FunctionCallGeneric (169x) + 58310: 713, // FunctionCallKeyword (169x) + 58311: 714, // FunctionCallNonKeyword (169x) + 58312: 715, // FunctionNameConflict (169x) + 58313: 716, // FunctionNameDateArith (169x) + 58314: 717, // FunctionNameDateArithMultiForms (169x) + 58315: 718, // FunctionNameDatetimePrecision (169x) + 58316: 719, // FunctionNameOptionalBraces (169x) + 58317: 720, // FunctionNameSequence (169x) + 58573: 721, // SimpleExpr (169x) + 58600: 722, // SumExpr (169x) + 58602: 723, // SystemVariable (169x) + 58664: 724, // Variable (169x) + 58687: 725, // WindowFuncCall (169x) + 58159: 726, // BitExpr (156x) + 58480: 727, // PredicateExpr (132x) + 58162: 728, // BoolPri (129x) + 58276: 729, // Expression (129x) + 58403: 730, // NUM (98x) + 58702: 731, // logAnd (97x) + 58703: 732, // logOr (97x) + 58266: 733, // EqOpt (75x) + 58612: 734, // TableName (75x) + 58590: 735, // StringName (56x) + 57400: 736, // deleteKwd (52x) + 57549: 737, // unsigned (47x) + 57495: 738, // over (45x) + 57571: 739, // zerofill (45x) + 58185: 740, // ColumnName (41x) + 58375: 741, // LengthNum (41x) + 57404: 742, // distinct (36x) + 57405: 743, // distinctRow (36x) + 58692: 744, // WindowingClause (35x) + 58528: 745, // SelectStmt (34x) + 58529: 746, // SelectStmtBasic (34x) + 58531: 747, // SelectStmtFromDualTable (34x) + 58532: 748, // SelectStmtFromTable (34x) + 58549: 749, // SetOprClause (34x) + 57399: 750, // delayed (33x) + 57430: 751, // highPriority (33x) + 57472: 752, // lowPriority (33x) + 58550: 753, // SetOprClauseList (33x) + 58553: 754, // SetOprStmtWithLimitOrderBy (33x) + 58554: 755, // SetOprStmtWoutLimitOrderBy (33x) + 58693: 756, // WithClause (31x) + 58541: 757, // SelectStmtWithClause (30x) + 58552: 758, // SetOprStmt (30x) + 57353: 759, // hintComment (27x) + 58287: 760, // FieldLen (26x) + 58364: 761, // Int64Num (26x) + 58446: 762, // OptWindowingClause (24x) + 58241: 763, // DeleteWithoutUsingStmt (23x) + 58452: 764, // OrderBy (23x) + 58535: 765, // SelectStmtLimit (23x) + 57527: 766, // sqlBigResult (23x) + 57528: 767, // sqlCalcFoundRows (23x) + 57529: 768, // sqlSmallResult (23x) + 58647: 769, // UpdateStmtNoWith (22x) + 58173: 770, // CharsetKw (20x) + 58361: 771, // InsertIntoStmt (20x) + 58502: 772, // ReplaceIntoStmt (20x) + 58646: 773, // UpdateStmt (20x) + 58655: 774, // Username (20x) + 58277: 775, // ExpressionList (18x) + 58240: 776, // DeleteWithUsingStmt (17x) + 58475: 777, // PlacementPolicyOption (17x) + 58333: 778, // IfExists (16x) + 57537: 779, // terminated (16x) + 58239: 780, // DeleteFromStmt (15x) + 58243: 781, // DistinctKwd (15x) + 58334: 782, // IfNotExists (15x) + 58431: 783, // OptFieldLen (15x) + 58244: 784, // DistinctOpt (14x) + 57411: 785, // enclosed (14x) + 58463: 786, // PartitionNameList (14x) + 58677: 787, // WhereClause (14x) + 58678: 788, // WhereClauseOptional (14x) + 58236: 789, // DefaultKwdOpt (13x) + 57412: 790, // escaped (13x) + 57491: 791, // optionally (13x) + 58613: 792, // TableNameList (13x) + 58275: 793, // ExprOrDefault (12x) + 58369: 794, // JoinTable (12x) + 58425: 795, // OptBinary (12x) + 57508: 796, // release (12x) + 58518: 797, // RolenameComposed (12x) + 58609: 798, // TableFactor (12x) + 58622: 799, // TableRef (12x) + 58636: 800, // TimestampUnit (12x) + 58133: 801, // AnalyzeOptionListOpt (11x) + 58304: 802, // FromOrIn (11x) + 58129: 803, // AlterTableStmt (10x) + 58174: 804, // CharsetName (10x) + 58186: 805, // ColumnNameList (10x) + 57466: 806, // load (10x) + 58409: 807, // NotSym (10x) + 58453: 808, // OrderByOptional (10x) + 58455: 809, // PartDefOption (10x) + 58572: 810, // SignedNum (10x) + 58165: 811, // BuggyDefaultFalseDistinctOpt (9x) + 58226: 812, // DBName (9x) + 58235: 813, // DefaultFalseDistinctOpt (9x) + 58370: 814, // JoinType (9x) + 57482: 815, // noWriteToBinLog (9x) + 58415: 816, // NumLiteral (9x) + 58517: 817, // Rolename (9x) + 58512: 818, // RoleNameString (9x) + 58635: 819, // TimeUnit (9x) + 58225: 820, // CrossOpt (8x) + 58267: 821, // EqOrAssignmentEq (8x) + 58274: 822, // ExplainableStmt (8x) + 58278: 823, // ExpressionListOpt (8x) + 58355: 824, // IndexPartSpecification (8x) + 58371: 825, // KeyOrIndex (8x) + 58536: 826, // SelectStmtLimitOpt (8x) + 58667: 827, // VariableName (8x) + 58115: 828, // AllOrPartitionNameList (7x) + 58209: 829, // ConstraintKeywordOpt (7x) + 58293: 830, // FieldsOrColumns (7x) + 58302: 831, // ForceOpt (7x) + 58356: 832, // IndexPartSpecificationList (7x) + 58406: 833, // NoWriteToBinLogAliasOpt (7x) + 58484: 834, // Priority (7x) + 58522: 835, // RowFormat (7x) + 58525: 836, // RowValue (7x) + 58547: 837, // SetExpr (7x) + 58558: 838, // ShowDatabaseNameOpt (7x) + 58619: 839, // TableOption (7x) + 57562: 840, // varying (7x) + 58154: 841, // BeginTransactionStmt (6x) + 58156: 842, // BindableStmt (6x) + 57380: 843, // column (6x) + 58180: 844, // ColumnDef (6x) + 58199: 845, // CommitStmt (6x) + 58228: 846, // DatabaseOption (6x) + 58231: 847, // DatabaseSym (6x) + 58269: 848, // EscapedTableRef (6x) + 58291: 849, // FieldTerminator (6x) + 57426: 850, // grant (6x) + 58338: 851, // IgnoreOptional (6x) + 58347: 852, // IndexInvisible (6x) + 58352: 853, // IndexNameList (6x) + 58358: 854, // IndexType (6x) + 58388: 855, // LoadDataStmt (6x) + 58464: 856, // PartitionNameListOpt (6x) + 58497: 857, // ReleaseSavepointStmt (6x) + 58519: 858, // RolenameList (6x) + 58521: 859, // RollbackStmt (6x) + 58526: 860, // SavepointStmt (6x) + 58557: 861, // SetStmt (6x) + 57523: 862, // show (6x) + 58617: 863, // TableOptimizerHints (6x) + 58656: 864, // UsernameList (6x) + 58694: 865, // WithClustered (6x) + 58113: 866, // AlgorithmClause (5x) + 58167: 867, // ByItem (5x) + 58179: 868, // CollationName (5x) + 58183: 869, // ColumnKeywordOpt (5x) + 58242: 870, // DirectPlacementOption (5x) + 58289: 871, // FieldOpt (5x) + 58290: 872, // FieldOpts (5x) + 58330: 873, // IdentList (5x) + 58350: 874, // IndexName (5x) + 58353: 875, // IndexOption (5x) + 58354: 876, // IndexOptionList (5x) + 57438: 877, // infile (5x) + 58380: 878, // LimitOption (5x) + 58392: 879, // LockClause (5x) + 58427: 880, // OptCharsetWithOptBinary (5x) + 58438: 881, // OptNullTreatment (5x) + 58478: 882, // PolicyName (5x) + 58485: 883, // PriorityOpt (5x) + 58527: 884, // SelectLockOpt (5x) + 58534: 885, // SelectStmtIntoOption (5x) + 58623: 886, // TableRefs (5x) + 58649: 887, // UserSpec (5x) + 58139: 888, // Assignment (4x) + 58145: 889, // AuthString (4x) + 58146: 890, // BRIEBooleanOptionName (4x) + 58147: 891, // BRIEIntegerOptionName (4x) + 58148: 892, // BRIEKeywordOptionName (4x) + 58149: 893, // BRIEOption (4x) + 58150: 894, // BRIEOptions (4x) + 58152: 895, // BRIEStringOptionName (4x) + 58168: 896, // ByList (4x) + 58172: 897, // Char (4x) + 58203: 898, // ConfigItemName (4x) + 58207: 899, // Constraint (4x) + 58298: 900, // FloatOpt (4x) + 58359: 901, // IndexTypeName (4x) + 57490: 902, // option (4x) + 58443: 903, // OptWild (4x) + 57494: 904, // outer (4x) + 58479: 905, // Precision (4x) + 58493: 906, // ReferDef (4x) + 58508: 907, // RestrictOrCascadeOpt (4x) + 58524: 908, // RowStmt (4x) + 58542: 909, // SequenceOption (4x) + 57532: 910, // statsExtended (4x) + 58604: 911, // TableAsName (4x) + 58605: 912, // TableAsNameOpt (4x) + 58616: 913, // TableNameOptWild (4x) + 58618: 914, // TableOptimizerHintsOpt (4x) + 58620: 915, // TableOptionList (4x) + 58638: 916, // TraceableStmt (4x) + 58639: 917, // TransactionChar (4x) + 58650: 918, // UserSpecList (4x) + 58688: 919, // WindowName (4x) + 58136: 920, // AsOfClause (3x) + 58140: 921, // AssignmentList (3x) + 58142: 922, // AttributesOpt (3x) + 58163: 923, // Boolean (3x) + 58192: 924, // ColumnOption (3x) + 58195: 925, // ColumnPosition (3x) + 58200: 926, // CommonTableExpr (3x) + 58221: 927, // CreateTableStmt (3x) + 58229: 928, // DatabaseOptionList (3x) + 58237: 929, // DefaultTrueDistinctOpt (3x) + 58263: 930, // EnforcedOrNot (3x) + 57414: 931, // explain (3x) + 58280: 932, // ExtendedPriv (3x) + 58318: 933, // GeneratedAlways (3x) + 58320: 934, // GlobalScope (3x) + 58324: 935, // GroupByClause (3x) + 58342: 936, // IndexHint (3x) + 58346: 937, // IndexHintType (3x) + 58351: 938, // IndexNameAndTypeOpt (3x) + 57455: 939, // keys (3x) + 58382: 940, // Lines (3x) + 58400: 941, // MaxValueOrExpression (3x) + 58410: 942, // NowSym (3x) + 58411: 943, // NowSymFunc (3x) + 58412: 944, // NowSymOptionFraction (3x) + 58439: 945, // OptOrder (3x) + 58442: 946, // OptTemporary (3x) + 58456: 947, // PartDefOptionList (3x) + 58458: 948, // PartitionDefinition (3x) + 58467: 949, // PasswordExpire (3x) + 58469: 950, // PasswordOrLockOption (3x) + 58477: 951, // PluginNameList (3x) + 58483: 952, // PrimaryOpt (3x) + 58486: 953, // PrivElem (3x) + 58488: 954, // PrivType (3x) + 57500: 955, // procedure (3x) + 58503: 956, // RequireClause (3x) + 58504: 957, // RequireClauseOpt (3x) + 58506: 958, // RequireListElement (3x) + 58520: 959, // RolenameWithoutIdent (3x) + 58513: 960, // RoleOrPrivElem (3x) + 58533: 961, // SelectStmtGroup (3x) + 58551: 962, // SetOprOpt (3x) + 58603: 963, // TableAliasRefList (3x) + 58606: 964, // TableElement (3x) + 58615: 965, // TableNameListOpt2 (3x) + 58631: 966, // TextString (3x) + 58640: 967, // TransactionChars (3x) + 57544: 968, // trigger (3x) + 57548: 969, // unlock (3x) + 57551: 970, // usage (3x) + 58660: 971, // ValuesList (3x) + 58662: 972, // ValuesStmtList (3x) + 58658: 973, // ValueSym (3x) + 58665: 974, // VariableAssignment (3x) + 58685: 975, // WindowFrameStart (3x) + 58112: 976, // AdminStmt (2x) + 58114: 977, // AllColumnsOrPredicateColumnsOpt (2x) + 58116: 978, // AlterDatabaseStmt (2x) + 58117: 979, // AlterImportStmt (2x) + 58118: 980, // AlterInstanceStmt (2x) + 58119: 981, // AlterOrderItem (2x) + 58121: 982, // AlterPolicyStmt (2x) + 58122: 983, // AlterSequenceOption (2x) + 58124: 984, // AlterSequenceStmt (2x) + 58126: 985, // AlterTableSpec (2x) + 58130: 986, // AlterUserStmt (2x) + 58131: 987, // AnalyzeOption (2x) + 58134: 988, // AnalyzeTableStmt (2x) + 58158: 989, // BinlogStmt (2x) + 58151: 990, // BRIEStmt (2x) + 58153: 991, // BRIETables (2x) + 58166: 992, // BuiltinFunction (2x) + 57372: 993, // call (2x) + 58169: 994, // CallStmt (2x) + 58170: 995, // CastType (2x) + 58171: 996, // ChangeStmt (2x) + 58177: 997, // CheckConstraintKeyword (2x) + 58187: 998, // ColumnNameListOpt (2x) + 58190: 999, // ColumnNameOrUserVariable (2x) + 58193: 1000, // ColumnOptionList (2x) + 58194: 1001, // ColumnOptionListOpt (2x) + 58196: 1002, // ColumnSetValue (2x) + 58202: 1003, // CompletionTypeWithinTransaction (2x) + 58204: 1004, // ConnectionOption (2x) + 58206: 1005, // ConnectionOptions (2x) + 58210: 1006, // CreateBindingStmt (2x) + 58211: 1007, // CreateDatabaseStmt (2x) + 58212: 1008, // CreateImportStmt (2x) + 58213: 1009, // CreateIndexStmt (2x) + 58214: 1010, // CreatePolicyStmt (2x) + 58215: 1011, // CreateRoleStmt (2x) + 58217: 1012, // CreateSequenceStmt (2x) + 58218: 1013, // CreateStatisticsStmt (2x) + 58219: 1014, // CreateTableOptionListOpt (2x) + 58222: 1015, // CreateUserStmt (2x) + 58224: 1016, // CreateViewStmt (2x) + 57392: 1017, // databases (2x) + 58233: 1018, // DeallocateStmt (2x) + 58234: 1019, // DeallocateSym (2x) + 57403: 1020, // describe (2x) + 58245: 1021, // DoStmt (2x) + 58246: 1022, // DropBindingStmt (2x) + 58247: 1023, // DropDatabaseStmt (2x) + 58248: 1024, // DropImportStmt (2x) + 58249: 1025, // DropIndexStmt (2x) + 58250: 1026, // DropPolicyStmt (2x) + 58251: 1027, // DropRoleStmt (2x) + 58252: 1028, // DropSequenceStmt (2x) + 58253: 1029, // DropStatisticsStmt (2x) + 58254: 1030, // DropStatsStmt (2x) + 58255: 1031, // DropTableStmt (2x) + 58256: 1032, // DropUserStmt (2x) + 58257: 1033, // DropViewStmt (2x) + 58259: 1034, // DuplicateOpt (2x) + 58261: 1035, // EmptyStmt (2x) + 58262: 1036, // EncryptionOpt (2x) + 58264: 1037, // EnforcedOrNotOpt (2x) + 58268: 1038, // ErrorHandling (2x) + 58270: 1039, // ExecuteStmt (2x) + 58271: 1040, // ExplainFormatType (2x) + 58272: 1041, // ExplainStmt (2x) + 58273: 1042, // ExplainSym (2x) + 58282: 1043, // Field (2x) + 58285: 1044, // FieldItem (2x) + 58292: 1045, // Fields (2x) + 58296: 1046, // FlashbackTableStmt (2x) + 58301: 1047, // FlushStmt (2x) + 58307: 1048, // FuncDatetimePrecList (2x) + 58308: 1049, // FuncDatetimePrecListOpt (2x) + 58321: 1050, // GrantProxyStmt (2x) + 58322: 1051, // GrantRoleStmt (2x) + 58323: 1052, // GrantStmt (2x) + 58325: 1053, // HandleRange (2x) + 58327: 1054, // HashString (2x) + 58328: 1055, // HavingClause (2x) + 58329: 1056, // HelpStmt (2x) + 58341: 1057, // IndexAdviseStmt (2x) + 58343: 1058, // IndexHintList (2x) + 58344: 1059, // IndexHintListOpt (2x) + 58349: 1060, // IndexLockAndAlgorithmOpt (2x) + 58362: 1061, // InsertValues (2x) + 58366: 1062, // IntoOpt (2x) + 58372: 1063, // KeyOrIndexOpt (2x) + 57456: 1064, // kill (2x) + 58373: 1065, // KillOrKillTiDB (2x) + 58374: 1066, // KillStmt (2x) + 58379: 1067, // LimitClause (2x) + 57465: 1068, // linear (2x) + 58381: 1069, // LinearOpt (2x) + 58385: 1070, // LoadDataSetItem (2x) + 58389: 1071, // LoadStatsStmt (2x) + 58390: 1072, // LocalOpt (2x) + 58391: 1073, // LocationLabelList (2x) + 58393: 1074, // LockTablesStmt (2x) + 58401: 1075, // MaxValueOrExpressionList (2x) + 58407: 1076, // NonTransactionalDeleteStmt (2x) + 58413: 1077, // NowSymOptionFractionParentheses (2x) + 58414: 1078, // NumList (2x) + 58417: 1079, // ObjectType (2x) + 57487: 1080, // of (2x) + 58418: 1081, // OfTablesOpt (2x) + 58419: 1082, // OnCommitOpt (2x) + 58420: 1083, // OnDelete (2x) + 58423: 1084, // OnUpdate (2x) + 58428: 1085, // OptCollate (2x) + 58433: 1086, // OptFull (2x) + 58435: 1087, // OptInteger (2x) + 58448: 1088, // OptionalBraces (2x) + 58447: 1089, // OptionLevel (2x) + 58437: 1090, // OptLeadLagInfo (2x) + 58436: 1091, // OptLLDefault (2x) + 58454: 1092, // OuterOpt (2x) + 58459: 1093, // PartitionDefinitionList (2x) + 58460: 1094, // PartitionDefinitionListOpt (2x) + 58466: 1095, // PartitionOpt (2x) + 58468: 1096, // PasswordOpt (2x) + 58470: 1097, // PasswordOrLockOptionList (2x) + 58471: 1098, // PasswordOrLockOptions (2x) + 58474: 1099, // PlacementOptionList (2x) + 58476: 1100, // PlanReplayerStmt (2x) + 58482: 1101, // PreparedStmt (2x) + 58487: 1102, // PrivLevel (2x) + 58490: 1103, // PurgeImportStmt (2x) + 58491: 1104, // QuickOptional (2x) + 58492: 1105, // RecoverTableStmt (2x) + 58494: 1106, // ReferOpt (2x) + 58496: 1107, // RegexpSym (2x) + 58498: 1108, // RenameTableStmt (2x) + 58499: 1109, // RenameUserStmt (2x) + 58501: 1110, // RepeatableOpt (2x) + 58507: 1111, // RestartStmt (2x) + 58509: 1112, // ResumeImportStmt (2x) + 57514: 1113, // revoke (2x) + 58510: 1114, // RevokeRoleStmt (2x) + 58511: 1115, // RevokeStmt (2x) + 58514: 1116, // RoleOrPrivElemList (2x) + 58515: 1117, // RoleSpec (2x) + 58537: 1118, // SelectStmtOpt (2x) + 58540: 1119, // SelectStmtSQLCache (2x) + 58544: 1120, // SetBindingStmt (2x) + 58545: 1121, // SetDefaultRoleOpt (2x) + 58546: 1122, // SetDefaultRoleStmt (2x) + 58556: 1123, // SetRoleStmt (2x) + 58559: 1124, // ShowImportStmt (2x) + 58564: 1125, // ShowProfileType (2x) + 58567: 1126, // ShowStmt (2x) + 58568: 1127, // ShowTableAliasOpt (2x) + 58570: 1128, // ShutdownStmt (2x) + 58571: 1129, // SignedLiteral (2x) + 58575: 1130, // SplitOption (2x) + 58576: 1131, // SplitRegionStmt (2x) + 58580: 1132, // Statement (2x) + 58583: 1133, // StatsOptionsOpt (2x) + 58584: 1134, // StatsPersistentVal (2x) + 58585: 1135, // StatsType (2x) + 58586: 1136, // StopImportStmt (2x) + 58593: 1137, // SubPartDefinition (2x) + 58596: 1138, // SubPartitionMethod (2x) + 58601: 1139, // Symbol (2x) + 58607: 1140, // TableElementList (2x) + 58610: 1141, // TableLock (2x) + 58614: 1142, // TableNameListOpt (2x) + 58621: 1143, // TableOrTables (2x) + 58630: 1144, // TablesTerminalSym (2x) + 58628: 1145, // TableToTable (2x) + 58632: 1146, // TextStringList (2x) + 58637: 1147, // TraceStmt (2x) + 58642: 1148, // TruncateTableStmt (2x) + 58645: 1149, // UnlockTablesStmt (2x) + 58651: 1150, // UserToUser (2x) + 58648: 1151, // UseStmt (2x) + 58663: 1152, // Varchar (2x) + 58666: 1153, // VariableAssignmentList (2x) + 58675: 1154, // WhenClause (2x) + 58680: 1155, // WindowDefinition (2x) + 58683: 1156, // WindowFrameBound (2x) + 58690: 1157, // WindowSpec (2x) + 58695: 1158, // WithGrantOptionOpt (2x) + 58696: 1159, // WithList (2x) + 58700: 1160, // Writeable (2x) + 58111: 1161, // AdminShowSlow (1x) + 58120: 1162, // AlterOrderList (1x) + 58123: 1163, // AlterSequenceOptionList (1x) + 58125: 1164, // AlterTablePartitionOpt (1x) + 58127: 1165, // AlterTableSpecList (1x) + 58128: 1166, // AlterTableSpecListOpt (1x) + 58132: 1167, // AnalyzeOptionList (1x) + 58135: 1168, // AnyOrAll (1x) + 58137: 1169, // AsOfClauseOpt (1x) + 58138: 1170, // AsOpt (1x) + 58143: 1171, // AuthOption (1x) + 58144: 1172, // AuthPlugin (1x) + 58155: 1173, // BetweenOrNotOp (1x) + 58157: 1174, // BindingStatusType (1x) + 58160: 1175, // BitValueType (1x) + 58161: 1176, // BlobType (1x) + 58164: 1177, // BooleanType (1x) + 57370: 1178, // both (1x) + 58175: 1179, // CharsetNameOrDefault (1x) + 58176: 1180, // CharsetOpt (1x) + 58178: 1181, // ClearPasswordExpireOptions (1x) + 58182: 1182, // ColumnFormat (1x) + 58184: 1183, // ColumnList (1x) + 58191: 1184, // ColumnNameOrUserVariableList (1x) + 58188: 1185, // ColumnNameOrUserVarListOpt (1x) + 58189: 1186, // ColumnNameOrUserVarListOptWithBrackets (1x) + 58197: 1187, // ColumnSetValueList (1x) + 58201: 1188, // CompareOp (1x) + 58205: 1189, // ConnectionOptionList (1x) + 58208: 1190, // ConstraintElem (1x) + 58216: 1191, // CreateSequenceOptionListOpt (1x) + 58220: 1192, // CreateTableSelectOpt (1x) + 58223: 1193, // CreateViewSelectOpt (1x) + 58230: 1194, // DatabaseOptionListOpt (1x) + 58232: 1195, // DateAndTimeType (1x) + 58227: 1196, // DBNameList (1x) + 58238: 1197, // DefaultValueExpr (1x) + 58258: 1198, // DryRunOptions (1x) + 57409: 1199, // dual (1x) + 58260: 1200, // ElseOpt (1x) + 58265: 1201, // EnforcedOrNotOrNotNullOpt (1x) + 58279: 1202, // ExpressionOpt (1x) + 58281: 1203, // FetchFirstOpt (1x) + 58283: 1204, // FieldAsName (1x) + 58284: 1205, // FieldAsNameOpt (1x) + 58286: 1206, // FieldItemList (1x) + 58288: 1207, // FieldList (1x) + 58294: 1208, // FirstOrNext (1x) + 58295: 1209, // FixedPointType (1x) + 58297: 1210, // FlashbackToNewName (1x) + 58299: 1211, // FloatingPointType (1x) + 58300: 1212, // FlushOption (1x) + 58303: 1213, // FromDual (1x) + 58305: 1214, // FulltextSearchModifierOpt (1x) + 58306: 1215, // FuncDatetimePrec (1x) + 58319: 1216, // GetFormatSelector (1x) + 58326: 1217, // HandleRangeList (1x) + 58331: 1218, // IdentListWithParenOpt (1x) + 58335: 1219, // IfNotRunning (1x) + 58336: 1220, // IfRunning (1x) + 58337: 1221, // IgnoreLines (1x) + 58339: 1222, // ImportTruncate (1x) + 58345: 1223, // IndexHintScope (1x) + 58348: 1224, // IndexKeyTypeOpt (1x) + 58357: 1225, // IndexPartSpecificationListOpt (1x) + 58360: 1226, // IndexTypeOpt (1x) + 58340: 1227, // InOrNotOp (1x) + 58363: 1228, // InstanceOption (1x) + 58365: 1229, // IntegerType (1x) + 58368: 1230, // IsolationLevel (1x) + 58367: 1231, // IsOrNotOp (1x) + 57460: 1232, // leading (1x) + 58376: 1233, // LikeEscapeOpt (1x) + 58377: 1234, // LikeOrNotOp (1x) + 58378: 1235, // LikeTableWithOrWithoutParen (1x) + 58383: 1236, // LinesTerminated (1x) + 58386: 1237, // LoadDataSetList (1x) + 58387: 1238, // LoadDataSetSpecOpt (1x) + 58394: 1239, // LockType (1x) + 58395: 1240, // LogTypeOpt (1x) + 58396: 1241, // Match (1x) + 58397: 1242, // MatchOpt (1x) + 58398: 1243, // MaxIndexNumOpt (1x) + 58399: 1244, // MaxMinutesOpt (1x) + 58402: 1245, // NChar (1x) + 58416: 1246, // NumericType (1x) + 58404: 1247, // NVarchar (1x) + 58421: 1248, // OnDeleteUpdateOpt (1x) + 58422: 1249, // OnDuplicateKeyUpdate (1x) + 58424: 1250, // OptBinMod (1x) + 58426: 1251, // OptCharset (1x) + 58429: 1252, // OptErrors (1x) + 58430: 1253, // OptExistingWindowName (1x) + 58432: 1254, // OptFromFirstLast (1x) + 58434: 1255, // OptGConcatSeparator (1x) + 58449: 1256, // OptionalShardColumn (1x) + 58440: 1257, // OptPartitionClause (1x) + 58441: 1258, // OptTable (1x) + 58444: 1259, // OptWindowFrameClause (1x) + 58445: 1260, // OptWindowOrderByClause (1x) + 58451: 1261, // Order (1x) + 58450: 1262, // OrReplace (1x) + 57444: 1263, // outfile (1x) + 58457: 1264, // PartDefValuesOpt (1x) + 58461: 1265, // PartitionKeyAlgorithmOpt (1x) + 58462: 1266, // PartitionMethod (1x) + 58465: 1267, // PartitionNumOpt (1x) + 58472: 1268, // PerDB (1x) + 58473: 1269, // PerTable (1x) + 57498: 1270, // precisionType (1x) + 58481: 1271, // PrepareSQL (1x) + 58489: 1272, // ProcedureCall (1x) + 57505: 1273, // recursive (1x) + 58495: 1274, // RegexpOrNotOp (1x) + 58500: 1275, // ReorganizePartitionRuleOpt (1x) + 58505: 1276, // RequireList (1x) + 58516: 1277, // RoleSpecList (1x) + 58523: 1278, // RowOrRows (1x) + 58530: 1279, // SelectStmtFieldList (1x) + 58538: 1280, // SelectStmtOpts (1x) + 58539: 1281, // SelectStmtOptsList (1x) + 58543: 1282, // SequenceOptionList (1x) + 58548: 1283, // SetOpr (1x) + 58555: 1284, // SetRoleOpt (1x) + 58560: 1285, // ShowIndexKwd (1x) + 58561: 1286, // ShowLikeOrWhereOpt (1x) + 58562: 1287, // ShowPlacementTarget (1x) + 58563: 1288, // ShowProfileArgsOpt (1x) + 58565: 1289, // ShowProfileTypes (1x) + 58566: 1290, // ShowProfileTypesOpt (1x) + 58569: 1291, // ShowTargetFilterable (1x) + 57525: 1292, // spatial (1x) + 58577: 1293, // SplitSyntaxOption (1x) + 57530: 1294, // ssl (1x) + 58578: 1295, // Start (1x) + 58579: 1296, // Starting (1x) + 57531: 1297, // starting (1x) + 58581: 1298, // StatementList (1x) + 58582: 1299, // StatementScope (1x) + 58587: 1300, // StorageMedia (1x) + 57536: 1301, // stored (1x) + 58588: 1302, // StringList (1x) + 58591: 1303, // StringNameOrBRIEOptionKeyword (1x) + 58592: 1304, // StringType (1x) + 58594: 1305, // SubPartDefinitionList (1x) + 58595: 1306, // SubPartDefinitionListOpt (1x) + 58597: 1307, // SubPartitionNumOpt (1x) + 58598: 1308, // SubPartitionOpt (1x) + 58608: 1309, // TableElementListOpt (1x) + 58611: 1310, // TableLockList (1x) + 58624: 1311, // TableRefsClause (1x) + 58625: 1312, // TableSampleMethodOpt (1x) + 58626: 1313, // TableSampleOpt (1x) + 58627: 1314, // TableSampleUnitOpt (1x) + 58629: 1315, // TableToTableList (1x) + 58633: 1316, // TextType (1x) + 57543: 1317, // trailing (1x) + 58641: 1318, // TrimDirection (1x) + 58643: 1319, // Type (1x) + 58652: 1320, // UserToUserList (1x) + 58654: 1321, // UserVariableList (1x) + 58657: 1322, // UsingRoles (1x) + 58659: 1323, // Values (1x) + 58661: 1324, // ValuesOpt (1x) + 58668: 1325, // ViewAlgorithm (1x) + 58669: 1326, // ViewCheckOption (1x) + 58670: 1327, // ViewDefiner (1x) + 58671: 1328, // ViewFieldList (1x) + 58672: 1329, // ViewName (1x) + 58673: 1330, // ViewSQLSecurity (1x) + 57563: 1331, // virtual (1x) + 58674: 1332, // VirtualOrStored (1x) + 58676: 1333, // WhenClauseList (1x) + 58679: 1334, // WindowClauseOptional (1x) + 58681: 1335, // WindowDefinitionList (1x) + 58682: 1336, // WindowFrameBetween (1x) + 58684: 1337, // WindowFrameExtent (1x) + 58686: 1338, // WindowFrameUnits (1x) + 58689: 1339, // WindowNameOrSpec (1x) + 58691: 1340, // WindowSpecDetails (1x) + 58697: 1341, // WithReadLockOpt (1x) + 58698: 1342, // WithValidation (1x) + 58699: 1343, // WithValidationOpt (1x) + 58701: 1344, // Year (1x) + 58110: 1345, // $default (0x) + 58071: 1346, // andnot (0x) + 58141: 1347, // AssignmentListOpt (0x) + 58181: 1348, // ColumnDefList (0x) + 58198: 1349, // CommaOpt (0x) + 58094: 1350, // createTableSelect (0x) + 58085: 1351, // empty (0x) + 57345: 1352, // error (0x) + 58109: 1353, // higherThanComma (0x) + 58103: 1354, // higherThanParenthese (0x) + 58092: 1355, // insertValues (0x) + 57352: 1356, // invalid (0x) + 58095: 1357, // lowerThanCharsetKwd (0x) + 58108: 1358, // lowerThanComma (0x) + 58093: 1359, // lowerThanCreateTableSelect (0x) + 58105: 1360, // lowerThanEq (0x) + 58100: 1361, // lowerThanFunction (0x) + 58091: 1362, // lowerThanInsertValues (0x) + 58096: 1363, // lowerThanKey (0x) + 58097: 1364, // lowerThanLocal (0x) + 58107: 1365, // lowerThanNot (0x) + 58104: 1366, // lowerThanOn (0x) + 58102: 1367, // lowerThanParenthese (0x) + 58098: 1368, // lowerThanRemove (0x) + 58086: 1369, // lowerThanSelectOpt (0x) + 58090: 1370, // lowerThanSelectStmt (0x) + 58089: 1371, // lowerThanSetKeyword (0x) + 58088: 1372, // lowerThanStringLitToken (0x) + 58087: 1373, // lowerThanValueKeyword (0x) + 58099: 1374, // lowerThenOrder (0x) + 58106: 1375, // neg (0x) + 57356: 1376, // odbcDateType (0x) + 57358: 1377, // odbcTimestampType (0x) + 57357: 1378, // odbcTimeType (0x) + 58101: 1379, // tableRefPriority (0x) } yySymNames = []string{ @@ -2310,16 +2312,15 @@ var ( "columns", "view", "subpartition", + "yearType", "ascii", "byteType", + "day", "partitions", "unicodeSym", - "yearType", - "day", "fields", "second", "sqlTsiYear", - "tables", "hour", "microsecond", "minute", @@ -2332,8 +2333,9 @@ var ( "sqlTsiQuarter", "sqlTsiSecond", "sqlTsiWeek", - "status", + "tables", "week", + "status", "separator", "maxConnectionsPerHour", "maxQueriesPerHour", @@ -2592,6 +2594,7 @@ var ( "run", "security", "serializable", + "sessionStates", "simple", "slave", "statsHealthy", @@ -2691,8 +2694,8 @@ var ( "collate", "left", "right", - "'-'", "'+'", + "'-'", "mod", "except", "intersect", @@ -2704,8 +2707,8 @@ var ( "into", "lock", "where", - "from", "eq", + "from", "fetch", "values", "order", @@ -2749,8 +2752,8 @@ var ( "secondMicrosecond", "yearMonth", "when", - "in", "binaryType", + "in", "elseKwd", "then", "'<'", @@ -2789,10 +2792,10 @@ var ( "bitLit", "interval", "check", - "pipes", - "primary", "database", "exists", + "pipes", + "primary", "convert", "builtinNow", "currentTs", @@ -2800,7 +2803,6 @@ var ( "localTime", "localTs", "underscoreCS", - "unique", "builtinCount", "'!'", "'~'", @@ -2830,7 +2832,6 @@ var ( "builtinVarPop", "builtinVarSamp", "caseKwd", - "constraint", "cumeDist", "currentDate", "currentRole", @@ -2846,9 +2847,11 @@ var ( "rank", "repeat", "rowNumber", + "unique", "utcDate", "utcTime", "utcTimestamp", + "constraint", "references", "generated", "selectKwd", @@ -2864,8 +2867,8 @@ var ( "juss", "maxValue", "lines", - "by", "assignmentEq", + "by", "alter", "require", "Identifier", @@ -3008,9 +3011,9 @@ var ( "RolenameComposed", "TableFactor", "TableRef", + "TimestampUnit", "AnalyzeOptionListOpt", "FromOrIn", - "TimestampUnit", "AlterTableStmt", "CharsetName", "ColumnNameList", @@ -3027,6 +3030,7 @@ var ( "NumLiteral", "Rolename", "RoleNameString", + "TimeUnit", "CrossOpt", "EqOrAssignmentEq", "ExplainableStmt", @@ -3034,7 +3038,6 @@ var ( "IndexPartSpecification", "KeyOrIndex", "SelectStmtLimitOpt", - "TimeUnit", "VariableName", "AllOrPartitionNameList", "ConstraintKeywordOpt", @@ -3592,988 +3595,1031 @@ var ( yyReductions = []struct{ xsym, components int }{ {0, 1}, - {1294, 1}, - {802, 6}, - {802, 8}, - {802, 10}, - {802, 7}, - {1098, 1}, - {1098, 2}, - {1098, 3}, - {869, 3}, - {869, 3}, - {869, 3}, - {869, 3}, - {869, 3}, - {869, 3}, - {869, 3}, - {869, 3}, - {869, 3}, - {869, 3}, - {869, 3}, - {776, 4}, - {776, 4}, - {776, 4}, - {776, 4}, - {921, 3}, - {921, 3}, - {1132, 3}, - {1132, 3}, - {1163, 1}, - {1163, 2}, - {1163, 4}, - {1163, 3}, - {1163, 3}, - {1072, 0}, - {1072, 3}, - {984, 1}, - {984, 5}, - {984, 5}, - {984, 5}, - {984, 5}, - {984, 6}, - {984, 2}, - {984, 5}, - {984, 6}, - {984, 8}, - {984, 1}, - {984, 1}, - {984, 3}, - {984, 4}, - {984, 5}, - {984, 3}, - {984, 4}, - {984, 4}, - {984, 7}, - {984, 3}, - {984, 4}, - {984, 4}, - {984, 4}, - {984, 4}, - {984, 2}, - {984, 2}, - {984, 4}, - {984, 4}, - {984, 5}, - {984, 3}, - {984, 2}, - {984, 2}, - {984, 5}, - {984, 6}, - {984, 6}, - {984, 8}, - {984, 5}, - {984, 5}, - {984, 3}, - {984, 3}, - {984, 3}, - {984, 5}, - {984, 1}, - {984, 1}, - {984, 1}, - {984, 1}, - {984, 2}, - {984, 2}, - {984, 1}, - {984, 1}, - {984, 4}, - {984, 3}, - {984, 4}, - {984, 1}, - {984, 1}, - {1274, 0}, - {1274, 5}, - {827, 1}, - {827, 1}, - {1342, 0}, - {1342, 1}, - {1341, 2}, - {1341, 2}, - {864, 1}, - {864, 1}, - {865, 3}, - {865, 3}, - {865, 3}, - {865, 3}, - {865, 3}, - {878, 3}, - {878, 3}, - {1159, 2}, - {1159, 2}, - {823, 1}, - {823, 1}, - {1062, 0}, - {1062, 1}, - {868, 0}, - {868, 1}, - {924, 0}, - {924, 1}, - {924, 2}, - {1165, 0}, - {1165, 1}, + {1295, 1}, + {803, 6}, + {803, 8}, + {803, 10}, + {803, 7}, + {1099, 1}, + {1099, 2}, + {1099, 3}, + {870, 3}, + {870, 3}, + {870, 3}, + {870, 3}, + {870, 3}, + {870, 3}, + {870, 3}, + {870, 3}, + {870, 3}, + {870, 3}, + {870, 3}, + {777, 4}, + {777, 4}, + {777, 4}, + {777, 4}, + {922, 3}, + {922, 3}, + {1133, 3}, + {1133, 3}, {1164, 1}, + {1164, 2}, + {1164, 4}, + {1164, 3}, {1164, 3}, - {785, 1}, - {785, 3}, - {828, 0}, + {1073, 0}, + {1073, 3}, + {985, 1}, + {985, 5}, + {985, 5}, + {985, 5}, + {985, 5}, + {985, 6}, + {985, 2}, + {985, 5}, + {985, 6}, + {985, 8}, + {985, 1}, + {985, 1}, + {985, 3}, + {985, 4}, + {985, 5}, + {985, 3}, + {985, 4}, + {985, 4}, + {985, 7}, + {985, 3}, + {985, 4}, + {985, 4}, + {985, 4}, + {985, 4}, + {985, 2}, + {985, 2}, + {985, 4}, + {985, 4}, + {985, 5}, + {985, 3}, + {985, 2}, + {985, 2}, + {985, 5}, + {985, 6}, + {985, 6}, + {985, 8}, + {985, 5}, + {985, 5}, + {985, 3}, + {985, 3}, + {985, 3}, + {985, 5}, + {985, 1}, + {985, 1}, + {985, 1}, + {985, 1}, + {985, 2}, + {985, 2}, + {985, 1}, + {985, 1}, + {985, 4}, + {985, 3}, + {985, 4}, + {985, 1}, + {985, 1}, + {1275, 0}, + {1275, 5}, {828, 1}, - {828, 2}, - {1138, 1}, - {1107, 3}, - {1314, 1}, - {1314, 3}, - {1144, 3}, + {828, 1}, + {1343, 0}, + {1343, 1}, + {1342, 2}, + {1342, 2}, + {865, 1}, + {865, 1}, + {866, 3}, + {866, 3}, + {866, 3}, + {866, 3}, + {866, 3}, + {879, 3}, + {879, 3}, + {1160, 2}, + {1160, 2}, + {825, 1}, + {825, 1}, + {1063, 0}, + {1063, 1}, + {869, 0}, + {869, 1}, + {925, 0}, + {925, 1}, + {925, 2}, + {1166, 0}, + {1166, 1}, + {1165, 1}, + {1165, 3}, + {786, 1}, + {786, 3}, + {829, 0}, + {829, 1}, + {829, 2}, + {1139, 1}, {1108, 3}, - {1319, 1}, - {1319, 3}, - {1149, 3}, - {1104, 5}, - {1104, 3}, - {1104, 4}, - {1045, 4}, - {1209, 0}, - {1209, 2}, + {1315, 1}, + {1315, 3}, + {1145, 3}, + {1109, 3}, + {1320, 1}, + {1320, 3}, + {1150, 3}, + {1105, 5}, + {1105, 3}, + {1105, 4}, + {1046, 4}, + {1210, 0}, + {1210, 2}, + {1131, 6}, + {1131, 8}, {1130, 6}, - {1130, 8}, - {1129, 6}, - {1129, 2}, - {1292, 0}, - {1292, 2}, - {1292, 1}, - {1292, 3}, - {987, 5}, - {987, 6}, - {987, 7}, - {987, 7}, - {987, 8}, - {987, 9}, - {987, 8}, - {987, 7}, - {987, 6}, - {987, 8}, - {976, 0}, - {976, 2}, - {976, 2}, - {799, 0}, - {799, 2}, - {1166, 1}, - {1166, 3}, - {986, 2}, - {986, 2}, - {986, 3}, - {986, 3}, - {986, 2}, - {986, 2}, - {887, 3}, - {920, 1}, - {920, 3}, - {1346, 0}, - {1346, 1}, - {840, 1}, - {840, 2}, - {840, 2}, - {840, 2}, - {840, 4}, - {840, 5}, - {840, 6}, - {840, 4}, - {840, 5}, - {988, 2}, + {1130, 2}, + {1293, 0}, + {1293, 2}, + {1293, 1}, + {1293, 3}, + {988, 5}, + {988, 6}, + {988, 7}, + {988, 7}, + {988, 8}, + {988, 9}, + {988, 8}, + {988, 7}, + {988, 6}, + {988, 8}, + {977, 0}, + {977, 2}, + {977, 2}, + {801, 0}, + {801, 2}, + {1167, 1}, + {1167, 3}, + {987, 2}, + {987, 2}, + {987, 3}, + {987, 3}, + {987, 2}, + {987, 2}, + {888, 3}, + {921, 1}, + {921, 3}, + {1347, 0}, {1347, 1}, - {1347, 3}, - {843, 3}, - {843, 3}, - {739, 1}, - {739, 3}, - {739, 5}, - {804, 1}, - {804, 3}, - {997, 0}, - {997, 1}, - {1217, 0}, - {1217, 3}, - {872, 1}, - {872, 3}, - {1184, 0}, - {1184, 1}, - {1183, 1}, - {1183, 3}, - {998, 1}, + {841, 1}, + {841, 2}, + {841, 2}, + {841, 2}, + {841, 4}, + {841, 5}, + {841, 6}, + {841, 4}, + {841, 5}, + {989, 2}, + {1348, 1}, + {1348, 3}, + {844, 3}, + {844, 3}, + {740, 1}, + {740, 3}, + {740, 5}, + {805, 1}, + {805, 3}, + {998, 0}, {998, 1}, + {1218, 0}, + {1218, 3}, + {873, 1}, + {873, 3}, {1185, 0}, - {1185, 3}, - {844, 1}, - {844, 2}, - {951, 0}, - {951, 1}, - {806, 1}, - {806, 1}, - {929, 1}, - {929, 2}, - {1036, 0}, - {1036, 1}, - {1200, 2}, - {1200, 1}, - {923, 2}, - {923, 1}, - {923, 1}, - {923, 2}, - {923, 3}, - {923, 1}, - {923, 2}, - {923, 2}, - {923, 3}, - {923, 3}, - {923, 2}, - {923, 6}, - {923, 6}, - {923, 1}, - {923, 2}, - {923, 2}, - {923, 2}, - {923, 2}, - {1299, 1}, - {1299, 1}, - {1299, 1}, - {1181, 1}, - {1181, 1}, - {1181, 1}, - {932, 0}, - {932, 2}, - {1331, 0}, - {1331, 1}, - {1331, 1}, + {1185, 1}, + {1184, 1}, + {1184, 3}, {999, 1}, - {999, 2}, - {1000, 0}, + {999, 1}, + {1186, 0}, + {1186, 3}, + {845, 1}, + {845, 2}, + {952, 0}, + {952, 1}, + {807, 1}, + {807, 1}, + {930, 1}, + {930, 2}, + {1037, 0}, + {1037, 1}, + {1201, 2}, + {1201, 1}, + {924, 2}, + {924, 1}, + {924, 1}, + {924, 2}, + {924, 3}, + {924, 1}, + {924, 2}, + {924, 2}, + {924, 3}, + {924, 3}, + {924, 2}, + {924, 6}, + {924, 6}, + {924, 1}, + {924, 2}, + {924, 2}, + {924, 2}, + {924, 2}, + {1300, 1}, + {1300, 1}, + {1300, 1}, + {1182, 1}, + {1182, 1}, + {1182, 1}, + {933, 0}, + {933, 2}, + {1332, 0}, + {1332, 1}, + {1332, 1}, {1000, 1}, - {1189, 7}, - {1189, 7}, - {1189, 7}, - {1189, 7}, - {1189, 8}, - {1189, 5}, - {1240, 2}, - {1240, 2}, - {1240, 2}, - {1241, 0}, - {1241, 1}, - {905, 5}, - {1082, 3}, + {1000, 2}, + {1001, 0}, + {1001, 1}, + {1190, 7}, + {1190, 7}, + {1190, 7}, + {1190, 7}, + {1190, 8}, + {1190, 5}, + {1241, 2}, + {1241, 2}, + {1241, 2}, + {1242, 0}, + {1242, 1}, + {906, 5}, {1083, 3}, - {1247, 0}, - {1247, 1}, - {1247, 1}, - {1247, 2}, - {1247, 2}, - {1105, 1}, - {1105, 1}, - {1105, 2}, - {1105, 2}, - {1105, 2}, - {1196, 1}, - {1196, 1}, - {1196, 1}, - {1196, 1}, - {991, 3}, - {991, 3}, - {991, 4}, - {1076, 3}, - {1076, 1}, + {1084, 3}, + {1248, 0}, + {1248, 1}, + {1248, 1}, + {1248, 2}, + {1248, 2}, + {1106, 1}, + {1106, 1}, + {1106, 2}, + {1106, 2}, + {1106, 2}, + {1197, 1}, + {1197, 1}, + {1197, 1}, + {1197, 1}, + {992, 3}, + {992, 3}, + {992, 4}, + {1077, 3}, + {1077, 1}, + {944, 1}, + {944, 3}, + {944, 4}, + {711, 4}, + {711, 4}, + {943, 1}, + {943, 1}, + {943, 1}, {943, 1}, - {943, 3}, - {943, 4}, - {710, 4}, - {710, 4}, - {942, 1}, {942, 1}, {942, 1}, {942, 1}, - {941, 1}, - {941, 1}, - {941, 1}, - {1128, 1}, - {1128, 2}, - {1128, 2}, - {815, 1}, - {815, 1}, - {815, 1}, - {1134, 1}, - {1134, 1}, - {1134, 1}, - {1173, 1}, - {1173, 1}, - {1012, 12}, - {1028, 3}, - {1008, 13}, + {1129, 1}, + {1129, 2}, + {1129, 2}, + {816, 1}, + {816, 1}, + {816, 1}, + {1135, 1}, + {1135, 1}, + {1135, 1}, + {1174, 1}, + {1174, 1}, + {1013, 12}, + {1029, 3}, + {1009, 13}, + {1225, 0}, + {1225, 3}, + {832, 1}, + {832, 3}, + {824, 3}, + {824, 4}, + {1060, 0}, + {1060, 1}, + {1060, 1}, + {1060, 2}, + {1060, 2}, {1224, 0}, - {1224, 3}, - {831, 1}, - {831, 3}, - {822, 3}, - {822, 4}, - {1059, 0}, - {1059, 1}, - {1059, 1}, - {1059, 2}, - {1059, 2}, - {1223, 0}, - {1223, 1}, - {1223, 1}, - {1223, 1}, - {977, 4}, - {977, 3}, - {1006, 5}, - {811, 1}, - {881, 1}, - {845, 4}, - {845, 4}, - {845, 4}, - {845, 2}, - {845, 1}, - {845, 5}, - {1193, 0}, - {1193, 1}, - {927, 1}, - {927, 2}, - {926, 12}, - {926, 7}, - {1081, 0}, - {1081, 4}, - {1081, 4}, - {788, 0}, - {788, 1}, - {1094, 0}, - {1094, 6}, - {1137, 6}, - {1137, 5}, - {1264, 0}, - {1264, 3}, - {1265, 1}, - {1265, 4}, - {1265, 5}, - {1265, 4}, - {1265, 5}, - {1265, 4}, + {1224, 1}, + {1224, 1}, + {1224, 1}, + {978, 4}, + {978, 3}, + {1007, 5}, + {812, 1}, + {882, 1}, + {846, 4}, + {846, 4}, + {846, 4}, + {846, 2}, + {846, 1}, + {846, 5}, + {1194, 0}, + {1194, 1}, + {928, 1}, + {928, 2}, + {927, 12}, + {927, 7}, + {1082, 0}, + {1082, 4}, + {1082, 4}, + {789, 0}, + {789, 1}, + {1095, 0}, + {1095, 6}, + {1138, 6}, + {1138, 5}, + {1265, 0}, {1265, 3}, - {1265, 1}, - {1068, 0}, - {1068, 1}, + {1266, 1}, + {1266, 4}, + {1266, 5}, + {1266, 4}, + {1266, 5}, + {1266, 4}, + {1266, 3}, + {1266, 1}, + {1069, 0}, + {1069, 1}, + {1308, 0}, + {1308, 4}, {1307, 0}, - {1307, 4}, - {1306, 0}, - {1306, 2}, - {1266, 0}, - {1266, 2}, - {1093, 0}, + {1307, 2}, + {1267, 0}, + {1267, 2}, + {1094, 0}, + {1094, 3}, + {1093, 1}, {1093, 3}, - {1092, 1}, - {1092, 3}, - {947, 5}, - {1305, 0}, + {948, 5}, + {1306, 0}, + {1306, 3}, + {1305, 1}, {1305, 3}, - {1304, 1}, - {1304, 3}, - {1136, 3}, - {946, 0}, - {946, 2}, - {808, 3}, - {808, 3}, - {808, 4}, - {808, 3}, - {808, 4}, - {808, 4}, - {808, 3}, - {808, 3}, - {808, 3}, - {808, 3}, - {808, 1}, - {1263, 0}, - {1263, 4}, - {1263, 6}, - {1263, 1}, - {1263, 5}, - {1263, 1}, - {1263, 1}, - {1033, 0}, - {1033, 1}, - {1033, 1}, - {1169, 0}, - {1169, 1}, - {1191, 0}, - {1191, 1}, - {1191, 1}, - {1191, 1}, - {1191, 1}, + {1137, 3}, + {947, 0}, + {947, 2}, + {809, 3}, + {809, 3}, + {809, 4}, + {809, 3}, + {809, 4}, + {809, 4}, + {809, 3}, + {809, 3}, + {809, 3}, + {809, 3}, + {809, 1}, + {1264, 0}, + {1264, 4}, + {1264, 6}, + {1264, 1}, + {1264, 5}, + {1264, 1}, + {1264, 1}, + {1034, 0}, + {1034, 1}, + {1034, 1}, + {1170, 0}, + {1170, 1}, + {1192, 0}, {1192, 1}, {1192, 1}, {1192, 1}, {1192, 1}, - {1234, 2}, - {1234, 4}, - {1015, 11}, - {1261, 0}, - {1261, 2}, - {1324, 0}, - {1324, 3}, - {1324, 3}, - {1324, 3}, - {1326, 0}, - {1326, 3}, - {1329, 0}, - {1329, 3}, - {1329, 3}, - {1328, 1}, + {1193, 1}, + {1193, 1}, + {1193, 1}, + {1193, 1}, + {1235, 2}, + {1235, 4}, + {1016, 11}, + {1262, 0}, + {1262, 2}, + {1325, 0}, + {1325, 3}, + {1325, 3}, + {1325, 3}, {1327, 0}, {1327, 3}, - {1182, 1}, - {1182, 3}, - {1325, 0}, - {1325, 4}, - {1325, 4}, - {1020, 2}, - {762, 13}, - {762, 9}, - {775, 10}, - {779, 1}, - {779, 1}, - {779, 2}, - {779, 2}, - {846, 1}, - {1022, 4}, - {1024, 7}, - {1030, 6}, - {945, 0}, - {945, 1}, - {945, 2}, - {1032, 4}, - {1032, 6}, - {1031, 3}, - {1031, 5}, - {1026, 3}, - {1026, 5}, - {1029, 3}, - {1029, 5}, - {1029, 4}, - {906, 0}, - {906, 1}, - {906, 1}, - {1142, 1}, - {1142, 1}, - {732, 0}, - {732, 1}, - {1034, 0}, - {1146, 2}, - {1146, 5}, - {1146, 3}, - {1146, 6}, - {1041, 1}, - {1041, 1}, - {1041, 1}, - {1040, 2}, - {1040, 3}, - {1040, 2}, - {1040, 4}, - {1040, 7}, - {1040, 5}, - {1040, 7}, - {1040, 5}, - {1040, 3}, - {1040, 6}, - {1040, 6}, - {1039, 1}, - {1039, 1}, - {1039, 1}, - {1039, 1}, - {1039, 1}, - {1039, 1}, - {1039, 1}, - {859, 2}, - {856, 3}, - {989, 5}, - {989, 5}, - {990, 2}, - {990, 2}, - {990, 2}, - {1195, 1}, - {1195, 3}, - {893, 0}, - {893, 2}, - {890, 1}, - {890, 1}, - {889, 1}, - {889, 1}, - {889, 1}, - {889, 1}, - {889, 1}, - {889, 1}, - {889, 1}, - {889, 1}, - {894, 1}, - {894, 1}, - {894, 1}, - {894, 1}, + {1330, 0}, + {1330, 3}, + {1330, 3}, + {1329, 1}, + {1328, 0}, + {1328, 3}, + {1183, 1}, + {1183, 3}, + {1326, 0}, + {1326, 4}, + {1326, 4}, + {1021, 2}, + {763, 13}, + {763, 9}, + {776, 10}, + {780, 1}, + {780, 1}, + {780, 2}, + {780, 2}, + {847, 1}, + {1023, 4}, + {1025, 7}, + {1031, 6}, + {946, 0}, + {946, 1}, + {946, 2}, + {1033, 4}, + {1033, 6}, + {1032, 3}, + {1032, 5}, + {1027, 3}, + {1027, 5}, + {1030, 3}, + {1030, 5}, + {1030, 4}, + {907, 0}, + {907, 1}, + {907, 1}, + {1143, 1}, + {1143, 1}, + {733, 0}, + {733, 1}, + {1035, 0}, + {1147, 2}, + {1147, 5}, + {1147, 3}, + {1147, 6}, + {1042, 1}, + {1042, 1}, + {1042, 1}, + {1041, 2}, + {1041, 3}, + {1041, 2}, + {1041, 4}, + {1041, 7}, + {1041, 5}, + {1041, 7}, + {1041, 5}, + {1041, 3}, + {1041, 6}, + {1041, 6}, + {1040, 1}, + {1040, 1}, + {1040, 1}, + {1040, 1}, + {1040, 1}, + {1040, 1}, + {1040, 1}, + {860, 2}, + {857, 3}, + {990, 5}, + {990, 5}, + {991, 2}, + {991, 2}, + {991, 2}, + {1196, 1}, + {1196, 3}, + {894, 0}, + {894, 2}, {891, 1}, {891, 1}, - {891, 2}, - {892, 3}, - {892, 3}, - {892, 3}, - {892, 3}, - {892, 5}, - {892, 3}, - {892, 3}, - {892, 3}, - {892, 3}, - {892, 6}, - {892, 3}, - {892, 3}, - {892, 3}, - {892, 3}, - {892, 3}, - {892, 3}, - {740, 1}, - {760, 1}, - {729, 1}, - {922, 1}, - {922, 1}, - {922, 1}, - {1088, 1}, - {1088, 1}, - {1088, 1}, - {1102, 3}, - {1007, 8}, - {1135, 4}, - {1111, 4}, - {978, 6}, - {1023, 4}, - {1123, 5}, + {890, 1}, + {890, 1}, + {890, 1}, + {890, 1}, + {890, 1}, + {890, 1}, + {890, 1}, + {890, 1}, + {895, 1}, + {895, 1}, + {895, 1}, + {895, 1}, + {892, 1}, + {892, 1}, + {892, 2}, + {893, 3}, + {893, 3}, + {893, 3}, + {893, 3}, + {893, 5}, + {893, 3}, + {893, 3}, + {893, 3}, + {893, 3}, + {893, 6}, + {893, 3}, + {893, 3}, + {893, 3}, + {893, 3}, + {893, 3}, + {893, 3}, + {741, 1}, + {761, 1}, + {730, 1}, + {923, 1}, + {923, 1}, + {923, 1}, + {1089, 1}, + {1089, 1}, + {1089, 1}, + {1103, 3}, + {1008, 8}, + {1136, 4}, + {1112, 4}, + {979, 6}, + {1024, 4}, + {1124, 5}, + {1220, 0}, + {1220, 2}, {1219, 0}, - {1219, 2}, - {1218, 0}, - {1218, 3}, - {1251, 0}, - {1251, 1}, - {1037, 0}, - {1037, 1}, - {1037, 2}, - {1037, 2}, - {1037, 2}, - {1037, 2}, - {1221, 0}, - {1221, 3}, - {1221, 3}, - {728, 3}, - {728, 3}, - {728, 3}, - {728, 3}, - {728, 2}, - {728, 9}, - {728, 3}, - {728, 3}, - {728, 3}, - {728, 1}, - {940, 1}, - {940, 1}, - {1213, 0}, - {1213, 4}, - {1213, 7}, - {1213, 3}, - {1213, 3}, + {1219, 3}, + {1252, 0}, + {1252, 1}, + {1038, 0}, + {1038, 1}, + {1038, 2}, + {1038, 2}, + {1038, 2}, + {1038, 2}, + {1222, 0}, + {1222, 3}, + {1222, 3}, + {729, 3}, + {729, 3}, + {729, 3}, + {729, 3}, + {729, 2}, + {729, 9}, + {729, 3}, + {729, 3}, + {729, 3}, + {729, 1}, + {941, 1}, + {941, 1}, + {1214, 0}, + {1214, 4}, + {1214, 7}, + {1214, 3}, + {1214, 3}, + {732, 1}, + {732, 1}, {731, 1}, {731, 1}, - {730, 1}, - {730, 1}, - {774, 1}, - {774, 3}, - {1074, 1}, - {1074, 3}, - {821, 0}, - {821, 1}, - {1048, 0}, + {775, 1}, + {775, 3}, + {1075, 1}, + {1075, 3}, + {823, 0}, + {823, 1}, + {1049, 0}, + {1049, 1}, {1048, 1}, - {1047, 1}, - {727, 3}, + {728, 3}, + {728, 3}, + {728, 4}, + {728, 5}, + {728, 1}, + {1188, 1}, + {1188, 1}, + {1188, 1}, + {1188, 1}, + {1188, 1}, + {1188, 1}, + {1188, 1}, + {1188, 1}, + {1173, 1}, + {1173, 2}, + {1231, 1}, + {1231, 2}, + {1227, 1}, + {1227, 2}, + {1234, 1}, + {1234, 2}, + {1274, 1}, + {1274, 2}, + {1168, 1}, + {1168, 1}, + {1168, 1}, + {727, 5}, {727, 3}, - {727, 4}, {727, 5}, + {727, 4}, + {727, 3}, {727, 1}, - {1187, 1}, - {1187, 1}, - {1187, 1}, - {1187, 1}, - {1187, 1}, - {1187, 1}, - {1187, 1}, - {1187, 1}, - {1172, 1}, - {1172, 2}, - {1230, 1}, - {1230, 2}, - {1226, 1}, - {1226, 2}, - {1233, 1}, + {1107, 1}, + {1107, 1}, + {1233, 0}, {1233, 2}, - {1273, 1}, - {1273, 2}, - {1167, 1}, - {1167, 1}, - {1167, 1}, - {726, 5}, - {726, 3}, - {726, 5}, - {726, 4}, - {726, 3}, - {726, 1}, - {1106, 1}, - {1106, 1}, - {1232, 0}, - {1232, 2}, - {1042, 1}, - {1042, 3}, - {1042, 5}, - {1042, 2}, - {1204, 0}, + {1043, 1}, + {1043, 3}, + {1043, 5}, + {1043, 2}, + {1205, 0}, + {1205, 1}, {1204, 1}, - {1203, 1}, - {1203, 2}, - {1203, 1}, - {1203, 2}, - {1206, 1}, - {1206, 3}, - {934, 3}, - {1054, 0}, - {1054, 2}, - {1168, 0}, - {1168, 1}, - {919, 3}, - {777, 0}, - {777, 2}, - {781, 0}, - {781, 3}, - {850, 0}, - {850, 1}, - {873, 0}, - {873, 1}, - {875, 0}, - {875, 2}, - {874, 3}, - {874, 1}, - {874, 3}, - {874, 2}, - {874, 1}, - {874, 1}, - {937, 1}, - {937, 3}, - {937, 3}, - {1225, 0}, - {1225, 1}, - {853, 2}, - {853, 2}, - {900, 1}, - {900, 1}, - {900, 1}, - {851, 1}, + {1204, 2}, + {1204, 1}, + {1204, 2}, + {1207, 1}, + {1207, 3}, + {935, 3}, + {1055, 0}, + {1055, 2}, + {1169, 0}, + {1169, 1}, + {920, 3}, + {778, 0}, + {778, 2}, + {782, 0}, + {782, 3}, + {851, 0}, {851, 1}, - {659, 1}, - {659, 1}, - {659, 1}, - {659, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, - {662, 1}, + {874, 0}, + {874, 1}, + {876, 0}, + {876, 2}, + {875, 3}, + {875, 1}, + {875, 3}, + {875, 2}, + {875, 1}, + {875, 1}, + {938, 1}, + {938, 3}, + {938, 3}, + {1226, 0}, + {1226, 1}, + {854, 2}, + {854, 2}, + {901, 1}, + {901, 1}, + {901, 1}, + {852, 1}, + {852, 1}, + {660, 1}, + {660, 1}, + {660, 1}, + {660, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, + {663, 1}, {662, 1}, {662, 1}, {662, 1}, @@ -4659,1518 +4705,1479 @@ var ( {661, 1}, {661, 1}, {661, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {660, 1}, - {993, 2}, - {1271, 1}, - {1271, 3}, - {1271, 4}, - {1271, 6}, - {770, 9}, - {1061, 0}, + {661, 1}, + {661, 1}, + {661, 1}, + {661, 1}, + {661, 1}, + {661, 1}, + {661, 1}, + {661, 1}, + {661, 1}, + {661, 1}, + {661, 1}, + {661, 1}, + {661, 1}, + {661, 1}, + {661, 1}, + {661, 1}, + {661, 1}, + {661, 1}, + {661, 1}, + {661, 1}, + {661, 1}, + {661, 1}, + {661, 1}, + {661, 1}, + {661, 1}, + {661, 1}, + {661, 1}, + {661, 1}, + {661, 1}, + {661, 1}, + {661, 1}, + {661, 1}, + {661, 1}, + {661, 1}, + {661, 1}, + {661, 1}, + {661, 1}, + {661, 1}, + {661, 1}, + {661, 1}, + {661, 1}, + {661, 1}, + {994, 2}, + {1272, 1}, + {1272, 3}, + {1272, 4}, + {1272, 6}, + {771, 9}, + {1062, 0}, + {1062, 1}, + {1061, 5}, + {1061, 4}, + {1061, 4}, + {1061, 4}, + {1061, 4}, + {1061, 2}, {1061, 1}, - {1060, 5}, - {1060, 4}, - {1060, 4}, - {1060, 4}, - {1060, 4}, - {1060, 2}, - {1060, 1}, - {1060, 1}, - {1060, 1}, - {1060, 1}, - {1060, 2}, - {972, 1}, - {972, 1}, - {970, 1}, - {970, 3}, - {835, 3}, - {1323, 0}, + {1061, 1}, + {1061, 1}, + {1061, 1}, + {1061, 2}, + {973, 1}, + {973, 1}, + {971, 1}, + {971, 3}, + {836, 3}, + {1324, 0}, + {1324, 1}, + {1323, 3}, {1323, 1}, - {1322, 3}, - {1322, 1}, - {792, 1}, - {792, 1}, - {1001, 3}, - {1186, 0}, - {1186, 1}, - {1186, 3}, - {1248, 0}, - {1248, 5}, - {771, 6}, - {708, 1}, - {708, 1}, - {708, 1}, - {708, 1}, - {708, 1}, - {708, 1}, - {708, 1}, - {708, 2}, - {708, 1}, - {708, 1}, - {708, 2}, - {708, 2}, + {793, 1}, + {793, 1}, + {1002, 3}, + {1187, 0}, + {1187, 1}, + {1187, 3}, + {1249, 0}, + {1249, 5}, + {772, 6}, + {709, 1}, + {709, 1}, + {709, 1}, + {709, 1}, + {709, 1}, + {709, 1}, {709, 1}, {709, 2}, - {1161, 1}, - {1161, 3}, - {980, 2}, - {763, 3}, - {895, 1}, - {895, 3}, - {866, 1}, - {866, 2}, - {1260, 1}, - {1260, 1}, - {944, 0}, - {944, 1}, - {944, 1}, - {807, 0}, - {807, 1}, - {725, 3}, - {725, 3}, - {725, 3}, - {725, 3}, - {725, 3}, - {725, 3}, - {725, 5}, - {725, 5}, - {725, 3}, - {725, 3}, - {725, 3}, - {725, 3}, - {725, 3}, - {725, 3}, - {725, 1}, - {707, 1}, - {707, 3}, - {707, 5}, - {720, 1}, - {720, 1}, - {720, 1}, - {720, 1}, - {720, 3}, - {720, 1}, - {720, 1}, - {720, 1}, - {720, 1}, - {720, 1}, - {720, 2}, - {720, 2}, - {720, 2}, - {720, 2}, - {720, 3}, - {720, 2}, - {720, 1}, - {720, 3}, - {720, 5}, - {720, 6}, - {720, 2}, - {720, 4}, - {720, 2}, - {720, 6}, - {720, 5}, - {720, 6}, - {720, 6}, - {720, 4}, - {720, 4}, - {720, 3}, - {720, 3}, - {780, 1}, - {780, 1}, - {783, 1}, - {783, 1}, - {812, 0}, - {812, 1}, - {928, 0}, - {928, 1}, - {810, 1}, - {810, 2}, - {714, 1}, - {714, 1}, - {714, 1}, - {714, 1}, - {714, 1}, - {714, 1}, - {714, 1}, - {714, 1}, - {714, 1}, - {714, 1}, - {714, 1}, - {714, 1}, - {714, 1}, - {714, 1}, - {714, 1}, - {714, 1}, - {714, 1}, - {714, 1}, - {714, 1}, - {714, 1}, - {714, 1}, - {714, 1}, - {714, 1}, - {714, 1}, - {714, 1}, - {714, 1}, - {714, 1}, - {714, 1}, - {714, 1}, - {1087, 0}, - {1087, 2}, - {718, 1}, - {718, 1}, - {718, 1}, - {718, 1}, - {717, 1}, - {717, 1}, - {717, 1}, - {717, 1}, - {717, 1}, - {717, 1}, - {712, 4}, - {712, 4}, - {712, 2}, - {712, 3}, - {712, 2}, - {712, 4}, - {712, 6}, - {712, 2}, - {712, 2}, - {712, 2}, - {712, 4}, - {712, 6}, - {712, 4}, - {713, 4}, - {713, 4}, - {713, 6}, - {713, 8}, - {713, 8}, - {713, 6}, - {713, 6}, - {713, 6}, - {713, 6}, - {713, 6}, - {713, 8}, - {713, 8}, - {713, 8}, - {713, 8}, - {713, 4}, - {713, 6}, - {713, 6}, - {713, 7}, - {713, 4}, - {713, 7}, - {713, 7}, - {713, 1}, - {713, 8}, - {1215, 1}, - {1215, 1}, - {1215, 1}, - {1215, 1}, - {715, 1}, - {715, 1}, - {716, 1}, - {716, 1}, - {1317, 1}, - {1317, 1}, - {1317, 1}, - {719, 4}, - {719, 6}, - {719, 1}, - {721, 6}, - {721, 4}, - {721, 4}, - {721, 5}, - {721, 6}, - {721, 5}, - {721, 6}, + {709, 1}, + {709, 1}, + {709, 2}, + {709, 2}, + {710, 1}, + {710, 2}, + {1162, 1}, + {1162, 3}, + {981, 2}, + {764, 3}, + {896, 1}, + {896, 3}, + {867, 1}, + {867, 2}, + {1261, 1}, + {1261, 1}, + {945, 0}, + {945, 1}, + {945, 1}, + {808, 0}, + {808, 1}, + {726, 3}, + {726, 3}, + {726, 3}, + {726, 3}, + {726, 3}, + {726, 3}, + {726, 5}, + {726, 5}, + {726, 5}, + {726, 3}, + {726, 3}, + {726, 3}, + {726, 3}, + {726, 3}, + {726, 3}, + {726, 1}, + {708, 1}, + {708, 3}, + {708, 5}, + {721, 1}, + {721, 1}, + {721, 1}, + {721, 1}, + {721, 3}, + {721, 1}, + {721, 1}, + {721, 1}, + {721, 1}, + {721, 1}, + {721, 2}, + {721, 2}, + {721, 2}, + {721, 2}, + {721, 3}, + {721, 2}, + {721, 1}, + {721, 3}, {721, 5}, {721, 6}, - {721, 5}, + {721, 2}, + {721, 4}, + {721, 2}, {721, 6}, {721, 5}, - {721, 5}, - {721, 8}, - {721, 6}, {721, 6}, {721, 6}, - {721, 6}, - {721, 6}, - {721, 6}, - {721, 6}, - {721, 5}, - {721, 6}, - {721, 7}, - {721, 8}, - {721, 8}, - {721, 9}, - {1254, 0}, - {1254, 2}, - {711, 4}, - {711, 6}, - {1214, 0}, - {1214, 2}, - {1214, 3}, - {825, 1}, - {825, 1}, - {825, 1}, - {825, 1}, - {825, 1}, - {825, 1}, - {825, 1}, - {825, 1}, - {825, 1}, - {825, 1}, - {825, 1}, - {825, 1}, - {801, 1}, - {801, 1}, - {801, 1}, - {801, 1}, - {801, 1}, - {801, 1}, - {801, 1}, - {801, 1}, - {801, 1}, - {801, 1}, - {801, 1}, - {801, 1}, - {801, 1}, - {801, 1}, - {801, 1}, - {801, 1}, - {801, 1}, - {1201, 0}, - {1201, 1}, - {1332, 1}, - {1332, 2}, - {1153, 4}, - {1199, 0}, - {1199, 2}, - {994, 2}, - {994, 3}, - {994, 1}, - {994, 1}, - {994, 2}, - {994, 2}, - {994, 2}, - {994, 2}, - {994, 2}, - {994, 1}, - {994, 1}, - {994, 2}, - {994, 1}, - {833, 1}, - {833, 1}, - {833, 1}, - {882, 0}, - {882, 1}, - {733, 1}, - {733, 3}, - {791, 1}, - {791, 3}, - {912, 2}, - {912, 4}, - {962, 1}, - {962, 3}, - {902, 0}, - {902, 2}, - {1103, 0}, - {1103, 1}, - {1100, 4}, - {1270, 1}, - {1270, 1}, - {1038, 2}, - {1038, 4}, - {1320, 1}, - {1320, 3}, - {1017, 3}, - {1018, 1}, - {1018, 1}, - {858, 1}, - {858, 2}, - {858, 3}, - {858, 4}, - {1002, 4}, - {1002, 4}, - {1002, 5}, - {1002, 2}, - {1002, 3}, - {1002, 1}, - {1002, 2}, - {1127, 1}, - {1110, 1}, - {1055, 2}, - {745, 4}, - {746, 3}, - {747, 7}, - {1312, 0}, - {1312, 7}, - {1312, 5}, - {1311, 0}, - {1311, 1}, - {1311, 1}, - {1311, 1}, + {721, 4}, + {721, 4}, + {721, 3}, + {721, 3}, + {781, 1}, + {781, 1}, + {784, 1}, + {784, 1}, + {813, 0}, + {813, 1}, + {929, 0}, + {929, 1}, + {811, 1}, + {811, 2}, + {715, 1}, + {715, 1}, + {715, 1}, + {715, 1}, + {715, 1}, + {715, 1}, + {715, 1}, + {715, 1}, + {715, 1}, + {715, 1}, + {715, 1}, + {715, 1}, + {715, 1}, + {715, 1}, + {715, 1}, + {715, 1}, + {715, 1}, + {715, 1}, + {715, 1}, + {715, 1}, + {715, 1}, + {715, 1}, + {715, 1}, + {715, 1}, + {715, 1}, + {715, 1}, + {715, 1}, + {715, 1}, + {715, 1}, + {1088, 0}, + {1088, 2}, + {719, 1}, + {719, 1}, + {719, 1}, + {719, 1}, + {718, 1}, + {718, 1}, + {718, 1}, + {718, 1}, + {718, 1}, + {718, 1}, + {713, 4}, + {713, 4}, + {713, 2}, + {713, 3}, + {713, 2}, + {713, 4}, + {713, 6}, + {713, 2}, + {713, 2}, + {713, 2}, + {713, 4}, + {713, 6}, + {713, 4}, + {714, 4}, + {714, 4}, + {714, 6}, + {714, 8}, + {714, 8}, + {714, 6}, + {714, 6}, + {714, 6}, + {714, 6}, + {714, 6}, + {714, 8}, + {714, 8}, + {714, 8}, + {714, 8}, + {714, 4}, + {714, 6}, + {714, 6}, + {714, 7}, + {714, 4}, + {714, 7}, + {714, 7}, + {714, 1}, + {714, 8}, + {1216, 1}, + {1216, 1}, + {1216, 1}, + {1216, 1}, + {716, 1}, + {716, 1}, + {717, 1}, + {717, 1}, + {1318, 1}, + {1318, 1}, + {1318, 1}, + {720, 4}, + {720, 6}, + {720, 1}, + {722, 6}, + {722, 4}, + {722, 4}, + {722, 5}, + {722, 6}, + {722, 5}, + {722, 6}, + {722, 5}, + {722, 6}, + {722, 5}, + {722, 6}, + {722, 5}, + {722, 5}, + {722, 8}, + {722, 6}, + {722, 6}, + {722, 6}, + {722, 6}, + {722, 6}, + {722, 6}, + {722, 6}, + {722, 5}, + {722, 6}, + {722, 7}, + {722, 8}, + {722, 8}, + {722, 9}, + {1255, 0}, + {1255, 2}, + {712, 4}, + {712, 6}, + {1215, 0}, + {1215, 2}, + {1215, 3}, + {819, 1}, + {819, 1}, + {819, 1}, + {819, 1}, + {819, 1}, + {819, 1}, + {819, 1}, + {819, 1}, + {819, 1}, + {819, 1}, + {819, 1}, + {819, 1}, + {800, 1}, + {800, 1}, + {800, 1}, + {800, 1}, + {800, 1}, + {800, 1}, + {800, 1}, + {800, 1}, + {800, 1}, + {800, 1}, + {800, 1}, + {800, 1}, + {800, 1}, + {800, 1}, + {800, 1}, + {800, 1}, + {800, 1}, + {1202, 0}, + {1202, 1}, + {1333, 1}, + {1333, 2}, + {1154, 4}, + {1200, 0}, + {1200, 2}, + {995, 2}, + {995, 3}, + {995, 1}, + {995, 1}, + {995, 2}, + {995, 2}, + {995, 2}, + {995, 2}, + {995, 2}, + {995, 1}, + {995, 1}, + {995, 2}, + {995, 1}, + {834, 1}, + {834, 1}, + {834, 1}, + {883, 0}, + {883, 1}, + {734, 1}, + {734, 3}, + {792, 1}, + {792, 3}, + {913, 2}, + {913, 4}, + {963, 1}, + {963, 3}, + {903, 0}, + {903, 2}, + {1104, 0}, + {1104, 1}, + {1101, 4}, + {1271, 1}, + {1271, 1}, + {1039, 2}, + {1039, 4}, + {1321, 1}, + {1321, 3}, + {1018, 3}, + {1019, 1}, + {1019, 1}, + {859, 1}, + {859, 2}, + {859, 3}, + {859, 4}, + {1003, 4}, + {1003, 4}, + {1003, 5}, + {1003, 2}, + {1003, 3}, + {1003, 1}, + {1003, 2}, + {1128, 1}, + {1111, 1}, + {1056, 2}, + {746, 4}, + {747, 3}, + {748, 7}, {1313, 0}, - {1313, 1}, - {1313, 1}, - {1109, 0}, - {1109, 4}, - {744, 7}, - {744, 6}, - {744, 5}, - {744, 6}, - {744, 6}, - {756, 2}, + {1313, 7}, + {1313, 5}, + {1312, 0}, + {1312, 1}, + {1312, 1}, + {1312, 1}, + {1314, 0}, + {1314, 1}, + {1314, 1}, + {1110, 0}, + {1110, 4}, + {745, 7}, + {745, 6}, + {745, 5}, + {745, 6}, + {745, 6}, + {757, 2}, + {757, 2}, {756, 2}, - {755, 2}, - {755, 3}, - {1158, 3}, - {1158, 1}, - {925, 4}, - {1212, 2}, - {1333, 0}, - {1333, 2}, - {1334, 1}, - {1334, 3}, - {1154, 3}, - {918, 1}, - {1156, 3}, - {1339, 4}, - {1252, 0}, - {1252, 1}, - {1256, 0}, - {1256, 3}, + {756, 3}, + {1159, 3}, + {1159, 1}, + {926, 4}, + {1213, 2}, + {1334, 0}, + {1334, 2}, + {1335, 1}, + {1335, 3}, + {1155, 3}, + {919, 1}, + {1157, 3}, + {1340, 4}, + {1253, 0}, + {1253, 1}, + {1257, 0}, + {1257, 3}, + {1260, 0}, + {1260, 3}, {1259, 0}, - {1259, 3}, - {1258, 0}, - {1258, 2}, - {1337, 1}, - {1337, 1}, - {1337, 1}, - {1336, 1}, - {1336, 1}, - {974, 2}, - {974, 2}, - {974, 2}, - {974, 4}, - {974, 2}, - {1335, 4}, - {1155, 1}, - {1155, 2}, - {1155, 2}, - {1155, 2}, - {1155, 4}, - {761, 0}, - {761, 1}, - {743, 2}, + {1259, 2}, + {1338, 1}, {1338, 1}, {1338, 1}, - {724, 4}, - {724, 4}, - {724, 4}, - {724, 4}, - {724, 4}, - {724, 5}, - {724, 7}, - {724, 7}, - {724, 6}, - {724, 6}, - {724, 9}, - {1089, 0}, - {1089, 3}, - {1089, 3}, + {1337, 1}, + {1337, 1}, + {975, 2}, + {975, 2}, + {975, 2}, + {975, 4}, + {975, 2}, + {1336, 4}, + {1156, 1}, + {1156, 2}, + {1156, 2}, + {1156, 2}, + {1156, 4}, + {762, 0}, + {762, 1}, + {744, 2}, + {1339, 1}, + {1339, 1}, + {725, 4}, + {725, 4}, + {725, 4}, + {725, 4}, + {725, 4}, + {725, 5}, + {725, 7}, + {725, 7}, + {725, 6}, + {725, 6}, + {725, 9}, {1090, 0}, - {1090, 2}, - {880, 0}, - {880, 2}, - {880, 2}, - {1253, 0}, - {1253, 2}, - {1253, 2}, - {1310, 1}, - {885, 1}, - {885, 3}, - {847, 1}, - {847, 4}, - {798, 1}, - {798, 1}, - {797, 6}, - {797, 2}, - {797, 3}, - {855, 0}, - {855, 4}, - {911, 0}, + {1090, 3}, + {1090, 3}, + {1091, 0}, + {1091, 2}, + {881, 0}, + {881, 2}, + {881, 2}, + {1254, 0}, + {1254, 2}, + {1254, 2}, + {1311, 1}, + {886, 1}, + {886, 3}, + {848, 1}, + {848, 4}, + {799, 1}, + {799, 1}, + {798, 6}, + {798, 2}, + {798, 3}, + {856, 0}, + {856, 4}, + {912, 0}, + {912, 1}, {911, 1}, - {910, 1}, - {910, 2}, - {936, 2}, - {936, 2}, - {936, 2}, - {1222, 0}, - {1222, 2}, - {1222, 3}, - {1222, 3}, - {935, 5}, - {852, 0}, - {852, 1}, - {852, 3}, - {852, 1}, - {852, 3}, - {1057, 1}, - {1057, 2}, - {1058, 0}, + {911, 2}, + {937, 2}, + {937, 2}, + {937, 2}, + {1223, 0}, + {1223, 2}, + {1223, 3}, + {1223, 3}, + {936, 5}, + {853, 0}, + {853, 1}, + {853, 3}, + {853, 1}, + {853, 3}, {1058, 1}, - {793, 3}, - {793, 5}, - {793, 7}, - {793, 7}, - {793, 9}, - {793, 4}, - {793, 6}, - {793, 3}, - {793, 5}, - {813, 1}, - {813, 1}, - {1091, 0}, - {1091, 1}, - {818, 1}, - {818, 2}, - {818, 2}, - {1066, 0}, - {1066, 2}, - {877, 1}, - {877, 1}, - {1277, 1}, - {1277, 1}, - {1207, 1}, - {1207, 1}, - {1202, 0}, - {1202, 1}, - {764, 2}, - {764, 4}, - {764, 4}, - {764, 5}, - {824, 0}, - {824, 1}, - {1117, 1}, - {1117, 1}, - {1117, 1}, - {1117, 1}, - {1117, 1}, - {1117, 1}, - {1117, 1}, - {1117, 1}, - {1117, 1}, - {1279, 0}, - {1279, 1}, - {1280, 2}, - {1280, 1}, - {862, 1}, - {913, 0}, - {913, 1}, + {1058, 2}, + {1059, 0}, + {1059, 1}, + {794, 3}, + {794, 5}, + {794, 7}, + {794, 7}, + {794, 9}, + {794, 4}, + {794, 6}, + {794, 3}, + {794, 5}, + {814, 1}, + {814, 1}, + {1092, 0}, + {1092, 1}, + {820, 1}, + {820, 2}, + {820, 2}, + {1067, 0}, + {1067, 2}, + {878, 1}, + {878, 1}, + {1278, 1}, + {1278, 1}, + {1208, 1}, + {1208, 1}, + {1203, 0}, + {1203, 1}, + {765, 2}, + {765, 4}, + {765, 4}, + {765, 5}, + {826, 0}, + {826, 1}, {1118, 1}, {1118, 1}, - {1278, 1}, - {960, 0}, - {960, 1}, + {1118, 1}, + {1118, 1}, + {1118, 1}, + {1118, 1}, + {1118, 1}, + {1118, 1}, + {1118, 1}, + {1280, 0}, + {1280, 1}, + {1281, 2}, + {1281, 1}, + {863, 1}, + {914, 0}, + {914, 1}, + {1119, 1}, + {1119, 1}, + {1279, 1}, + {961, 0}, + {961, 1}, + {885, 0}, + {885, 5}, + {706, 3}, + {706, 3}, + {706, 3}, + {706, 3}, {884, 0}, + {884, 3}, + {884, 3}, + {884, 4}, {884, 5}, - {705, 3}, - {705, 3}, - {705, 3}, - {705, 3}, - {883, 0}, - {883, 3}, - {883, 3}, - {883, 4}, - {883, 5}, - {883, 4}, - {883, 5}, - {883, 5}, - {883, 4}, - {1080, 0}, - {1080, 2}, - {757, 1}, - {757, 1}, - {757, 2}, - {757, 2}, - {754, 3}, + {884, 4}, + {884, 5}, + {884, 5}, + {884, 4}, + {1081, 0}, + {1081, 2}, + {758, 1}, + {758, 1}, + {758, 2}, + {758, 2}, + {755, 3}, + {755, 3}, + {754, 4}, + {754, 4}, + {754, 5}, + {754, 2}, + {754, 2}, {754, 3}, - {753, 4}, - {753, 4}, - {753, 5}, - {753, 2}, - {753, 2}, + {753, 1}, {753, 3}, - {752, 1}, - {752, 3}, - {748, 1}, - {748, 1}, - {1282, 2}, - {1282, 2}, - {1282, 2}, - {961, 1}, - {995, 9}, - {995, 9}, - {860, 2}, - {860, 4}, - {860, 6}, - {860, 4}, - {860, 4}, - {860, 3}, - {860, 6}, - {860, 6}, - {1122, 3}, - {1121, 6}, - {1120, 1}, - {1120, 1}, - {1120, 1}, - {1283, 3}, - {1283, 1}, - {1283, 1}, - {966, 1}, - {966, 3}, - {916, 3}, - {916, 2}, - {916, 2}, - {916, 3}, - {1229, 2}, - {1229, 2}, - {1229, 2}, - {1229, 1}, - {836, 1}, - {836, 1}, - {836, 1}, - {819, 1}, - {819, 1}, - {826, 1}, - {826, 3}, - {897, 1}, - {897, 3}, - {897, 3}, - {973, 3}, - {973, 4}, - {973, 4}, - {973, 4}, - {973, 3}, - {973, 3}, - {973, 2}, - {973, 4}, - {973, 4}, - {973, 2}, - {973, 2}, - {1178, 1}, - {1178, 1}, - {803, 1}, - {803, 1}, - {867, 1}, - {867, 1}, - {1152, 1}, - {1152, 3}, - {723, 1}, - {723, 1}, - {722, 1}, - {706, 1}, - {773, 1}, - {773, 3}, - {773, 2}, - {773, 2}, - {863, 1}, - {863, 3}, - {1095, 1}, - {1095, 4}, - {888, 1}, + {749, 1}, + {749, 1}, + {1283, 2}, + {1283, 2}, + {1283, 2}, + {962, 1}, + {996, 9}, + {996, 9}, + {861, 2}, + {861, 4}, + {861, 6}, + {861, 4}, + {861, 4}, + {861, 3}, + {861, 6}, + {861, 6}, + {861, 3}, + {1123, 3}, + {1122, 6}, + {1121, 1}, + {1121, 1}, + {1121, 1}, + {1284, 3}, + {1284, 1}, + {1284, 1}, + {967, 1}, + {967, 3}, + {917, 3}, + {917, 2}, + {917, 2}, + {917, 3}, + {1230, 2}, + {1230, 2}, + {1230, 2}, + {1230, 1}, + {837, 1}, + {837, 1}, + {837, 1}, + {821, 1}, + {821, 1}, + {827, 1}, + {827, 3}, + {898, 1}, + {898, 3}, + {898, 3}, + {974, 3}, + {974, 4}, + {974, 4}, + {974, 4}, + {974, 3}, + {974, 3}, + {974, 2}, + {974, 4}, + {974, 4}, + {974, 2}, + {974, 2}, + {1179, 1}, + {1179, 1}, + {804, 1}, + {804, 1}, + {868, 1}, + {868, 1}, + {1153, 1}, + {1153, 3}, + {724, 1}, + {724, 1}, + {723, 1}, + {707, 1}, + {774, 1}, + {774, 3}, + {774, 2}, + {774, 2}, + {864, 1}, + {864, 3}, + {1096, 1}, + {1096, 4}, + {889, 1}, + {818, 1}, + {818, 1}, + {797, 3}, + {797, 2}, + {959, 1}, + {959, 1}, {817, 1}, {817, 1}, - {796, 3}, - {796, 2}, - {958, 1}, - {958, 1}, - {816, 1}, - {816, 1}, - {857, 1}, - {857, 3}, - {975, 3}, - {975, 5}, - {975, 6}, - {975, 4}, - {975, 4}, - {975, 5}, - {975, 5}, - {975, 5}, - {975, 6}, - {975, 4}, - {975, 5}, - {975, 6}, - {975, 4}, - {975, 3}, - {975, 3}, - {975, 4}, - {975, 4}, - {975, 5}, - {975, 5}, - {975, 3}, - {975, 3}, - {975, 3}, - {975, 3}, - {975, 3}, - {975, 3}, - {975, 3}, - {975, 3}, - {975, 4}, - {1160, 2}, - {1160, 2}, - {1160, 3}, - {1160, 3}, - {1216, 1}, - {1216, 3}, - {1052, 5}, - {1077, 1}, - {1077, 3}, - {1125, 3}, - {1125, 4}, - {1125, 4}, - {1125, 5}, - {1125, 4}, - {1125, 5}, - {1125, 4}, - {1125, 4}, - {1125, 6}, - {1125, 4}, - {1125, 8}, - {1125, 2}, - {1125, 5}, - {1125, 3}, - {1125, 3}, + {858, 1}, + {858, 3}, + {976, 3}, + {976, 5}, + {976, 6}, + {976, 4}, + {976, 4}, + {976, 5}, + {976, 5}, + {976, 5}, + {976, 6}, + {976, 4}, + {976, 5}, + {976, 6}, + {976, 4}, + {976, 3}, + {976, 3}, + {976, 4}, + {976, 4}, + {976, 5}, + {976, 5}, + {976, 3}, + {976, 3}, + {976, 3}, + {976, 3}, + {976, 3}, + {976, 3}, + {976, 3}, + {976, 3}, + {976, 4}, + {1161, 2}, + {1161, 2}, + {1161, 3}, + {1161, 3}, + {1217, 1}, + {1217, 3}, + {1053, 5}, + {1078, 1}, + {1078, 3}, + {1126, 3}, + {1126, 4}, + {1126, 4}, + {1126, 5}, + {1126, 4}, + {1126, 5}, + {1126, 4}, + {1126, 4}, + {1126, 6}, + {1126, 4}, + {1126, 8}, + {1126, 2}, + {1126, 5}, + {1126, 3}, + {1126, 3}, + {1126, 2}, + {1126, 5}, + {1126, 2}, + {1126, 2}, + {1126, 4}, + {1287, 2}, + {1287, 2}, + {1287, 4}, + {1290, 0}, + {1290, 1}, + {1289, 1}, + {1289, 3}, + {1125, 1}, + {1125, 1}, {1125, 2}, - {1125, 5}, {1125, 2}, {1125, 2}, - {1125, 4}, + {1125, 1}, + {1125, 1}, + {1125, 1}, + {1125, 1}, + {1288, 0}, + {1288, 3}, + {1322, 0}, + {1322, 2}, + {1285, 1}, + {1285, 1}, + {1285, 1}, + {802, 1}, + {802, 1}, + {1291, 1}, + {1291, 1}, + {1291, 1}, + {1291, 1}, + {1291, 3}, + {1291, 3}, + {1291, 3}, + {1291, 3}, + {1291, 5}, + {1291, 4}, + {1291, 5}, + {1291, 5}, + {1291, 1}, + {1291, 5}, + {1291, 1}, + {1291, 2}, + {1291, 2}, + {1291, 2}, + {1291, 1}, + {1291, 2}, + {1291, 2}, + {1291, 2}, + {1291, 2}, + {1291, 2}, + {1291, 2}, + {1291, 2}, + {1291, 1}, + {1291, 1}, + {1291, 1}, + {1291, 1}, + {1291, 1}, + {1291, 1}, + {1291, 1}, + {1291, 1}, + {1291, 1}, + {1291, 1}, + {1291, 2}, + {1291, 1}, + {1291, 1}, + {1291, 1}, + {1291, 1}, + {1291, 2}, + {1286, 0}, {1286, 2}, {1286, 2}, - {1286, 4}, - {1289, 0}, - {1289, 1}, - {1288, 1}, - {1288, 3}, - {1124, 1}, - {1124, 1}, - {1124, 2}, - {1124, 2}, - {1124, 2}, - {1124, 1}, - {1124, 1}, - {1124, 1}, - {1124, 1}, - {1287, 0}, - {1287, 3}, - {1321, 0}, - {1321, 2}, - {1284, 1}, - {1284, 1}, - {1284, 1}, - {800, 1}, - {800, 1}, - {1290, 1}, - {1290, 1}, - {1290, 1}, - {1290, 1}, - {1290, 3}, - {1290, 3}, - {1290, 3}, - {1290, 3}, - {1290, 5}, - {1290, 4}, - {1290, 5}, - {1290, 5}, - {1290, 1}, - {1290, 5}, - {1290, 1}, - {1290, 2}, - {1290, 2}, - {1290, 2}, - {1290, 1}, - {1290, 2}, - {1290, 2}, - {1290, 2}, - {1290, 2}, - {1290, 2}, - {1290, 2}, - {1290, 2}, - {1290, 1}, - {1290, 1}, - {1290, 1}, - {1290, 1}, - {1290, 1}, - {1290, 1}, - {1290, 1}, - {1290, 1}, - {1290, 1}, - {1290, 2}, - {1290, 1}, - {1290, 1}, - {1290, 1}, - {1290, 1}, - {1290, 2}, - {1285, 0}, - {1285, 2}, - {1285, 2}, - {933, 0}, - {933, 1}, - {933, 1}, - {1298, 0}, - {1298, 1}, - {1298, 1}, + {934, 0}, + {934, 1}, + {934, 1}, + {1299, 0}, + {1299, 1}, + {1299, 1}, + {1299, 1}, + {1086, 0}, + {1086, 1}, + {838, 0}, + {838, 2}, + {1127, 2}, + {1047, 3}, + {951, 1}, + {951, 3}, + {1212, 1}, + {1212, 1}, + {1212, 3}, + {1212, 1}, + {1212, 2}, + {1212, 3}, + {1212, 1}, + {1240, 0}, + {1240, 1}, + {1240, 1}, + {1240, 1}, + {1240, 1}, + {1240, 1}, + {833, 0}, + {833, 1}, + {833, 1}, + {1142, 0}, + {1142, 1}, + {965, 0}, + {965, 2}, + {1341, 0}, + {1341, 3}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {1132, 1}, + {916, 1}, + {916, 1}, + {916, 1}, + {916, 1}, + {916, 1}, + {916, 1}, + {916, 1}, + {916, 1}, + {916, 1}, + {916, 1}, + {916, 1}, + {916, 1}, + {916, 1}, + {916, 1}, + {916, 1}, + {822, 1}, + {822, 1}, + {822, 1}, + {822, 1}, + {822, 1}, + {822, 1}, + {822, 1}, + {822, 1}, + {822, 1}, {1298, 1}, - {1085, 0}, - {1085, 1}, - {837, 0}, - {837, 2}, - {1126, 2}, - {1046, 3}, - {950, 1}, - {950, 3}, + {1298, 3}, + {899, 2}, + {997, 1}, + {997, 1}, + {964, 1}, + {964, 1}, + {1140, 1}, + {1140, 3}, + {1309, 0}, + {1309, 3}, + {839, 1}, + {839, 4}, + {839, 4}, + {839, 4}, + {839, 3}, + {839, 4}, + {839, 3}, + {839, 3}, + {839, 3}, + {839, 3}, + {839, 3}, + {839, 3}, + {839, 3}, + {839, 3}, + {839, 1}, + {839, 3}, + {839, 3}, + {839, 3}, + {839, 3}, + {839, 3}, + {839, 3}, + {839, 3}, + {839, 3}, + {839, 3}, + {839, 3}, + {839, 3}, + {839, 3}, + {839, 3}, + {839, 2}, + {839, 2}, + {839, 3}, + {839, 3}, + {839, 5}, + {839, 3}, + {831, 0}, + {831, 1}, + {1134, 1}, + {1134, 1}, + {1014, 0}, + {1014, 1}, + {915, 1}, + {915, 2}, + {915, 3}, + {1258, 0}, + {1258, 1}, + {1148, 3}, + {835, 3}, + {835, 3}, + {835, 3}, + {835, 3}, + {835, 3}, + {835, 3}, + {835, 3}, + {835, 3}, + {835, 3}, + {835, 3}, + {835, 3}, + {835, 3}, + {835, 3}, + {835, 3}, + {1319, 1}, + {1319, 1}, + {1319, 1}, + {1246, 3}, + {1246, 2}, + {1246, 3}, + {1246, 3}, + {1246, 2}, + {1229, 1}, + {1229, 1}, + {1229, 1}, + {1229, 1}, + {1229, 1}, + {1229, 1}, + {1229, 1}, + {1229, 1}, + {1229, 1}, + {1229, 1}, + {1229, 1}, + {1177, 1}, + {1177, 1}, + {1087, 0}, + {1087, 1}, + {1087, 1}, + {1209, 1}, + {1209, 1}, + {1209, 1}, {1211, 1}, {1211, 1}, - {1211, 3}, {1211, 1}, {1211, 2}, - {1211, 3}, - {1211, 1}, - {1239, 0}, - {1239, 1}, - {1239, 1}, - {1239, 1}, - {1239, 1}, - {1239, 1}, - {832, 0}, - {832, 1}, - {832, 1}, - {1141, 0}, - {1141, 1}, - {964, 0}, - {964, 2}, - {1340, 0}, - {1340, 3}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {1131, 1}, - {915, 1}, - {915, 1}, - {915, 1}, - {915, 1}, - {915, 1}, - {915, 1}, - {915, 1}, - {915, 1}, - {915, 1}, - {915, 1}, - {915, 1}, - {915, 1}, - {915, 1}, - {915, 1}, - {915, 1}, - {820, 1}, - {820, 1}, - {820, 1}, - {820, 1}, - {820, 1}, - {820, 1}, - {820, 1}, - {820, 1}, - {820, 1}, - {1297, 1}, - {1297, 3}, - {898, 2}, - {996, 1}, - {996, 1}, - {963, 1}, - {963, 1}, - {1139, 1}, - {1139, 3}, - {1308, 0}, - {1308, 3}, - {838, 1}, - {838, 4}, - {838, 4}, - {838, 4}, - {838, 3}, - {838, 4}, - {838, 3}, - {838, 3}, - {838, 3}, - {838, 3}, - {838, 3}, - {838, 3}, - {838, 3}, - {838, 3}, - {838, 1}, - {838, 3}, - {838, 3}, - {838, 3}, - {838, 3}, - {838, 3}, - {838, 3}, - {838, 3}, - {838, 3}, - {838, 3}, - {838, 3}, - {838, 3}, - {838, 3}, - {838, 3}, - {838, 2}, - {838, 2}, - {838, 3}, - {838, 3}, - {838, 5}, - {838, 3}, - {830, 0}, - {830, 1}, - {1133, 1}, - {1133, 1}, - {1013, 0}, - {1013, 1}, - {914, 1}, - {914, 2}, - {914, 3}, - {1257, 0}, - {1257, 1}, - {1147, 3}, - {834, 3}, - {834, 3}, - {834, 3}, - {834, 3}, - {834, 3}, - {834, 3}, - {834, 3}, - {834, 3}, - {834, 3}, - {834, 3}, - {834, 3}, - {834, 3}, - {834, 3}, - {834, 3}, - {1318, 1}, - {1318, 1}, - {1318, 1}, - {1245, 3}, + {1175, 1}, + {1304, 3}, + {1304, 2}, + {1304, 3}, + {1304, 2}, + {1304, 3}, + {1304, 3}, + {1304, 2}, + {1304, 2}, + {1304, 1}, + {1304, 2}, + {1304, 5}, + {1304, 5}, + {1304, 1}, + {1304, 3}, + {1304, 2}, + {897, 1}, + {897, 1}, + {1245, 1}, {1245, 2}, - {1245, 3}, - {1245, 3}, {1245, 2}, - {1228, 1}, - {1228, 1}, - {1228, 1}, - {1228, 1}, - {1228, 1}, - {1228, 1}, - {1228, 1}, - {1228, 1}, - {1228, 1}, - {1228, 1}, - {1228, 1}, + {1152, 2}, + {1152, 2}, + {1152, 1}, + {1152, 1}, + {1247, 2}, + {1247, 2}, + {1247, 1}, + {1247, 2}, + {1247, 2}, + {1247, 3}, + {1247, 3}, + {1247, 2}, + {1344, 1}, + {1344, 1}, {1176, 1}, + {1176, 2}, {1176, 1}, - {1086, 0}, - {1086, 1}, - {1086, 1}, - {1208, 1}, - {1208, 1}, - {1208, 1}, - {1210, 1}, - {1210, 1}, - {1210, 1}, - {1210, 2}, - {1174, 1}, - {1303, 3}, - {1303, 2}, - {1303, 3}, - {1303, 2}, - {1303, 3}, - {1303, 3}, - {1303, 2}, - {1303, 2}, + {1176, 1}, + {1176, 2}, + {1316, 1}, + {1316, 2}, + {1316, 1}, + {1316, 1}, + {880, 1}, + {880, 1}, + {880, 1}, + {880, 1}, + {1195, 1}, + {1195, 2}, + {1195, 2}, + {1195, 2}, + {1195, 3}, + {760, 3}, + {783, 0}, + {783, 1}, + {871, 1}, + {871, 1}, + {871, 1}, + {872, 0}, + {872, 2}, + {900, 0}, + {900, 1}, + {900, 1}, + {905, 5}, + {1250, 0}, + {1250, 1}, + {795, 0}, + {795, 2}, + {795, 3}, + {1251, 0}, + {1251, 2}, + {770, 2}, + {770, 1}, + {770, 2}, + {1085, 0}, + {1085, 2}, + {1302, 1}, + {1302, 3}, + {966, 1}, + {966, 1}, + {966, 1}, + {1146, 1}, + {1146, 3}, + {735, 1}, + {735, 1}, {1303, 1}, - {1303, 2}, - {1303, 5}, - {1303, 5}, {1303, 1}, - {1303, 3}, - {1303, 2}, - {896, 1}, - {896, 1}, - {1244, 1}, - {1244, 2}, - {1244, 2}, - {1151, 2}, + {1303, 1}, + {773, 1}, + {773, 2}, + {769, 10}, + {769, 8}, {1151, 2}, - {1151, 1}, - {1151, 1}, - {1246, 2}, - {1246, 2}, - {1246, 1}, - {1246, 2}, - {1246, 2}, - {1246, 3}, - {1246, 3}, - {1246, 2}, - {1343, 1}, - {1343, 1}, - {1175, 1}, - {1175, 2}, - {1175, 1}, - {1175, 1}, - {1175, 2}, - {1315, 1}, - {1315, 2}, - {1315, 1}, - {1315, 1}, - {879, 1}, - {879, 1}, - {879, 1}, - {879, 1}, - {1194, 1}, - {1194, 2}, - {1194, 2}, - {1194, 2}, - {1194, 3}, - {759, 3}, - {782, 0}, - {782, 1}, - {870, 1}, - {870, 1}, - {870, 1}, - {871, 0}, - {871, 2}, - {899, 0}, - {899, 1}, - {899, 1}, - {904, 5}, - {1249, 0}, - {1249, 1}, - {794, 0}, - {794, 2}, - {794, 3}, - {1250, 0}, - {1250, 2}, - {769, 2}, - {769, 1}, - {769, 2}, - {1084, 0}, - {1084, 2}, - {1301, 1}, - {1301, 3}, - {965, 1}, - {965, 1}, - {965, 1}, - {1145, 1}, - {1145, 3}, - {734, 1}, - {734, 1}, - {1302, 1}, - {1302, 1}, - {1302, 1}, - {772, 1}, - {772, 2}, - {768, 10}, - {768, 8}, - {1150, 2}, - {786, 2}, - {787, 0}, - {787, 1}, - {1348, 0}, - {1348, 1}, - {1014, 7}, - {1010, 4}, - {985, 7}, - {985, 9}, - {979, 3}, - {1227, 2}, - {1227, 6}, - {886, 2}, - {917, 1}, - {917, 3}, - {1004, 0}, + {787, 2}, + {788, 0}, + {788, 1}, + {1349, 0}, + {1349, 1}, + {1015, 7}, + {1011, 4}, + {986, 7}, + {986, 9}, + {980, 3}, + {1228, 2}, + {1228, 6}, + {887, 2}, + {918, 1}, + {918, 3}, + {1005, 0}, + {1005, 2}, + {1189, 1}, + {1189, 2}, {1004, 2}, - {1188, 1}, - {1188, 2}, - {1003, 2}, - {1003, 2}, - {1003, 2}, - {1003, 2}, - {956, 0}, - {956, 1}, - {955, 2}, - {955, 2}, - {955, 2}, - {955, 2}, - {1275, 1}, - {1275, 3}, - {1275, 2}, - {957, 2}, - {957, 2}, - {957, 2}, - {957, 2}, - {1097, 0}, - {1097, 1}, - {1096, 1}, - {1096, 2}, - {949, 2}, - {949, 2}, - {949, 1}, - {949, 4}, - {949, 2}, - {949, 2}, - {948, 3}, - {1180, 0}, - {1170, 0}, - {1170, 3}, - {1170, 3}, - {1170, 5}, - {1170, 5}, - {1170, 4}, - {1171, 1}, - {1053, 1}, - {1053, 1}, - {1116, 1}, + {1004, 2}, + {1004, 2}, + {1004, 2}, + {957, 0}, + {957, 1}, + {956, 2}, + {956, 2}, + {956, 2}, + {956, 2}, {1276, 1}, {1276, 3}, - {841, 1}, - {841, 1}, - {841, 1}, - {841, 1}, - {841, 1}, - {841, 1}, - {841, 1}, - {841, 1}, - {1005, 7}, - {1021, 5}, - {1021, 7}, - {1119, 5}, - {1119, 7}, - {1051, 9}, - {1049, 7}, - {1050, 4}, - {1157, 0}, - {1157, 3}, - {1157, 3}, - {1157, 3}, - {1157, 3}, - {1157, 3}, - {931, 1}, - {931, 2}, - {959, 1}, - {959, 1}, - {959, 1}, - {959, 3}, - {959, 3}, - {1115, 1}, - {1115, 3}, - {952, 1}, - {952, 4}, - {953, 1}, - {953, 2}, - {953, 1}, - {953, 1}, - {953, 2}, - {953, 2}, - {953, 1}, - {953, 1}, - {953, 1}, - {953, 1}, - {953, 1}, - {953, 1}, - {953, 1}, - {953, 1}, - {953, 1}, - {953, 2}, - {953, 1}, - {953, 2}, - {953, 1}, - {953, 2}, - {953, 2}, - {953, 1}, - {953, 1}, - {953, 1}, - {953, 1}, - {953, 3}, - {953, 2}, - {953, 2}, - {953, 2}, - {953, 2}, - {953, 2}, - {953, 2}, - {953, 2}, - {953, 1}, + {1276, 2}, + {958, 2}, + {958, 2}, + {958, 2}, + {958, 2}, + {1098, 0}, + {1098, 1}, + {1097, 1}, + {1097, 2}, + {950, 2}, + {950, 2}, + {950, 1}, + {950, 4}, + {950, 2}, + {950, 2}, + {949, 3}, + {1181, 0}, + {1171, 0}, + {1171, 3}, + {1171, 3}, + {1171, 5}, + {1171, 5}, + {1171, 4}, + {1172, 1}, + {1054, 1}, + {1054, 1}, + {1117, 1}, + {1277, 1}, + {1277, 3}, + {842, 1}, + {842, 1}, + {842, 1}, + {842, 1}, + {842, 1}, + {842, 1}, + {842, 1}, + {842, 1}, + {1006, 7}, + {1022, 5}, + {1022, 7}, + {1120, 5}, + {1120, 7}, + {1052, 9}, + {1050, 7}, + {1051, 4}, + {1158, 0}, + {1158, 3}, + {1158, 3}, + {1158, 3}, + {1158, 3}, + {1158, 3}, + {932, 1}, + {932, 2}, + {960, 1}, + {960, 1}, + {960, 1}, + {960, 3}, + {960, 3}, + {1116, 1}, + {1116, 3}, {953, 1}, - {1078, 0}, - {1078, 1}, - {1078, 1}, - {1078, 1}, - {1101, 1}, - {1101, 3}, - {1101, 3}, - {1101, 3}, - {1101, 1}, - {1114, 7}, - {1113, 4}, - {854, 15}, - {1220, 0}, - {1220, 3}, - {1179, 0}, - {1179, 3}, - {1071, 0}, - {1071, 1}, - {1044, 0}, - {1044, 2}, - {829, 1}, - {829, 1}, - {1205, 2}, - {1205, 1}, - {1043, 3}, - {1043, 4}, - {1043, 3}, - {1043, 3}, - {848, 1}, - {848, 1}, - {848, 1}, - {939, 0}, - {939, 3}, - {1295, 0}, - {1295, 3}, - {1235, 0}, - {1235, 3}, - {1237, 0}, - {1237, 2}, + {953, 4}, + {954, 1}, + {954, 2}, + {954, 1}, + {954, 1}, + {954, 2}, + {954, 2}, + {954, 1}, + {954, 1}, + {954, 1}, + {954, 1}, + {954, 1}, + {954, 1}, + {954, 1}, + {954, 1}, + {954, 1}, + {954, 2}, + {954, 1}, + {954, 2}, + {954, 1}, + {954, 2}, + {954, 2}, + {954, 1}, + {954, 1}, + {954, 1}, + {954, 1}, + {954, 3}, + {954, 2}, + {954, 2}, + {954, 2}, + {954, 2}, + {954, 2}, + {954, 2}, + {954, 2}, + {954, 1}, + {954, 1}, + {1079, 0}, + {1079, 1}, + {1079, 1}, + {1079, 1}, + {1102, 1}, + {1102, 3}, + {1102, 3}, + {1102, 3}, + {1102, 1}, + {1115, 7}, + {1114, 4}, + {855, 15}, + {1221, 0}, + {1221, 3}, + {1180, 0}, + {1180, 3}, + {1072, 0}, + {1072, 1}, + {1045, 0}, + {1045, 2}, + {830, 1}, + {830, 1}, + {1206, 2}, + {1206, 1}, + {1044, 3}, + {1044, 4}, + {1044, 3}, + {1044, 3}, + {849, 1}, + {849, 1}, + {849, 1}, + {940, 0}, + {940, 3}, + {1296, 0}, + {1296, 3}, + {1236, 0}, {1236, 3}, - {1236, 1}, - {1069, 3}, - {1148, 2}, - {1073, 3}, - {1143, 1}, - {1143, 1}, - {1140, 2}, - {1238, 1}, + {1238, 0}, {1238, 2}, - {1238, 1}, - {1238, 2}, - {1309, 1}, - {1309, 3}, - {1075, 6}, - {1197, 0}, - {1197, 2}, - {1197, 3}, - {1255, 0}, - {1255, 2}, - {1065, 2}, - {1065, 3}, - {1065, 3}, - {1064, 1}, - {1064, 2}, + {1237, 3}, + {1237, 1}, {1070, 3}, - {1025, 5}, - {1009, 7}, - {981, 6}, - {1011, 6}, - {1190, 0}, - {1190, 1}, - {1281, 1}, - {1281, 2}, - {908, 3}, - {908, 3}, - {908, 3}, - {908, 3}, - {908, 3}, - {908, 1}, - {908, 2}, - {908, 3}, - {908, 1}, - {908, 2}, - {908, 3}, - {908, 1}, - {908, 2}, - {908, 1}, - {908, 1}, - {908, 2}, - {809, 1}, - {809, 2}, - {809, 2}, - {1027, 4}, - {983, 5}, - {1162, 1}, - {1162, 2}, - {982, 1}, - {982, 1}, - {982, 3}, - {982, 3}, - {1056, 8}, + {1149, 2}, + {1074, 3}, + {1144, 1}, + {1144, 1}, + {1141, 2}, + {1239, 1}, + {1239, 2}, + {1239, 1}, + {1239, 2}, + {1310, 1}, + {1310, 3}, + {1076, 6}, + {1198, 0}, + {1198, 2}, + {1198, 3}, + {1256, 0}, + {1256, 2}, + {1066, 2}, + {1066, 3}, + {1066, 3}, + {1065, 1}, + {1065, 2}, + {1071, 3}, + {1026, 5}, + {1010, 7}, + {982, 6}, + {1012, 6}, + {1191, 0}, + {1191, 1}, + {1282, 1}, + {1282, 2}, + {909, 3}, + {909, 3}, + {909, 3}, + {909, 3}, + {909, 3}, + {909, 1}, + {909, 2}, + {909, 3}, + {909, 1}, + {909, 2}, + {909, 3}, + {909, 1}, + {909, 2}, + {909, 1}, + {909, 1}, + {909, 2}, + {810, 1}, + {810, 2}, + {810, 2}, + {1028, 4}, + {984, 5}, + {1163, 1}, + {1163, 2}, + {983, 1}, + {983, 1}, + {983, 3}, + {983, 3}, + {1057, 8}, + {1244, 0}, + {1244, 2}, {1243, 0}, - {1243, 2}, - {1242, 0}, - {1242, 3}, + {1243, 3}, + {1269, 0}, + {1269, 2}, {1268, 0}, {1268, 2}, - {1267, 0}, - {1267, 2}, - {1035, 1}, - {971, 1}, - {971, 3}, - {907, 2}, - {1099, 5}, - {1099, 6}, - {1099, 9}, - {1099, 10}, - {1099, 4}, + {1036, 1}, + {972, 1}, + {972, 3}, + {908, 2}, + {1100, 5}, + {1100, 6}, + {1100, 9}, + {1100, 10}, + {1100, 4}, } yyXErrors = map[yyXError]string{} - yyParseTab = [4237][]uint16{ + yyParseTab = [4246][]uint16{ // 0 - {2029, 2029, 48: 2531, 69: 2650, 71: 2510, 80: 2542, 145: 2512, 152: 2540, 2525, 155: 2509, 168: 2536, 202: 2561, 207: 2663, 210: 2505, 220: 2560, 2527, 2659, 2511, 238: 2539, 243: 2515, 248: 2537, 250: 2506, 253: 2543, 271: 2529, 275: 2528, 282: 2541, 284: 2507, 287: 2530, 298: 2520, 470: 2551, 2550, 493: 2658, 498: 2549, 501: 2559, 504: 2535, 522: 2653, 526: 2523, 564: 2534, 566: 2548, 642: 2544, 645: 2662, 649: 2508, 2652, 657: 2503, 665: 2514, 670: 2513, 675: 2558, 682: 2504, 705: 2555, 735: 2516, 744: 2557, 2545, 2546, 2547, 2556, 752: 2554, 2553, 2552, 2519, 2630, 2629, 762: 2517, 768: 2651, 770: 2611, 2622, 2641, 775: 2518, 779: 2577, 795: 2526, 802: 2565, 805: 2656, 840: 2572, 844: 2575, 849: 2654, 854: 2614, 856: 2624, 858: 2619, 2628, 2631, 2532, 926: 2584, 930: 2521, 968: 2657, 975: 2563, 977: 2564, 2567, 2568, 981: 2570, 983: 2569, 985: 2566, 987: 2571, 2573, 2574, 992: 2533, 2610, 995: 2580, 1005: 2588, 2581, 2582, 2583, 2589, 2587, 2590, 2591, 1014: 2586, 2585, 1017: 2576, 2538, 2522, 2592, 2604, 2593, 2594, 2595, 2597, 2601, 2598, 2602, 2603, 2596, 2600, 2599, 1034: 2562, 1038: 2578, 1040: 2579, 2524, 1045: 2606, 2605, 1049: 2608, 2609, 2607, 1055: 2647, 2612, 1063: 2661, 2660, 2613, 1070: 2615, 1073: 2644, 1075: 2648, 1099: 2616, 2617, 1102: 2618, 1104: 2623, 1107: 2620, 2621, 1110: 2646, 2625, 2655, 2627, 2626, 1119: 2632, 1121: 2634, 2633, 2637, 1125: 2638, 1127: 2645, 1130: 2635, 2649, 1135: 2636, 1146: 2639, 2640, 2643, 1150: 2642, 1294: 2501, 1297: 2502}, - {2500}, - {2499, 6735}, - {16: 6687, 132: 6684, 164: 6685, 189: 6688, 257: 6686, 487: 4142, 566: 1840, 582: 6032, 846: 6683, 850: 4141}, - {164: 6668, 566: 6667}, + {2033, 2033, 48: 2535, 69: 2654, 71: 2514, 80: 2546, 145: 2516, 152: 2544, 2529, 155: 2513, 168: 2540, 202: 2565, 207: 2667, 210: 2509, 220: 2564, 2531, 2663, 2515, 238: 2543, 243: 2519, 248: 2541, 250: 2510, 253: 2547, 271: 2533, 275: 2532, 282: 2545, 284: 2511, 287: 2534, 298: 2524, 471: 2555, 2554, 494: 2662, 499: 2553, 502: 2563, 505: 2539, 523: 2657, 527: 2527, 565: 2538, 567: 2552, 643: 2548, 646: 2666, 650: 2512, 2656, 658: 2507, 666: 2518, 671: 2517, 676: 2562, 683: 2508, 706: 2559, 736: 2520, 745: 2561, 2549, 2550, 2551, 2560, 753: 2558, 2557, 2556, 2523, 2634, 2633, 763: 2521, 769: 2655, 771: 2615, 2626, 2645, 776: 2522, 780: 2581, 796: 2530, 803: 2569, 806: 2660, 841: 2576, 845: 2579, 850: 2658, 855: 2618, 857: 2628, 859: 2623, 2632, 2635, 2536, 927: 2588, 931: 2525, 969: 2661, 976: 2567, 978: 2568, 2571, 2572, 982: 2574, 984: 2573, 986: 2570, 988: 2575, 2577, 2578, 993: 2537, 2614, 996: 2584, 1006: 2592, 2585, 2586, 2587, 2593, 2591, 2594, 2595, 1015: 2590, 2589, 1018: 2580, 2542, 2526, 2596, 2608, 2597, 2598, 2599, 2601, 2605, 2602, 2606, 2607, 2600, 2604, 2603, 1035: 2566, 1039: 2582, 1041: 2583, 2528, 1046: 2610, 2609, 1050: 2612, 2613, 2611, 1056: 2651, 2616, 1064: 2665, 2664, 2617, 1071: 2619, 1074: 2648, 1076: 2652, 1100: 2620, 2621, 1103: 2622, 1105: 2627, 1108: 2624, 2625, 1111: 2650, 2629, 2659, 2631, 2630, 1120: 2636, 1122: 2638, 2637, 2641, 1126: 2642, 1128: 2649, 1131: 2639, 2653, 1136: 2640, 1147: 2643, 2644, 2647, 1151: 2646, 1295: 2505, 1298: 2506}, + {2504}, + {2503, 6748}, + {16: 6700, 132: 6697, 164: 6698, 189: 6701, 257: 6699, 488: 4152, 567: 1844, 581: 6045, 847: 6696, 851: 4151}, + {164: 6681, 567: 6680}, // 5 - {566: 6661}, - {566: 6656}, - {376: 6637, 488: 6638, 566: 2354, 1292: 6636}, - {344: 6592, 566: 6591}, - {2322, 2322, 363: 6590, 370: 6589}, + {567: 6674}, + {567: 6669}, + {376: 6650, 489: 6651, 567: 2358, 1293: 6649}, + {344: 6605, 567: 6604}, + {2326, 2326, 363: 6603, 370: 6602}, // 10 - {399: 6578}, - {472: 6577}, - {2289, 2289, 70: 5863, 502: 5861, 795: 5862, 1002: 6576}, - {16: 2079, 81: 2079, 99: 2079, 132: 6353, 140: 2079, 156: 592, 158: 6290, 162: 5470, 164: 6354, 169: 6355, 189: 6357, 5995, 214: 6345, 506: 6352, 566: 2048, 582: 6032, 591: 6347, 645: 2174, 664: 2079, 672: 6349, 846: 6350, 933: 6356, 945: 5469, 1223: 6346, 1261: 6351, 1291: 6348}, - {16: 6297, 99: 6291, 110: 2048, 132: 6295, 156: 592, 158: 6290, 162: 5470, 164: 6292, 168: 1023, 6293, 189: 6298, 5995, 214: 6286, 285: 6294, 566: 2048, 582: 6032, 645: 6288, 846: 6287, 933: 6296, 945: 6289}, + {400: 6591}, + {473: 6590}, + {2293, 2293, 70: 5875, 503: 5873, 796: 5874, 1003: 6589}, + {16: 2083, 81: 2083, 99: 2083, 132: 6366, 140: 2083, 156: 592, 158: 6303, 162: 5480, 164: 6367, 169: 6368, 189: 6370, 6008, 214: 6358, 507: 6365, 567: 2052, 581: 6045, 636: 6360, 646: 2178, 665: 2083, 673: 6362, 847: 6363, 934: 6369, 946: 5479, 1224: 6359, 1262: 6364, 1292: 6361}, + {16: 6310, 99: 6304, 122: 2052, 132: 6308, 156: 592, 158: 6303, 162: 5480, 164: 6305, 168: 1025, 6306, 189: 6311, 6008, 214: 6299, 285: 6307, 567: 2052, 581: 6045, 646: 6301, 847: 6300, 934: 6309, 946: 6302}, // 15 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3544, 774: 6285}, - {2: 842, 842, 842, 842, 842, 8: 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 48: 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 487: 842, 495: 842, 749: 842, 842, 842, 758: 5277, 862: 5278, 913: 6273}, - {2056, 2056}, - {2055, 2055}, - {470: 2551, 498: 2549, 566: 2548, 642: 2544, 650: 2652, 705: 3842, 735: 2516, 744: 3841, 2545, 2546, 2547, 2556, 752: 2554, 3843, 3844, 762: 5063, 768: 5642, 775: 5064}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3550, 775: 6298}, + {2: 844, 844, 844, 844, 844, 8: 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 48: 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 488: 844, 497: 844, 750: 844, 844, 844, 759: 5287, 863: 5288, 914: 6286}, + {2060, 2060}, + {2059, 2059}, + {471: 2555, 499: 2553, 567: 2552, 643: 2548, 651: 2656, 706: 3850, 736: 2520, 745: 3849, 2549, 2550, 2551, 2560, 753: 2558, 3851, 3852, 763: 5073, 769: 5654, 776: 5074}, // 20 - {71: 2510, 145: 2512, 152: 2540, 2525, 155: 2509, 207: 6247, 251: 6246, 470: 2551, 2550, 498: 2549, 501: 6250, 504: 2535, 564: 2534, 566: 2548, 642: 2544, 650: 2652, 705: 6248, 735: 2516, 744: 6249, 2545, 2546, 2547, 2556, 752: 2554, 2553, 2552, 2519, 6256, 6255, 762: 2517, 768: 2651, 770: 6253, 6254, 6252, 775: 2518, 779: 6251, 795: 2526, 805: 6264, 840: 6258, 844: 6259, 854: 6257, 856: 6261, 858: 6262, 6260, 6263, 915: 6245}, - {2: 2024, 2024, 2024, 2024, 2024, 8: 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 48: 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 470: 2024, 2024, 491: 2024, 498: 2024, 504: 2024, 564: 2024, 566: 2024, 642: 2024, 649: 2024, 2024, 657: 2024, 735: 2024}, - {2: 2023, 2023, 2023, 2023, 2023, 8: 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 48: 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 470: 2023, 2023, 491: 2023, 498: 2023, 504: 2023, 564: 2023, 566: 2023, 642: 2023, 649: 2023, 2023, 657: 2023, 735: 2023}, - {2: 2022, 2022, 2022, 2022, 2022, 8: 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 48: 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 470: 2022, 2022, 491: 2022, 498: 2022, 504: 2022, 564: 2022, 566: 2022, 642: 2022, 649: 2022, 2022, 657: 2022, 735: 2022}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 6215, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 470: 2551, 2550, 491: 6214, 498: 2549, 504: 2535, 564: 2534, 566: 2548, 642: 2544, 649: 6216, 2652, 657: 2669, 659: 3875, 2723, 2724, 2722, 705: 2670, 733: 6212, 735: 2516, 744: 2671, 2545, 2546, 2547, 2556, 752: 2554, 2553, 2552, 2519, 2677, 2676, 762: 2517, 768: 2651, 770: 2674, 2675, 2673, 775: 2518, 779: 2672, 802: 2678, 820: 6213}, + {71: 2514, 145: 2516, 152: 2544, 2529, 155: 2513, 207: 6260, 251: 6259, 471: 2555, 2554, 499: 2553, 502: 6263, 505: 2539, 565: 2538, 567: 2552, 643: 2548, 651: 2656, 706: 6261, 736: 2520, 745: 6262, 2549, 2550, 2551, 2560, 753: 2558, 2557, 2556, 2523, 6269, 6268, 763: 2521, 769: 2655, 771: 6266, 6267, 6265, 776: 2522, 780: 6264, 796: 2530, 806: 6277, 841: 6271, 845: 6272, 855: 6270, 857: 6274, 859: 6275, 6273, 6276, 916: 6258}, + {2: 2028, 2028, 2028, 2028, 2028, 8: 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 48: 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 471: 2028, 2028, 492: 2028, 499: 2028, 505: 2028, 565: 2028, 567: 2028, 643: 2028, 650: 2028, 2028, 658: 2028, 736: 2028}, + {2: 2027, 2027, 2027, 2027, 2027, 8: 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 48: 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 471: 2027, 2027, 492: 2027, 499: 2027, 505: 2027, 565: 2027, 567: 2027, 643: 2027, 650: 2027, 2027, 658: 2027, 736: 2027}, + {2: 2026, 2026, 2026, 2026, 2026, 8: 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 48: 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 471: 2026, 2026, 492: 2026, 499: 2026, 505: 2026, 565: 2026, 567: 2026, 643: 2026, 650: 2026, 2026, 658: 2026, 736: 2026}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 6228, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 471: 2555, 2554, 492: 6227, 499: 2553, 505: 2539, 565: 2538, 567: 2552, 643: 2548, 650: 6229, 2656, 658: 2673, 660: 3883, 2727, 2728, 2726, 706: 2674, 734: 6225, 736: 2520, 745: 2675, 2549, 2550, 2551, 2560, 753: 2558, 2557, 2556, 2523, 2681, 2680, 763: 2521, 769: 2655, 771: 2678, 2679, 2677, 776: 2522, 780: 2676, 803: 2682, 822: 6226}, // 25 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 6211, 2723, 2724, 2722}, - {153: 6209}, - {566: 6127, 582: 6032, 846: 6126, 990: 6205}, - {566: 6127, 582: 6032, 846: 6126, 990: 6125}, - {132: 6123}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 6224, 2727, 2728, 2726}, + {153: 6222}, + {567: 6140, 581: 6045, 847: 6139, 991: 6218}, + {567: 6140, 581: 6045, 847: 6139, 991: 6138}, + {132: 6136}, // 30 - {132: 6118}, - {132: 6112}, - {14: 3790, 16: 5958, 28: 5986, 5985, 98: 585, 107: 585, 110: 585, 123: 592, 132: 5947, 139: 592, 158: 5994, 176: 5971, 184: 5956, 190: 5995, 194: 592, 203: 5996, 208: 5981, 585, 245: 5978, 270: 5977, 302: 5970, 308: 5991, 310: 5975, 313: 5957, 320: 5973, 5989, 323: 5964, 331: 5962, 333: 5980, 337: 5968, 339: 5979, 5951, 5988, 343: 5993, 345: 5960, 354: 5952, 362: 5966, 372: 5955, 5954, 379: 5992, 385: 5987, 5984, 5983, 400: 5974, 503: 3791, 566: 5950, 592: 5969, 643: 3789, 645: 5959, 649: 5990, 670: 5949, 769: 5965, 909: 5982, 933: 5972, 938: 5961, 954: 5976, 1016: 5963, 1085: 5953, 1284: 5967, 1290: 5948}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 5936, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 5938, 2723, 2724, 2722, 1271: 5937}, - {2: 842, 842, 842, 842, 842, 8: 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 48: 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 487: 842, 492: 842, 749: 842, 842, 842, 758: 5277, 862: 5278, 913: 5923}, + {132: 6131}, + {132: 6125}, + {14: 3798, 16: 5970, 28: 5999, 5998, 98: 585, 107: 585, 122: 585, 124: 592, 132: 5959, 139: 592, 158: 6007, 176: 5983, 184: 5968, 190: 6008, 194: 592, 203: 6009, 208: 5993, 585, 245: 5990, 270: 5989, 302: 5982, 308: 6004, 310: 5987, 313: 5969, 320: 5985, 6002, 323: 5976, 331: 5974, 333: 5992, 337: 5980, 339: 5991, 5963, 6001, 343: 6006, 345: 5972, 354: 5964, 362: 5978, 372: 5967, 5966, 379: 6005, 383: 5994, 386: 6000, 5997, 5996, 401: 5986, 504: 3799, 567: 5962, 592: 5981, 644: 3797, 646: 5971, 650: 6003, 671: 5961, 770: 5977, 910: 5995, 934: 5984, 939: 5973, 955: 5988, 1017: 5975, 1086: 5965, 1285: 5979, 1291: 5960}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 5948, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 5950, 2727, 2728, 2726, 1272: 5949}, + {2: 844, 844, 844, 844, 844, 8: 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 48: 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 488: 844, 493: 844, 750: 844, 844, 844, 759: 5287, 863: 5288, 914: 5935}, // 35 - {2: 1046, 1046, 1046, 1046, 1046, 8: 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 48: 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 492: 1046, 749: 5282, 5281, 5280, 833: 5283, 882: 5889}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 5884, 2723, 2724, 2722}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 5878, 2723, 2724, 2722}, - {168: 5876}, - {168: 1024}, + {2: 1048, 1048, 1048, 1048, 1048, 8: 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 48: 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 493: 1048, 750: 5292, 5291, 5290, 834: 5293, 883: 5901}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 5896, 2727, 2728, 2726}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 5890, 2727, 2728, 2726}, + {168: 5888}, + {168: 1026}, // 40 - {1022, 1022, 70: 5863, 502: 5861, 646: 5860, 795: 5862, 1002: 5859}, - {1011, 1011}, - {1010, 1010}, - {472: 5858}, - {2: 847, 847, 847, 847, 847, 8: 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 48: 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 5828, 5834, 5835, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 470: 847, 472: 847, 847, 847, 476: 847, 480: 847, 847, 847, 847, 847, 489: 847, 498: 847, 503: 847, 847, 847, 512: 5831, 520: 847, 541: 847, 563: 847, 847, 847, 567: 847, 847, 847, 571: 847, 847, 847, 847, 847, 847, 847, 847, 582: 847, 847, 847, 847, 847, 847, 847, 847, 847, 592: 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 622: 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 644: 847, 647: 3502, 741: 3500, 3501, 749: 5282, 5281, 5280, 758: 5277, 765: 5827, 5830, 5826, 780: 5749, 783: 5824, 833: 5825, 862: 5823, 1117: 5833, 5829, 1279: 5822, 5832}, + {1024, 1024, 70: 5875, 503: 5873, 647: 5872, 796: 5874, 1003: 5871}, + {1013, 1013}, + {1012, 1012}, + {473: 5870}, + {2: 849, 849, 849, 849, 849, 8: 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 48: 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 5840, 5846, 5847, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 471: 849, 473: 849, 849, 849, 477: 849, 481: 849, 849, 849, 849, 849, 490: 849, 499: 849, 504: 849, 849, 849, 513: 5843, 521: 849, 541: 849, 564: 849, 849, 849, 568: 849, 849, 849, 572: 849, 849, 849, 849, 849, 849, 849, 849, 581: 849, 849, 585: 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 637: 849, 849, 849, 645: 849, 648: 3508, 742: 3506, 3507, 750: 5292, 5291, 5290, 759: 5287, 766: 5839, 5842, 5838, 781: 5761, 784: 5836, 834: 5837, 863: 5835, 1118: 5845, 5841, 1280: 5834, 5844}, // 45 - {245, 245, 47: 245, 469: 245, 471: 245, 477: 245, 245, 485: 245, 245, 490: 245, 245, 245, 245, 2683, 5797, 497: 245, 499: 245, 510: 245, 786: 2684, 5798, 1212: 5796}, - {837, 837, 47: 837, 469: 837, 471: 837, 477: 837, 837, 485: 837, 837, 490: 837, 837, 837, 837, 497: 837, 499: 837, 510: 5787, 934: 5789, 960: 5788}, - {1284, 1284, 47: 1284, 469: 1284, 471: 1284, 477: 1284, 1284, 485: 1284, 1284, 490: 1284, 1284, 1284, 1284, 497: 1284, 499: 2686, 763: 2687, 807: 5783}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3875, 2723, 2724, 2722, 733: 5778}, - {573: 3850, 907: 3849, 971: 3848}, + {245, 245, 47: 245, 470: 245, 472: 245, 478: 245, 245, 486: 245, 245, 491: 245, 245, 245, 245, 2687, 497: 5809, 245, 500: 245, 511: 245, 787: 2688, 5810, 1213: 5808}, + {839, 839, 47: 839, 470: 839, 472: 839, 478: 839, 839, 486: 839, 839, 491: 839, 839, 839, 839, 498: 839, 500: 839, 511: 5799, 935: 5801, 961: 5800}, + {1287, 1287, 47: 1287, 470: 1287, 472: 1287, 478: 1287, 1287, 486: 1287, 1287, 491: 1287, 1287, 1287, 1287, 498: 1287, 500: 2690, 764: 2691, 808: 5795}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3883, 2727, 2728, 2726, 734: 5790}, + {574: 3858, 908: 3857, 972: 3856}, // 50 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 5765, 2723, 2724, 2722, 925: 5764, 1158: 5762, 1272: 5763}, - {470: 2551, 2550, 498: 2549, 566: 2548, 642: 2544, 705: 5761, 744: 3835, 2545, 2546, 2547, 2556, 752: 2554, 2553, 2552, 3834, 3837, 3836}, - {818, 818, 47: 818, 469: 818, 471: 818, 478: 818}, - {817, 817, 47: 817, 469: 817, 471: 817, 478: 817}, - {477: 5746, 485: 5747, 5748, 1282: 5745}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 5777, 2727, 2728, 2726, 926: 5776, 1159: 5774, 1273: 5775}, + {471: 2555, 2554, 499: 2553, 567: 2552, 643: 2548, 706: 5773, 745: 3843, 2549, 2550, 2551, 2560, 753: 2558, 2557, 2556, 3842, 3845, 3844}, + {820, 820, 47: 820, 470: 820, 472: 820, 479: 820}, + {819, 819, 47: 819, 470: 819, 472: 819, 479: 819}, + {478: 5758, 486: 5759, 5760, 1283: 5757}, // 55 - {485, 485, 477: 803, 485: 803, 803, 490: 2689, 497: 2690, 499: 2686, 763: 3845, 3846}, - {477: 806, 485: 806, 806}, - {487, 487, 477: 804, 485: 804, 804}, - {245: 5730, 270: 5729}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 5572, 5567, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 5570, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 5576, 2768, 5569, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 5573, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 5574, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 5568, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 5575, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 5571, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 476: 5578, 503: 3791, 565: 5582, 587: 5581, 643: 3789, 659: 5579, 2723, 2724, 2722, 769: 5583, 826: 5580, 973: 5584, 1152: 5577}, + {485, 485, 478: 805, 486: 805, 805, 491: 2693, 498: 2694, 500: 2690, 764: 3853, 3854}, + {478: 808, 486: 808, 808}, + {487, 487, 478: 806, 486: 806, 806}, + {245: 5742, 270: 5741}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 5582, 5577, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 5580, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 5586, 2772, 5579, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 5583, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 5584, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 5578, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 5587, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 5585, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 5581, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 477: 5589, 504: 3799, 566: 5593, 588: 5592, 644: 3797, 660: 5590, 2727, 2728, 2726, 770: 5594, 827: 5591, 974: 5595, 1153: 5588}, // 60 - {15: 5447, 202: 5452, 208: 5450, 210: 5445, 5451, 274: 5449, 314: 5448, 5453, 318: 5446, 334: 5454, 378: 5455, 579: 5444, 861: 5443}, - {20: 564, 110: 564, 123: 564, 136: 4692, 143: 564, 184: 564, 191: 564, 201: 564, 216: 564, 230: 564, 252: 564, 255: 564, 541: 564, 566: 564, 814: 4691, 832: 5416}, + {15: 5457, 202: 5462, 208: 5460, 210: 5455, 5461, 274: 5459, 314: 5458, 5463, 318: 5456, 334: 5464, 378: 5465, 580: 5454, 862: 5453}, + {20: 564, 122: 564, 124: 564, 136: 4702, 143: 564, 184: 564, 191: 564, 201: 564, 216: 564, 230: 564, 252: 564, 255: 564, 541: 564, 567: 564, 815: 4701, 833: 5426}, {555, 555}, {554, 554}, {553, 553}, @@ -6277,32 +6284,32 @@ var ( {467, 467}, {442, 442}, // 150 - {2: 388, 388, 388, 388, 388, 8: 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 48: 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 566: 5413, 1257: 5414}, - {251, 251, 478: 251}, - {2: 842, 842, 842, 842, 842, 8: 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 48: 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 470: 842, 487: 842, 576: 842, 749: 842, 842, 842, 758: 5277, 862: 5278, 913: 5279}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 5275, 2723, 2724, 2722, 811: 5276}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 5120, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 5122, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 5128, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 5124, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 5121, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 5129, 3164, 2893, 3117, 5123, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 5126, 5230, 2805, 3044, 5127, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 5125, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 5131, 493: 5154, 564: 5148, 640: 5152, 642: 5137, 645: 5147, 647: 5141, 650: 5150, 657: 5142, 659: 3447, 2723, 2724, 2722, 665: 5146, 670: 5143, 734: 5130, 5145, 796: 5132, 805: 5136, 849: 5151, 861: 5149, 931: 5133, 952: 5134, 5140, 958: 5135, 5138, 967: 5144, 969: 5153, 1115: 5231}, + {2: 388, 388, 388, 388, 388, 8: 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 48: 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 567: 5423, 1258: 5424}, + {251, 251, 479: 251}, + {2: 844, 844, 844, 844, 844, 8: 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 48: 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 471: 844, 488: 844, 577: 844, 750: 844, 844, 844, 759: 5287, 863: 5288, 914: 5289}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 5285, 2727, 2728, 2726, 812: 5286}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 5130, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 5132, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 5138, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 5134, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 5131, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 5139, 3169, 2897, 3122, 5133, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 5136, 5240, 2809, 3048, 5137, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 5135, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 5141, 494: 5164, 565: 5158, 641: 5162, 643: 5147, 646: 5157, 648: 5151, 651: 5160, 658: 5152, 660: 3453, 2727, 2728, 2726, 666: 5156, 671: 5153, 735: 5140, 5155, 797: 5142, 806: 5146, 850: 5161, 862: 5159, 932: 5143, 953: 5144, 5150, 959: 5145, 5148, 968: 5154, 970: 5163, 1116: 5241}, // 155 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 5120, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 5122, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 5128, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 5124, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 5121, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 5129, 3164, 2893, 3117, 5123, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 5126, 2804, 2805, 3044, 5127, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 5125, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 5131, 493: 5154, 564: 5148, 640: 5152, 642: 5137, 645: 5147, 647: 5141, 650: 5150, 657: 5142, 659: 3447, 2723, 2724, 2722, 665: 5146, 670: 5143, 734: 5130, 5145, 796: 5132, 805: 5136, 849: 5151, 861: 5149, 931: 5133, 952: 5134, 5140, 958: 5135, 5138, 967: 5144, 969: 5153, 1115: 5139}, - {21: 5079, 285: 5080}, - {110: 5066, 566: 5067, 1143: 5078}, - {110: 5066, 566: 5067, 1143: 5065}, - {469: 5053, 490: 61, 1255: 5052}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 5130, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 5132, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 5138, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 5134, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 5131, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 5139, 3169, 2897, 3122, 5133, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 5136, 2808, 2809, 3048, 5137, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 5135, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 5141, 494: 5164, 565: 5158, 641: 5162, 643: 5147, 646: 5157, 648: 5151, 651: 5160, 658: 5152, 660: 3453, 2727, 2728, 2726, 666: 5156, 671: 5153, 735: 5140, 5155, 797: 5142, 806: 5146, 850: 5161, 862: 5159, 932: 5143, 953: 5144, 5150, 959: 5145, 5148, 968: 5154, 970: 5163, 1116: 5149}, + {21: 5089, 285: 5090}, + {122: 5076, 567: 5077, 1144: 5088}, + {122: 5076, 567: 5077, 1144: 5075}, + {470: 5063, 491: 61, 1256: 5062}, // 160 - {26: 5048, 137: 5049, 505: 2697, 729: 5047}, - {26: 56, 137: 56, 216: 5046, 505: 56}, - {304: 5029}, - {377: 2664}, - {329: 2665, 805: 2666}, + {26: 5058, 137: 5059, 506: 2701, 730: 5057}, + {26: 56, 137: 56, 216: 5056, 506: 56}, + {304: 5039}, + {377: 2668}, + {329: 2669, 806: 2670}, // 165 - {930: 2668}, - {472: 2667}, + {931: 2672}, + {473: 2671}, {1, 1}, - {191: 2681, 470: 2551, 2550, 498: 2549, 504: 2535, 564: 2534, 566: 2548, 642: 2544, 649: 2680, 2652, 657: 2669, 705: 2670, 735: 2516, 744: 2671, 2545, 2546, 2547, 2556, 752: 2554, 2553, 2552, 2519, 2677, 2676, 762: 2517, 768: 2651, 770: 2674, 2675, 2673, 775: 2518, 779: 2672, 802: 2678, 820: 2679}, - {487: 4142, 566: 1840, 850: 4141}, + {191: 2685, 471: 2555, 2554, 499: 2553, 505: 2539, 565: 2538, 567: 2552, 643: 2548, 650: 2684, 2656, 658: 2673, 706: 2674, 736: 2520, 745: 2675, 2549, 2550, 2551, 2560, 753: 2558, 2557, 2556, 2523, 2681, 2680, 763: 2521, 769: 2655, 771: 2678, 2679, 2677, 776: 2522, 780: 2676, 803: 2682, 822: 2683}, + {488: 4152, 567: 1844, 851: 4151}, // 170 - {444, 444, 477: 803, 485: 803, 803, 490: 2689, 497: 2690, 499: 2686, 763: 3845, 3846}, - {446, 446, 477: 804, 485: 804, 804}, + {444, 444, 478: 805, 486: 805, 805, 491: 2693, 498: 2694, 500: 2690, 764: 3853, 3854}, + {446, 446, 478: 806, 486: 806, 806}, {451, 451}, {450, 450}, {449, 449}, @@ -6313,4873 +6320,4884 @@ var ( {443, 443}, {5, 5}, // 180 - {191: 4136, 470: 2551, 2550, 498: 2549, 504: 2535, 564: 2534, 566: 2548, 642: 2544, 650: 2652, 657: 2669, 705: 2670, 735: 2516, 744: 2671, 2545, 2546, 2547, 2556, 752: 2554, 2553, 2552, 2519, 2677, 2676, 762: 2517, 768: 2651, 770: 2674, 2675, 2673, 775: 2518, 779: 2672, 802: 2678, 820: 4135}, - {137: 2682}, - {245, 245, 490: 245, 494: 2683, 497: 245, 499: 245, 786: 2684, 2685}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 4134}, - {244, 244, 47: 244, 469: 244, 471: 244, 477: 244, 244, 485: 244, 244, 490: 244, 244, 244, 244, 497: 244, 499: 244, 510: 244, 244, 513: 244}, + {191: 4146, 471: 2555, 2554, 499: 2553, 505: 2539, 565: 2538, 567: 2552, 643: 2548, 651: 2656, 658: 2673, 706: 2674, 736: 2520, 745: 2675, 2549, 2550, 2551, 2560, 753: 2558, 2557, 2556, 2523, 2681, 2680, 763: 2521, 769: 2655, 771: 2678, 2679, 2677, 776: 2522, 780: 2676, 803: 2682, 822: 4145}, + {137: 2686}, + {245, 245, 491: 245, 495: 2687, 498: 245, 500: 245, 787: 2688, 2689}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 4144}, + {244, 244, 47: 244, 470: 244, 472: 244, 478: 244, 244, 486: 244, 244, 491: 244, 244, 244, 244, 498: 244, 500: 244, 511: 244, 244, 514: 244}, // 185 - {1284, 1284, 490: 1284, 497: 1284, 499: 2686, 763: 2687, 807: 2688}, - {655: 2711}, - {1283, 1283, 47: 1283, 125: 1283, 469: 1283, 471: 1283, 477: 1283, 1283, 485: 1283, 1283, 490: 1283, 1283, 1283, 1283, 497: 1283}, - {858, 858, 490: 2689, 497: 2690, 764: 2691, 824: 2692}, - {505: 2697, 575: 2699, 729: 2696, 740: 2698, 877: 2706}, + {1287, 1287, 491: 1287, 498: 1287, 500: 2690, 764: 2691, 808: 2692}, + {657: 2715}, + {1286, 1286, 47: 1286, 125: 1286, 470: 1286, 472: 1286, 478: 1286, 1286, 486: 1286, 1286, 491: 1286, 1286, 1286, 1286, 498: 1286}, + {860, 860, 491: 2693, 498: 2694, 765: 2695, 826: 2696}, + {506: 2701, 576: 2703, 730: 2700, 741: 2702, 878: 2710}, // 190 - {8: 2693, 265: 2694, 1207: 2695}, - {857, 857, 47: 857, 469: 857, 471: 857, 477: 857, 857, 485: 857, 857, 491: 857, 857, 857}, + {8: 2697, 265: 2698, 1208: 2699}, + {859, 859, 47: 859, 470: 859, 472: 859, 478: 859, 859, 486: 859, 859, 492: 859, 859, 859}, {3, 3}, - {505: 866, 521: 866, 573: 866, 575: 866}, - {505: 865, 521: 865, 573: 865, 575: 865}, + {506: 868, 522: 868, 574: 868, 576: 868}, + {506: 867, 522: 867, 574: 867, 576: 867}, // 195 - {505: 2697, 521: 864, 573: 864, 575: 2699, 729: 2696, 740: 2698, 877: 2700, 1202: 2701}, - {1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 13: 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 47: 1959, 1959, 50: 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 81: 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 100: 1959, 103: 1959, 105: 1959, 1959, 108: 1959, 1959, 111: 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 124: 1959, 166: 1959, 178: 1959, 204: 1959, 469: 1959, 1959, 1959, 475: 1959, 1959, 1959, 1959, 1959, 485: 1959, 1959, 1959, 1959, 491: 1959, 1959, 1959, 498: 1959, 500: 1959, 1959, 503: 1959, 1959, 521: 1959, 566: 1959, 573: 1959, 642: 1959, 1959, 645: 1959, 649: 1959}, - {1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 13: 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 50: 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 100: 1957, 103: 1957, 105: 1957, 1957, 108: 1957, 1957, 111: 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 124: 1957, 126: 1957, 1957, 1957, 1957, 166: 1957, 178: 1957, 1957, 183: 1957, 204: 1957, 246: 1957, 469: 1957, 1957, 1957, 475: 1957, 1957, 1957, 1957, 1957, 485: 1957, 1957, 1957, 1957, 490: 1957, 1957, 1957, 1957, 1957, 497: 1957, 1957, 500: 1957, 1957, 503: 1957, 1957, 521: 1957, 566: 1957, 573: 1957, 642: 1957, 1957, 645: 1957, 649: 1957, 653: 1957, 1957, 735: 1957}, - {870, 870, 7: 870, 47: 870, 166: 870, 469: 870, 471: 870, 477: 870, 870, 485: 870, 870, 491: 870, 870, 870, 521: 870, 573: 870}, - {869, 869, 7: 869, 47: 869, 166: 869, 469: 869, 471: 869, 477: 869, 869, 485: 869, 869, 491: 869, 869, 869, 521: 869, 573: 869}, + {506: 2701, 522: 866, 574: 866, 576: 2703, 730: 2700, 741: 2702, 878: 2704, 1203: 2705}, + {1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 13: 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 47: 1963, 1963, 50: 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 81: 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 100: 1963, 1963, 104: 1963, 1963, 108: 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 123: 1963, 166: 1963, 178: 1963, 204: 1963, 470: 1963, 1963, 1963, 476: 1963, 1963, 1963, 1963, 1963, 486: 1963, 1963, 1963, 1963, 492: 1963, 1963, 1963, 499: 1963, 501: 1963, 1963, 504: 1963, 1963, 522: 1963, 567: 1963, 574: 1963, 643: 1963, 1963, 646: 1963, 650: 1963}, + {1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 13: 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 50: 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 100: 1961, 1961, 104: 1961, 1961, 108: 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 123: 1961, 126: 1961, 1961, 1961, 1961, 166: 1961, 178: 1961, 1961, 183: 1961, 204: 1961, 246: 1961, 470: 1961, 1961, 1961, 476: 1961, 1961, 1961, 1961, 1961, 486: 1961, 1961, 1961, 1961, 491: 1961, 1961, 1961, 1961, 1961, 498: 1961, 1961, 501: 1961, 1961, 504: 1961, 1961, 522: 1961, 567: 1961, 574: 1961, 643: 1961, 1961, 646: 1961, 650: 1961, 654: 1961, 1961, 736: 1961}, + {872, 872, 7: 872, 47: 872, 166: 872, 470: 872, 472: 872, 478: 872, 872, 486: 872, 872, 492: 872, 872, 872, 522: 872, 574: 872}, + {871, 871, 7: 871, 47: 871, 166: 871, 470: 871, 472: 871, 478: 871, 871, 486: 871, 871, 492: 871, 871, 871, 522: 871, 574: 871}, // 200 - {521: 863, 573: 863}, - {521: 2703, 573: 2702, 1277: 2704}, - {151: 868}, - {151: 867}, - {151: 2705}, + {522: 865, 574: 865}, + {522: 2707, 574: 2706, 1278: 2708}, + {151: 870}, + {151: 869}, + {151: 2709}, // 205 - {859, 859, 47: 859, 469: 859, 471: 859, 477: 859, 859, 485: 859, 859, 491: 859, 859, 859}, - {862, 862, 7: 2707, 47: 862, 166: 2708, 469: 862, 471: 862, 477: 862, 862, 485: 862, 862, 491: 862, 862, 862}, - {505: 2697, 575: 2699, 729: 2696, 740: 2698, 877: 2710}, - {505: 2697, 575: 2699, 729: 2696, 740: 2698, 877: 2709}, - {860, 860, 47: 860, 469: 860, 471: 860, 477: 860, 860, 485: 860, 860, 491: 860, 860, 860}, + {861, 861, 47: 861, 470: 861, 472: 861, 478: 861, 861, 486: 861, 861, 492: 861, 861, 861}, + {864, 864, 7: 2711, 47: 864, 166: 2712, 470: 864, 472: 864, 478: 864, 864, 486: 864, 864, 492: 864, 864, 864}, + {506: 2701, 576: 2703, 730: 2700, 741: 2702, 878: 2714}, + {506: 2701, 576: 2703, 730: 2700, 741: 2702, 878: 2713}, + {862, 862, 47: 862, 470: 862, 472: 862, 478: 862, 862, 486: 862, 862, 492: 862, 862, 862}, // 210 - {861, 861, 47: 861, 469: 861, 471: 861, 477: 861, 861, 485: 861, 861, 491: 861, 861, 861}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 2715, 866: 3199, 895: 3198}, - {1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 4131, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 471: 1519, 1519, 1519, 1519, 1519, 477: 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 490: 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 499: 1519, 1519, 1519, 1519, 506: 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 542: 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 580: 1519, 648: 1519, 651: 1519, 1519}, - {1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 4128, 1518, 1518, 1518, 1518, 1518, 477: 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 490: 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 499: 1518, 1518, 1518, 1518, 506: 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 542: 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 580: 1518, 648: 1518, 651: 1518, 1518}, - {738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 471: 738, 738, 738, 738, 738, 477: 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 490: 738, 738, 738, 738, 738, 738, 738, 738, 499: 738, 738, 738, 738, 506: 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 542: 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 580: 738, 656: 4126}, + {863, 863, 47: 863, 470: 863, 472: 863, 478: 863, 863, 486: 863, 863, 492: 863, 863, 863}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 2719, 867: 3204, 896: 3203}, + {1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 4141, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 472: 1523, 1523, 1523, 1523, 1523, 478: 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 491: 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 500: 1523, 1523, 1523, 1523, 507: 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 542: 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 583: 1523, 649: 1523, 652: 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, 4138, 1522, 1522, 1522, 1522, 1522, 478: 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 491: 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 500: 1522, 1522, 1522, 1522, 507: 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 542: 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 583: 1522, 649: 1522, 652: 1522, 1522}, + {739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 472: 739, 739, 739, 739, 739, 478: 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 491: 739, 739, 739, 739, 739, 739, 739, 739, 500: 739, 739, 739, 739, 507: 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 542: 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 583: 739, 656: 4136}, // 215 - {1291, 1291, 7: 1291, 47: 1291, 125: 1291, 469: 1291, 471: 1291, 477: 1291, 1291, 485: 1291, 1291, 490: 1291, 1291, 1291, 1291, 497: 1291, 499: 1291, 502: 3302, 506: 3300, 3301, 3299, 3297, 511: 1291, 513: 1291, 521: 1291, 524: 1291, 1291, 4125, 4124, 730: 3298, 3296, 1260: 4123}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 4122}, - {470: 4094}, - {1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 471: 1919, 1919, 475: 1919, 477: 1919, 1919, 480: 1919, 1919, 485: 1919, 1919, 1919, 490: 1919, 1919, 1919, 1919, 1919, 1919, 4077, 1919, 499: 1919, 1919, 1919, 1919, 506: 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 516: 1919, 1919, 1919, 1919, 521: 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 542: 1919, 1919, 4074, 4072, 4071, 4079, 4073, 4075, 4076, 4078, 1187: 4070, 1230: 4069}, - {1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 471: 1894, 1894, 475: 1894, 477: 1894, 1894, 480: 1894, 1894, 485: 1894, 1894, 1894, 490: 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 499: 1894, 1894, 1894, 1894, 506: 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 516: 1894, 1894, 1894, 1894, 521: 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 542: 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894}, + {1294, 1294, 7: 1294, 47: 1294, 125: 1294, 470: 1294, 472: 1294, 478: 1294, 1294, 486: 1294, 1294, 491: 1294, 1294, 1294, 1294, 498: 1294, 500: 1294, 503: 3307, 507: 3305, 3306, 3304, 3302, 512: 1294, 514: 1294, 522: 1294, 525: 1294, 1294, 4135, 4134, 731: 3303, 3301, 1261: 4133}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 4132}, + {471: 4104}, + {1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 472: 1923, 1923, 476: 1923, 478: 1923, 1923, 481: 1923, 1923, 486: 1923, 1923, 1923, 491: 1923, 1923, 1923, 1923, 1923, 4087, 1923, 1923, 500: 1923, 1923, 1923, 1923, 507: 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 517: 1923, 1923, 1923, 1923, 522: 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 543: 1923, 1923, 4084, 4082, 4081, 4089, 4083, 4085, 4086, 4088, 1188: 4080, 1231: 4079}, + {1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 472: 1898, 1898, 476: 1898, 478: 1898, 1898, 481: 1898, 1898, 486: 1898, 1898, 1898, 491: 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 500: 1898, 1898, 1898, 1898, 507: 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 517: 1898, 1898, 1898, 1898, 522: 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 543: 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898}, // 220 - {1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 471: 1867, 1867, 4041, 4040, 1867, 477: 1867, 1867, 480: 1867, 1867, 3643, 3642, 3648, 1867, 1867, 1867, 490: 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 499: 1867, 1867, 1867, 1867, 506: 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 4045, 1867, 1867, 1867, 1867, 3644, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 4044, 542: 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 4042, 3645, 3646, 3639, 3649, 3638, 3647, 3640, 3641, 4051, 4052, 806: 4043, 1106: 4046, 1172: 4048, 1226: 4047, 1233: 4049, 1273: 4050}, - {1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 4037, 1816, 1816, 1816, 1816, 1816, 477: 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 490: 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 499: 1816, 1816, 1816, 1816, 506: 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 542: 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 580: 1816, 648: 1816, 651: 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, 663: 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815}, - {1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 663: 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 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, 663: 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813}, + {1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 472: 1871, 1871, 4051, 4050, 1871, 478: 1871, 1871, 481: 1871, 1871, 3648, 3649, 3654, 1871, 1871, 1871, 491: 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 500: 1871, 1871, 1871, 1871, 507: 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 4055, 1871, 1871, 1871, 1871, 3650, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 542: 4054, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 4052, 3651, 3652, 3645, 3655, 3644, 3653, 3646, 3647, 4061, 4062, 807: 4053, 1107: 4056, 1173: 4058, 1227: 4057, 1234: 4059, 1274: 4060}, + {1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 4047, 1820, 1820, 1820, 1820, 1820, 478: 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 491: 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 500: 1820, 1820, 1820, 1820, 507: 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 542: 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 583: 1820, 649: 1820, 652: 1820, 1820}, + {1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 664: 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 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, 664: 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 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, 664: 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817}, // 225 - {1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 663: 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 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, 663: 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 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, 1223, 1810, 1810, 1810, 1810, 1810, 477: 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 490: 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 499: 1810, 1810, 1810, 1810, 506: 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 542: 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 580: 1810, 648: 1810, 651: 1810, 1810}, - {1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 663: 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 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, 663: 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808}, + {1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 664: 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 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, 664: 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815}, + {1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1225, 1814, 1814, 1814, 1814, 1814, 478: 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 491: 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 500: 1814, 1814, 1814, 1814, 507: 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 542: 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 583: 1814, 649: 1814, 652: 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, 664: 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 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, 664: 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812}, // 230 - {1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 663: 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 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, 663: 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 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, 663: 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805}, - {1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 663: 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 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, 663: 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803}, + {1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 664: 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 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, 664: 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810}, + {1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 664: 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 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, 664: 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 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, 664: 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807}, // 235 - {1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 663: 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 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, 663: 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 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, 663: 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800}, - {1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 4032, 1799, 1799, 1799, 1799, 1799, 477: 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 490: 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 499: 1799, 1799, 1799, 1799, 506: 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 542: 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 580: 1799, 648: 1799, 651: 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, 663: 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798}, + {1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 664: 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 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, 664: 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805}, + {1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 664: 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 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, 4042, 1803, 1803, 1803, 1803, 1803, 478: 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 491: 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 500: 1803, 1803, 1803, 1803, 507: 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 542: 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 583: 1803, 649: 1803, 652: 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, 664: 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802}, // 240 - {1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 663: 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797}, - {1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 663: 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 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, 663: 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795}, - {1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 663: 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 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, 663: 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793}, + {1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 664: 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 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, 664: 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800}, + {1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 664: 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 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, 664: 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 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, 664: 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797}, // 245 - {1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 663: 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 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, 663: 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 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, 663: 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 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, 663: 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 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, 1222, 1788, 1788, 1788, 1788, 1788, 477: 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 490: 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 499: 1788, 1788, 1788, 1788, 506: 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 542: 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 580: 1788, 648: 1788, 651: 1788, 1788}, + {1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 664: 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 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, 664: 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795}, + {1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 664: 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 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, 664: 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793}, + {1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1224, 1792, 1792, 1792, 1792, 1792, 478: 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 491: 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 500: 1792, 1792, 1792, 1792, 507: 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 542: 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 583: 1792, 649: 1792, 652: 1792, 1792}, // 250 - {1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 663: 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 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, 663: 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 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, 663: 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 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, 663: 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 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, 663: 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783}, + {1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 664: 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 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, 664: 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 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, 664: 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 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, 664: 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788}, + {1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 664: 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787}, // 255 - {1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 663: 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 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, 663: 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 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, 663: 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 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, 663: 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 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, 663: 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778}, + {1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 664: 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 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, 664: 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 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, 664: 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 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, 664: 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783}, + {1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 664: 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782}, // 260 - {1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1219, 1777, 4031, 1777, 1777, 1777, 477: 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 490: 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 499: 1777, 1777, 1777, 1777, 506: 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 542: 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 580: 1777, 648: 1777, 651: 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, 663: 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 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, 1217, 1775, 1775, 1775, 1775, 1775, 477: 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 490: 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 499: 1775, 1775, 1775, 1775, 506: 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 542: 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 580: 1775, 648: 1775, 651: 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, 663: 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 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, 663: 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773}, + {1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1221, 1781, 4041, 1781, 1781, 1781, 478: 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 491: 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 500: 1781, 1781, 1781, 1781, 507: 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 542: 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 583: 1781, 649: 1781, 652: 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, 664: 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 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, 1219, 1779, 1779, 1779, 1779, 1779, 478: 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 491: 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 500: 1779, 1779, 1779, 1779, 507: 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 542: 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 583: 1779, 649: 1779, 652: 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, 664: 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778}, + {1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 664: 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777}, // 265 - {1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 663: 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 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, 663: 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 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, 663: 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 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, 663: 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 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, 663: 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768}, + {1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 664: 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 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, 664: 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 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, 664: 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 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, 664: 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773}, + {1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 664: 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772}, // 270 - {1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 663: 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 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, 663: 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 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, 663: 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 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, 663: 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 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, 663: 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763}, + {1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 664: 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 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, 664: 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 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, 664: 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 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, 664: 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768}, + {1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 664: 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767}, // 275 - {1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 663: 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 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, 663: 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 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, 663: 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 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, 663: 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 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, 663: 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758}, + {1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 664: 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 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, 664: 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 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, 664: 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 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, 664: 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763}, + {1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 664: 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762}, // 280 - {1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 663: 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 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, 663: 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 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, 663: 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 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, 663: 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 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, 663: 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753}, + {1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 664: 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 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, 664: 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 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, 664: 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 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, 664: 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758}, + {1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 664: 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757}, // 285 - {1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1213, 1752, 1752, 1752, 1752, 1752, 477: 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 490: 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 499: 1752, 1752, 1752, 1752, 506: 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 542: 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 580: 1752, 648: 1752, 651: 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, 663: 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 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, 663: 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 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, 663: 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 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, 663: 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748}, + {1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1215, 1756, 1756, 1756, 1756, 1756, 478: 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 491: 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 500: 1756, 1756, 1756, 1756, 507: 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 542: 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 583: 1756, 649: 1756, 652: 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, 664: 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 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, 664: 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 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, 664: 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753}, + {1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 664: 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752}, // 290 - {1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 663: 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 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, 1216, 1746, 1746, 1746, 1746, 1746, 477: 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 490: 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 499: 1746, 1746, 1746, 1746, 506: 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 542: 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 580: 1746, 648: 1746, 651: 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, 663: 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 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, 663: 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 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, 663: 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743}, + {1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 664: 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 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, 1218, 1750, 1750, 1750, 1750, 1750, 478: 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 491: 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 500: 1750, 1750, 1750, 1750, 507: 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 542: 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 583: 1750, 649: 1750, 652: 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, 664: 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 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, 664: 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748}, + {1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 664: 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747}, // 295 - {1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 663: 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 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, 663: 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 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, 663: 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 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, 663: 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 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, 663: 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738}, + {1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 664: 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 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, 664: 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 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, 664: 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 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, 664: 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743}, + {1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 664: 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742}, // 300 - {1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 663: 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 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, 4028, 1736, 1736, 1736, 1736, 1736, 477: 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 490: 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 499: 1736, 1736, 1736, 1736, 506: 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 542: 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 580: 1736, 648: 1736, 651: 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, 663: 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 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, 663: 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 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, 663: 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733}, + {1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 664: 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 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, 4038, 1740, 1740, 1740, 1740, 1740, 478: 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 491: 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 500: 1740, 1740, 1740, 1740, 507: 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 542: 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 583: 1740, 649: 1740, 652: 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, 664: 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 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, 664: 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738}, + {1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 664: 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737}, // 305 - {1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 663: 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 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, 663: 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 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, 663: 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 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, 663: 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 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, 663: 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728}, + {1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 664: 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 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, 664: 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 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, 664: 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 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, 664: 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733}, + {1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 664: 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732}, // 310 - {1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 663: 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 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, 663: 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 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, 663: 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 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, 663: 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 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, 663: 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723}, + {1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 664: 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 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, 664: 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 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, 664: 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 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, 664: 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728}, + {1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 664: 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727}, // 315 - {1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 663: 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 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, 663: 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 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, 663: 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 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, 663: 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 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, 663: 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718}, + {1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 664: 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 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, 664: 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 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, 664: 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 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, 664: 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723}, + {1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 664: 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722}, // 320 - {1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 663: 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 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, 663: 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 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, 663: 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 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, 663: 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 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, 663: 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713}, + {1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 664: 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 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, 664: 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 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, 664: 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 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, 664: 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718}, + {1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 664: 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717}, // 325 - {1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 663: 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 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, 1200, 1711, 4027, 1711, 1711, 1711, 477: 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 490: 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 499: 1711, 1711, 1711, 1711, 506: 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 542: 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 580: 1711, 648: 1711, 651: 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, 1199, 1710, 4026, 1710, 1710, 1710, 477: 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 490: 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 499: 1710, 1710, 1710, 1710, 506: 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 542: 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 580: 1710, 648: 1710, 651: 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, 663: 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 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, 663: 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708}, + {1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 664: 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 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, 1202, 1715, 4037, 1715, 1715, 1715, 478: 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 491: 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 500: 1715, 1715, 1715, 1715, 507: 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 542: 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 583: 1715, 649: 1715, 652: 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, 1201, 1714, 4036, 1714, 1714, 1714, 478: 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 491: 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 500: 1714, 1714, 1714, 1714, 507: 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 542: 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 583: 1714, 649: 1714, 652: 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, 664: 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713}, + {1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 664: 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712}, // 330 - {1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1198, 1707, 1707, 1707, 1707, 1707, 477: 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 490: 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 499: 1707, 1707, 1707, 1707, 506: 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 542: 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 580: 1707, 648: 1707, 651: 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, 663: 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 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, 663: 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 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, 663: 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 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, 663: 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703}, + {1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1200, 1711, 1711, 1711, 1711, 1711, 478: 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 491: 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 500: 1711, 1711, 1711, 1711, 507: 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 542: 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 583: 1711, 649: 1711, 652: 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, 664: 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 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, 664: 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 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, 664: 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708}, + {1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 664: 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707}, // 335 - {1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1195, 1702, 1702, 1702, 1702, 1702, 477: 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 490: 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 499: 1702, 1702, 1702, 1702, 506: 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 542: 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 580: 1702, 648: 1702, 651: 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, 663: 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 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, 1196, 1700, 1700, 1700, 1700, 1700, 477: 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 490: 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 499: 1700, 1700, 1700, 1700, 506: 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 542: 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 580: 1700, 648: 1700, 651: 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, 4016, 1699, 1699, 1699, 1699, 1699, 477: 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 490: 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 499: 1699, 1699, 1699, 1699, 506: 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 542: 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 580: 1699, 648: 1699, 651: 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, 663: 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698}, + {1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1197, 1706, 1706, 1706, 1706, 1706, 478: 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 491: 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 500: 1706, 1706, 1706, 1706, 507: 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 542: 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 583: 1706, 649: 1706, 652: 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, 664: 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 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, 1198, 1704, 1704, 1704, 1704, 1704, 478: 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 491: 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 500: 1704, 1704, 1704, 1704, 507: 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 542: 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 583: 1704, 649: 1704, 652: 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, 4026, 1703, 1703, 1703, 1703, 1703, 478: 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 491: 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 500: 1703, 1703, 1703, 1703, 507: 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 542: 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 583: 1703, 649: 1703, 652: 1703, 1703}, + {1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 664: 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702}, // 340 - {1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 663: 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 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, 1197, 1696, 1696, 1696, 1696, 1696, 477: 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 490: 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 499: 1696, 1696, 1696, 1696, 506: 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 542: 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 580: 1696, 648: 1696, 651: 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, 663: 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 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, 1220, 1694, 1694, 1694, 1694, 1694, 477: 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 490: 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 499: 1694, 1694, 1694, 1694, 506: 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 542: 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 580: 1694, 648: 1694, 651: 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, 663: 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693}, + {1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 664: 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 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, 1199, 1700, 1700, 1700, 1700, 1700, 478: 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 491: 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 500: 1700, 1700, 1700, 1700, 507: 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 542: 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 583: 1700, 649: 1700, 652: 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, 664: 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 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, 1222, 1698, 1698, 1698, 1698, 1698, 478: 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 491: 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 500: 1698, 1698, 1698, 1698, 507: 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 542: 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 583: 1698, 649: 1698, 652: 1698, 1698}, + {1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 664: 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697}, // 345 - {1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 663: 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 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, 663: 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 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, 663: 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 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, 663: 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 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, 663: 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688}, + {1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 664: 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 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, 664: 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 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, 664: 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 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, 664: 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693}, + {1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 664: 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692}, // 350 - {1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 663: 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687}, - {1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 663: 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 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, 663: 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 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, 663: 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 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, 663: 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683}, + {1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 664: 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 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, 664: 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 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, 664: 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 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, 664: 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688}, + {1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 664: 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687}, // 355 - {1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 663: 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 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, 1207, 1681, 1681, 1681, 1681, 1681, 477: 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 490: 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 499: 1681, 1681, 1681, 1681, 506: 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 542: 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 580: 1681, 648: 1681, 651: 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, 663: 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 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, 663: 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 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, 663: 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678}, + {1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 664: 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 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, 1209, 1685, 1685, 1685, 1685, 1685, 478: 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 491: 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 500: 1685, 1685, 1685, 1685, 507: 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 542: 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 583: 1685, 649: 1685, 652: 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, 664: 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 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, 664: 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683}, + {1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 664: 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682}, // 360 - {1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 663: 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 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, 663: 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 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, 663: 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 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, 663: 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 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, 663: 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673}, + {1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 664: 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 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, 664: 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 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, 664: 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 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, 664: 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678}, + {1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 664: 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677}, // 365 - {1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 663: 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 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, 663: 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 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, 663: 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 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, 663: 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669}, - {1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 663: 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668}, + {1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 664: 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 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, 664: 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 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, 664: 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 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, 664: 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673}, + {1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 664: 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672}, // 370 - {1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 663: 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 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, 663: 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 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, 663: 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 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, 663: 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664}, - {1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 663: 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663}, + {1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 664: 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 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, 664: 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 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, 664: 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669}, + {1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 664: 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668}, + {1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 664: 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667}, // 375 - {1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 663: 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 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, 663: 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 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, 663: 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 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, 663: 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 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, 1204, 1658, 1658, 1658, 1658, 1658, 477: 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 490: 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 499: 1658, 1658, 1658, 1658, 506: 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 542: 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 580: 1658, 648: 1658, 651: 1658, 1658}, + {1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 664: 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 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, 664: 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 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, 664: 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664}, + {1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 664: 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663}, + {1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1206, 1662, 1662, 1662, 1662, 1662, 478: 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 491: 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 500: 1662, 1662, 1662, 1662, 507: 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 542: 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 583: 1662, 649: 1662, 652: 1662, 1662}, // 380 - {1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 663: 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 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, 663: 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 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, 663: 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 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, 663: 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 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, 663: 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653}, + {1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 664: 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 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, 664: 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 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, 664: 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 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, 664: 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658}, + {1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 664: 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657}, // 385 - {1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 663: 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 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, 663: 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 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, 663: 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650}, - {1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 663: 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649}, - {1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 663: 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648}, + {1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 664: 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 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, 664: 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 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, 664: 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 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, 664: 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653}, + {1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 664: 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652}, // 390 - {1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 663: 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 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, 663: 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 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, 663: 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 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, 663: 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 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, 663: 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643}, + {1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 664: 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 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, 664: 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650}, + {1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 664: 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649}, + {1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 664: 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648}, + {1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 664: 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647}, // 395 - {1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 663: 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 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, 1202, 1641, 1641, 1641, 1641, 1641, 477: 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 490: 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 499: 1641, 1641, 1641, 1641, 506: 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 542: 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 580: 1641, 648: 1641, 651: 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, 1221, 1640, 1640, 1640, 1640, 1640, 477: 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 490: 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 499: 1640, 1640, 1640, 1640, 506: 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 542: 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 580: 1640, 648: 1640, 651: 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, 1209, 1639, 1639, 1639, 1639, 1639, 477: 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 490: 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 499: 1639, 1639, 1639, 1639, 506: 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 542: 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 580: 1639, 648: 1639, 651: 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, 663: 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638}, + {1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 664: 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 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, 1204, 1645, 1645, 1645, 1645, 1645, 478: 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 491: 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 500: 1645, 1645, 1645, 1645, 507: 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 542: 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 583: 1645, 649: 1645, 652: 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, 1223, 1644, 1644, 1644, 1644, 1644, 478: 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 491: 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 500: 1644, 1644, 1644, 1644, 507: 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 542: 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 583: 1644, 649: 1644, 652: 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, 1211, 1643, 1643, 1643, 1643, 1643, 478: 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 491: 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 500: 1643, 1643, 1643, 1643, 507: 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 542: 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 583: 1643, 649: 1643, 652: 1643, 1643}, + {1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 664: 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642}, // 400 - {1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 663: 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637}, - {1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 663: 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 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, 1211, 1635, 1635, 1635, 1635, 1635, 477: 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 490: 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 499: 1635, 1635, 1635, 1635, 506: 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 542: 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 580: 1635, 648: 1635, 651: 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, 1210, 1634, 1634, 1634, 1634, 1634, 477: 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 490: 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 499: 1634, 1634, 1634, 1634, 506: 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 542: 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 580: 1634, 648: 1634, 651: 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, 663: 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633}, + {1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 664: 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 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, 664: 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 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, 1213, 1639, 1639, 1639, 1639, 1639, 478: 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 491: 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 500: 1639, 1639, 1639, 1639, 507: 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 542: 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 583: 1639, 649: 1639, 652: 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, 1212, 1638, 1638, 1638, 1638, 1638, 478: 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 491: 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 500: 1638, 1638, 1638, 1638, 507: 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 542: 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 583: 1638, 649: 1638, 652: 1638, 1638}, + {1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 664: 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637}, // 405 - {1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 663: 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 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, 663: 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 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, 663: 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 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, 663: 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 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, 1201, 1628, 1628, 1628, 1628, 1628, 477: 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 490: 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 499: 1628, 1628, 1628, 1628, 506: 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 542: 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 580: 1628, 648: 1628, 651: 1628, 1628}, + {1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 664: 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 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, 664: 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635}, + {1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 664: 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 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, 664: 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633}, + {1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1203, 1632, 1632, 1632, 1632, 1632, 478: 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 491: 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 500: 1632, 1632, 1632, 1632, 507: 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 542: 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 583: 1632, 649: 1632, 652: 1632, 1632}, // 410 - {1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 663: 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 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, 663: 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 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, 663: 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 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, 663: 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 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, 663: 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623}, + {1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 664: 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 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, 664: 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, 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, 664: 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 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, 664: 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628}, + {1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 664: 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627}, // 415 - {1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 663: 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 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, 663: 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 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, 663: 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 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, 663: 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 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, 663: 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618}, + {1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 664: 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 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, 664: 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 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, 664: 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 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, 664: 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623}, + {1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 664: 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622}, // 420 - {1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 663: 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 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, 663: 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616}, - {1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 663: 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 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, 663: 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614}, - {1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 663: 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613}, + {1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 664: 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 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, 664: 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 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, 664: 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 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, 664: 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618}, + {1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 664: 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617}, // 425 - {1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 663: 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 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, 663: 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 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, 663: 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 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, 663: 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 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, 663: 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608}, + {1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 664: 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616}, + {1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 664: 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 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, 664: 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614}, + {1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 664: 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613}, + {1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 664: 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612}, // 430 - {1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 663: 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 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, 663: 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 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, 663: 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 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, 663: 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 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, 663: 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603}, + {1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 664: 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 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, 664: 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 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, 664: 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 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, 664: 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608}, + {1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 664: 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607}, // 435 - {1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 663: 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 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, 663: 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 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, 663: 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 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, 663: 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 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, 663: 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598}, + {1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 664: 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 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, 664: 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 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, 664: 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 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, 664: 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603}, + {1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 664: 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602}, // 440 - {1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 663: 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 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, 663: 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 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, 663: 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 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, 663: 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 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, 663: 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593}, + {1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 664: 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 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, 664: 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 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, 664: 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 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, 664: 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598}, + {1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 664: 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597}, // 445 - {1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 663: 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 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, 663: 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 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, 663: 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 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, 663: 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 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, 663: 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588}, + {1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 664: 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 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, 664: 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 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, 664: 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 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, 664: 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593}, + {1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 664: 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592}, // 450 - {1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 663: 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 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, 663: 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 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, 663: 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 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, 663: 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 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, 663: 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583}, + {1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 664: 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 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, 664: 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 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, 664: 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 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, 664: 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588}, + {1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 664: 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587}, // 455 - {1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 663: 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 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, 663: 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 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, 663: 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 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, 663: 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 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, 663: 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578}, + {1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 664: 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 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, 664: 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 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, 664: 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 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, 664: 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 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, 664: 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582}, // 460 - {1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 663: 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 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, 663: 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 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, 663: 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 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, 663: 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 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, 663: 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573}, + {1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 664: 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 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, 664: 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 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, 664: 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 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, 664: 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578}, + {1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 664: 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577}, // 465 - {1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 663: 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 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, 663: 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571}, - {1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 663: 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570}, - {1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 663: 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569}, - {1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 663: 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568}, + {1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 664: 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 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, 664: 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 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, 664: 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 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, 664: 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 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, 664: 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572, 1572}, // 470 - {1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 663: 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 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, 663: 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566}, - {1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 663: 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 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, 663: 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564}, - {1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 663: 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563}, + {1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 664: 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571}, + {1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 664: 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570}, + {1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 664: 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569}, + {1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 664: 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568}, + {1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 664: 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567}, // 475 - {1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 663: 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562}, - {1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 663: 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561}, - {1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 663: 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560}, - {1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 663: 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559}, - {1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 663: 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558}, + {1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 664: 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566}, + {1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 664: 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 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, 664: 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564}, + {1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 664: 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563}, + {1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 664: 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562}, // 480 - {1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 663: 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557}, - {1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 663: 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556}, - {1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 663: 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555}, - {1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 663: 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554}, - {1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 663: 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553}, + {1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 664: 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561}, + {1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 664: 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560}, + {1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 664: 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559}, + {1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 664: 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558}, + {1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 664: 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557}, // 485 - {1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 663: 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552}, - {1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 663: 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551}, - {1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 663: 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550}, - {1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 663: 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549}, - {1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 663: 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548}, + {1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 664: 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556}, + {1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 664: 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555}, + {1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 664: 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554}, + {1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 664: 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553}, + {1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 664: 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552}, // 490 - {1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 663: 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547}, - {1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 663: 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546}, - {1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 663: 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545}, - {1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 663: 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544}, - {1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 663: 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543}, + {1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 664: 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551}, + {1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 664: 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550}, + {1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 664: 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549}, + {1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 664: 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548}, + {1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 664: 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547}, // 495 - {1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 663: 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542}, - {1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 663: 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541}, - {1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 663: 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540}, - {1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 663: 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539}, - {1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 663: 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538}, + {1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 664: 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546}, + {1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 664: 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545}, + {1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 664: 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544}, + {1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 664: 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543}, + {1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 664: 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542}, // 500 - {1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 663: 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537}, - {1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 663: 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536}, - {1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 663: 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 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, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 663: 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 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, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 663: 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533}, + {1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 664: 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541}, + {1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 664: 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540}, + {1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 664: 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539}, + {1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 664: 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538}, + {1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 664: 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537}, // 505 - {1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 663: 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 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, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 663: 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 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, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 663: 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 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, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 663: 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529}, - {1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 663: 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528}, + {1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 664: 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536}, + {1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 664: 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 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, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 664: 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 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, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 664: 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533}, + {1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 664: 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532}, // 510 - {1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 663: 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 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, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 663: 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 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, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 663: 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 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, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 663: 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524}, - {1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 663: 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523}, + {1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 664: 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 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, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 664: 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 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, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 664: 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529}, + {1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 664: 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528}, + {1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 664: 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527}, // 515 - {1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 663: 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 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, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 663: 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 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, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 663: 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520}, - {1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 4013, 1517, 1517, 1517, 1517, 1517, 477: 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 490: 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 499: 1517, 1517, 1517, 1517, 506: 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 542: 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 580: 1517, 648: 1517, 651: 1517, 1517}, - {1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 4002, 1516, 1516, 1516, 1516, 1516, 477: 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 490: 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 499: 1516, 1516, 1516, 1516, 506: 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 542: 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 580: 1516, 648: 1516, 651: 1516, 1516}, + {1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 664: 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 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, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 664: 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 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, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 664: 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524}, + {1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 4023, 1521, 1521, 1521, 1521, 1521, 478: 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 491: 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 500: 1521, 1521, 1521, 1521, 507: 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 542: 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 583: 1521, 649: 1521, 652: 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, 4012, 1520, 1520, 1520, 1520, 1520, 478: 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 491: 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 500: 1520, 1520, 1520, 1520, 507: 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 542: 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 583: 1520, 649: 1520, 652: 1520, 1520}, // 520 - {1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 663: 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515}, - {1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 663: 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514}, - {1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 663: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513}, - {1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 663: 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512}, - {1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 663: 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511}, + {1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 664: 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519}, + {1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 664: 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 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, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 664: 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517}, + {1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 664: 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 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, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 664: 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515}, // 525 - {1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 663: 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510}, - {1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 663: 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509}, - {1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 663: 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508}, - {1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 663: 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507}, - {1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 663: 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506}, + {1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 664: 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514}, + {1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 664: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513}, + {1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 664: 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512}, + {1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 664: 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511}, + {1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 664: 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510}, // 530 - {1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 663: 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505}, - {1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 663: 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504}, - {1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 663: 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503}, - {1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 663: 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502}, - {1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 663: 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501}, + {1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 664: 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509}, + {1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 664: 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508}, + {1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 664: 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507}, + {1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 664: 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506}, + {1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 664: 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505}, // 535 - {1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 663: 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500}, - {1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 663: 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499}, - {1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 663: 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498}, - {1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 663: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497}, - {1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 663: 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496}, + {1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 664: 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504}, + {1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 664: 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503}, + {1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 664: 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502}, + {1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 664: 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501}, + {1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 664: 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500}, // 540 - {1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 663: 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495}, - {1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 663: 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494}, - {1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 663: 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493}, - {1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 663: 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492}, - {1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 663: 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491}, + {1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 664: 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499}, + {1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 664: 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498}, + {1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 664: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497}, + {1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 664: 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496}, + {1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 664: 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495}, // 545 - {1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 663: 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490}, - {1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 663: 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489}, - {1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 663: 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488}, - {1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 663: 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487}, - {1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 663: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486}, + {1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 664: 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494}, + {1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 664: 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493}, + {1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 664: 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492}, + {1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 664: 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491}, + {1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 664: 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490}, // 550 - {1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 663: 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 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, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 663: 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484}, - {1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 663: 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483}, - {1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 663: 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482}, - {1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 663: 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481}, + {1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 664: 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489}, + {1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 664: 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488}, + {1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 664: 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487}, + {1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 664: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 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, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 664: 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485}, // 555 - {1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 663: 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 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, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 663: 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 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, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 663: 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478}, - {1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 663: 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 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, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 663: 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476}, + {1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 664: 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484}, + {1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 664: 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483}, + {1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 664: 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482}, + {1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 664: 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 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, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 664: 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480}, // 560 - {1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 663: 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475}, - {1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 663: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474}, - {1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 663: 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473}, - {1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 663: 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 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, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 663: 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471}, + {1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 664: 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 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, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 664: 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478}, + {1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 664: 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 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, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 664: 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 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, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 664: 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475}, // 565 - {1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 663: 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 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, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 663: 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469}, - {1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 663: 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468}, - {1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 663: 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467}, - {1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 663: 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466}, + {1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 664: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474}, + {1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 664: 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473}, + {1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 664: 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 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, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 664: 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 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, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 664: 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470}, // 570 - {1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 663: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465}, - {1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 663: 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464}, - {1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 663: 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463}, - {1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 663: 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462}, - {1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 663: 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461}, + {1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 664: 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469}, + {1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 664: 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468}, + {1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 664: 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467}, + {1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 664: 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466}, + {1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 664: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465}, // 575 - {1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 663: 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460}, - {1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 663: 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459}, - {1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 663: 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458}, - {1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 663: 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457}, - {1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 663: 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456}, + {1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 664: 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464}, + {1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 664: 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463}, + {1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 664: 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462}, + {1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 664: 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461}, + {1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 664: 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460}, // 580 - {1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 663: 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455}, - {1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 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}, - {1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 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}, - {1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 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}, - {1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 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}, + {1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 664: 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459}, + {1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 664: 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458}, + {1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 664: 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457}, + {1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 664: 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456}, + {1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 664: 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455}, // 585 - {1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 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}, - {1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 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}, - {1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 663: 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448}, - {1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 663: 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447}, - {1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 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}, + {1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 664: 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454}, + {1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 664: 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453}, + {1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 664: 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452}, + {1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 664: 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451}, + {1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 664: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450}, // 590 - {1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 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}, - {1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 663: 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444}, - {1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 663: 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443}, - {1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 663: 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442}, - {1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 663: 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441}, + {1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 664: 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449}, + {1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 664: 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448}, + {1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 664: 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447}, + {1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 664: 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446}, + {1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 664: 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445}, // 595 - {1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 663: 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440}, - {1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 663: 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439}, - {1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 663: 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438}, - {1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 663: 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437}, - {1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 663: 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436}, + {1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 664: 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444}, + {1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 664: 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443}, + {1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 664: 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442}, + {1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 664: 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441}, + {1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 664: 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440}, // 600 - {1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 663: 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435}, - {1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 663: 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434}, - {1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 663: 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433}, - {1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1140, 1432, 1432, 1432, 1432, 1432, 477: 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 490: 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 499: 1432, 1432, 1432, 1432, 506: 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 542: 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 580: 1432, 648: 1432, 651: 1432, 1432}, - {1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 663: 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431}, + {1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 664: 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439}, + {1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 664: 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438}, + {1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 664: 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437}, + {1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 664: 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436}, + {1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1142, 1435, 1435, 1435, 1435, 1435, 478: 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 491: 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 500: 1435, 1435, 1435, 1435, 507: 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 542: 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 583: 1435, 649: 1435, 652: 1435, 1435}, // 605 - {1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 663: 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430}, - {1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 663: 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429}, - {1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 663: 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428}, - {1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 663: 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427}, - {1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 663: 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426}, + {1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 664: 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434}, + {1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 664: 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433}, + {1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 664: 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432}, + {1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 664: 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431}, + {1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 664: 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430}, // 610 - {1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 663: 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425}, - {1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 663: 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424}, - {1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 663: 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423}, - {1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 663: 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422}, - {1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 663: 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421}, + {1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 664: 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429}, + {1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 664: 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428}, + {1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 664: 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427}, + {1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 664: 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426}, + {1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 664: 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425}, // 615 - {1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 663: 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420}, - {1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 663: 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419}, - {1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 663: 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418}, - {1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 3993, 1417, 1417, 1417, 1417, 1417, 477: 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 490: 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 499: 1417, 1417, 1417, 1417, 506: 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 542: 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 580: 1417, 648: 1417, 651: 1417, 1417}, - {1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 663: 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416}, + {1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 664: 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424}, + {1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 664: 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423}, + {1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 664: 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422}, + {1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 664: 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421}, + {1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 4003, 1420, 1420, 1420, 1420, 1420, 478: 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 491: 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 500: 1420, 1420, 1420, 1420, 507: 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 542: 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 583: 1420, 649: 1420, 652: 1420, 1420}, // 620 - {1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 663: 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415}, - {1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 663: 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414}, - {1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 663: 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413}, - {1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 663: 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412}, - {1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 663: 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411}, + {1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 664: 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419}, + {1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 664: 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418}, + {1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 664: 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417}, + {1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 664: 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416}, + {1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 664: 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415}, // 625 - {1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 663: 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410}, - {1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 663: 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 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, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 663: 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 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, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 663: 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 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, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 663: 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406}, + {1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 664: 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414}, + {1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 664: 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413}, + {1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 664: 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412}, + {1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 664: 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 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, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 664: 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410}, // 630 - {1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 663: 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405}, - {1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 663: 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 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, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 663: 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 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, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 663: 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 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, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 663: 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401}, + {1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 664: 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 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, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 664: 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 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, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 664: 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 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, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 664: 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 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, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 664: 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405}, // 635 - {1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 663: 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 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, 1139, 1399, 1399, 1399, 1399, 1399, 477: 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 490: 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 499: 1399, 1399, 1399, 1399, 506: 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 542: 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 580: 1399, 648: 1399, 651: 1399, 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, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 663: 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 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, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 663: 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397}, - {1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 663: 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396}, + {1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 664: 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 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, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 664: 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 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, 1141, 1402, 1402, 1402, 1402, 1402, 478: 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 491: 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 500: 1402, 1402, 1402, 1402, 507: 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 542: 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 583: 1402, 649: 1402, 652: 1402, 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, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 664: 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 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, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 664: 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400}, // 640 - {1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 663: 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 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, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 663: 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 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, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 663: 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393}, - {1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 663: 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392}, - {1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 663: 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391}, + {1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 664: 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 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, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 664: 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 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, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 664: 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397}, + {1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 664: 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 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, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 664: 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395}, // 645 - {1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 663: 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390}, - {1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 663: 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389}, - {1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 663: 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388}, - {1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 3986, 1387, 1387, 1387, 1387, 1387, 477: 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 490: 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 499: 1387, 1387, 1387, 1387, 506: 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 542: 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 580: 1387, 648: 1387, 651: 1387, 1387}, - {1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 3979, 1386, 1386, 1386, 1386, 1386, 477: 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 490: 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 499: 1386, 1386, 1386, 1386, 506: 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 542: 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 580: 1386, 648: 1386, 651: 1386, 1386}, + {1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 664: 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 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, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 664: 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393}, + {1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 664: 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392}, + {1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 664: 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391}, + {1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 3996, 1390, 1390, 1390, 1390, 1390, 478: 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 491: 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 500: 1390, 1390, 1390, 1390, 507: 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 542: 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 583: 1390, 649: 1390, 652: 1390, 1390}, // 650 - {1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 663: 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385}, - {1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 663: 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384}, - {1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 663: 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383}, - {1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 663: 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382}, - {1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 663: 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381}, + {1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 3989, 1389, 1389, 1389, 1389, 1389, 478: 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 491: 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 500: 1389, 1389, 1389, 1389, 507: 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 542: 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 583: 1389, 649: 1389, 652: 1389, 1389}, + {1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 664: 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388}, + {1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 664: 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387}, + {1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 664: 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386}, + {1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 664: 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385}, // 655 - {1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 663: 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380}, - {1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 663: 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379}, - {1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 663: 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378}, - {1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 663: 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377}, - {1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 663: 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376}, + {1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 664: 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384}, + {1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 664: 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383}, + {1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 664: 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382}, + {1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 664: 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381}, + {1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 664: 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380}, // 660 - {1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 663: 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375}, - {1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 663: 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374}, - {1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 663: 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373}, - {1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 663: 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372}, - {1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 663: 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371}, + {1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 664: 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379}, + {1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 664: 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378}, + {1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 664: 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377}, + {1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 664: 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376}, + {1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 664: 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375}, // 665 - {1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 663: 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370}, - {1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 663: 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369}, - {1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 663: 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368}, - {1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 3959, 1367, 1367, 1367, 1367, 1367, 477: 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 490: 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 499: 1367, 1367, 1367, 1367, 506: 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 542: 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 580: 1367, 648: 1367, 651: 1367, 1367}, - {1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 3951, 1366, 1366, 1366, 1366, 1366, 477: 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 490: 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 499: 1366, 1366, 1366, 1366, 506: 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 542: 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 580: 1366, 648: 1366, 651: 1366, 1366}, + {1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 664: 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374}, + {1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 664: 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373}, + {1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 664: 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372}, + {1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 664: 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371}, + {1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 3969, 1370, 1370, 1370, 1370, 1370, 478: 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 491: 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 500: 1370, 1370, 1370, 1370, 507: 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 542: 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 583: 1370, 649: 1370, 652: 1370, 1370}, // 670 - {1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 663: 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365}, - {1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 663: 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364}, - {1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 663: 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363}, - {1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 663: 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362}, - {1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 663: 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361}, + {1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 3961, 1369, 1369, 1369, 1369, 1369, 478: 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 491: 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 500: 1369, 1369, 1369, 1369, 507: 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 542: 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 583: 1369, 649: 1369, 652: 1369, 1369}, + {1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 664: 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368}, + {1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 664: 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367}, + {1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 664: 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366}, + {1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 664: 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365}, // 675 - {1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 663: 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360}, - {1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 663: 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359}, - {1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 663: 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358}, - {1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 663: 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357}, - {1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 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}, + {1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 664: 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364}, + {1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 664: 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363}, + {1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 664: 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362}, + {1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 664: 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361}, + {1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 664: 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360}, // 680 - {1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 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}, - {1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 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}, - {1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 663: 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353}, - {1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 663: 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352}, - {1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 663: 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351}, + {1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 664: 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359}, + {1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 664: 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358}, + {1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 664: 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357}, + {1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 664: 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356}, + {1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 664: 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355}, // 685 - {1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 663: 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350}, - {1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 663: 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349}, - {1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 471: 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 499: 1311, 1311, 1311, 1311, 506: 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 542: 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 570: 1311, 579: 1311, 1311, 1311, 591: 1311, 621: 1311, 640: 1311, 1311}, - {1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 471: 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 499: 1310, 1310, 1310, 1310, 506: 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 542: 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 570: 1310, 579: 1310, 1310, 1310, 591: 1310, 621: 1310, 640: 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, 471: 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 499: 1309, 1309, 1309, 1309, 506: 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 542: 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 570: 1309, 579: 1309, 1309, 1309, 591: 1309, 621: 1309, 640: 1309, 1309}, + {1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 664: 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354}, + {1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 664: 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353}, + {1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 664: 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352}, + {1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 472: 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 500: 1314, 1314, 1314, 1314, 507: 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 542: 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 571: 1314, 580: 1314, 583: 1314, 1314, 636: 1314, 640: 1314, 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, 472: 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 500: 1313, 1313, 1313, 1313, 507: 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 542: 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 571: 1313, 580: 1313, 583: 1313, 1313, 636: 1313, 640: 1313, 1313, 1313}, // 690 - {1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 471: 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 499: 1308, 1308, 1308, 1308, 506: 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 542: 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 570: 1308, 579: 1308, 1308, 1308, 591: 1308, 621: 1308, 640: 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, 471: 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 499: 1307, 1307, 1307, 1307, 506: 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 542: 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 570: 1307, 579: 1307, 1307, 1307, 591: 1307, 621: 1307, 640: 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, 471: 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 499: 1306, 1306, 1306, 1306, 506: 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 542: 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 570: 1306, 579: 1306, 1306, 1306, 591: 1306, 621: 1306, 640: 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, 471: 1305, 3950, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 499: 1305, 1305, 1305, 1305, 506: 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 542: 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 570: 1305, 579: 1305, 1305, 1305, 591: 1305, 621: 1305, 640: 1305, 1305}, - {472: 3947, 574: 3948, 577: 3949}, + {1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 472: 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 500: 1312, 1312, 1312, 1312, 507: 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 542: 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 571: 1312, 580: 1312, 583: 1312, 1312, 636: 1312, 640: 1312, 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, 472: 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 500: 1311, 1311, 1311, 1311, 507: 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 542: 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 571: 1311, 580: 1311, 583: 1311, 1311, 636: 1311, 640: 1311, 1311, 1311}, + {1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 472: 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 500: 1310, 1310, 1310, 1310, 507: 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 542: 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 571: 1310, 580: 1310, 583: 1310, 1310, 636: 1310, 640: 1310, 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, 472: 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 500: 1309, 1309, 1309, 1309, 507: 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 542: 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 571: 1309, 580: 1309, 583: 1309, 1309, 636: 1309, 640: 1309, 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, 472: 1308, 3960, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 500: 1308, 1308, 1308, 1308, 507: 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 542: 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 571: 1308, 580: 1308, 583: 1308, 1308, 636: 1308, 640: 1308, 1308, 1308}, // 695 - {1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 471: 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 499: 1303, 1303, 1303, 1303, 506: 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 542: 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 570: 1303, 579: 1303, 1303, 1303, 591: 1303, 621: 1303, 640: 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, 471: 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 499: 1302, 1302, 1302, 1302, 506: 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 542: 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 570: 1302, 579: 1302, 1302, 1302, 591: 1302, 621: 1302, 640: 1302, 1302}, - {1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 471: 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 499: 1299, 1299, 1299, 1299, 506: 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 542: 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 570: 1299, 579: 1299, 1299, 1299, 591: 1299, 621: 1299, 640: 1299, 1299}, - {1294, 1294, 7: 3368, 47: 1294, 125: 1294, 469: 1294, 471: 1294, 477: 1294, 1294, 485: 1294, 1294, 490: 1294, 1294, 1294, 1294, 497: 1294}, - {1293, 1293, 7: 1293, 47: 1293, 125: 1293, 469: 1293, 471: 1293, 477: 1293, 1293, 485: 1293, 1293, 490: 1293, 1293, 1293, 1293, 497: 1293, 499: 1293, 511: 1293, 513: 1293, 521: 1293, 524: 1293, 1293}, + {473: 3957, 575: 3958, 578: 3959}, + {1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 472: 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 500: 1306, 1306, 1306, 1306, 507: 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 542: 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 571: 1306, 580: 1306, 583: 1306, 1306, 636: 1306, 640: 1306, 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, 472: 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 500: 1305, 1305, 1305, 1305, 507: 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 542: 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 571: 1305, 580: 1305, 583: 1305, 1305, 636: 1305, 640: 1305, 1305, 1305}, + {1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 472: 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 500: 1302, 1302, 1302, 1302, 507: 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 542: 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 571: 1302, 580: 1302, 583: 1302, 1302, 636: 1302, 640: 1302, 1302, 1302}, + {1297, 1297, 7: 3374, 47: 1297, 125: 1297, 470: 1297, 472: 1297, 478: 1297, 1297, 486: 1297, 1297, 491: 1297, 1297, 1297, 1297, 498: 1297}, // 700 - {1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 471: 1268, 1268, 1268, 1268, 1268, 477: 1268, 1268, 3306, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 490: 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 499: 1268, 1268, 1268, 1268, 506: 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 542: 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 580: 3307}, - {1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 471: 1267, 1267, 1267, 1267, 1267, 477: 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 490: 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 499: 1267, 1267, 1267, 1267, 506: 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 542: 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 580: 1267, 648: 3942, 651: 1267, 1267}, - {1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 471: 1264, 1264, 1264, 1264, 1264, 477: 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 490: 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 499: 1264, 1264, 1264, 1264, 506: 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 542: 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 580: 1264, 651: 3938, 3939}, - {1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 471: 1263, 1263, 1263, 1263, 1263, 477: 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 490: 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 499: 1263, 1263, 1263, 1263, 506: 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 542: 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 580: 1263}, - {1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 471: 1262, 1262, 1262, 1262, 1262, 477: 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 490: 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 499: 1262, 1262, 1262, 1262, 506: 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 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, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 580: 1262}, + {1296, 1296, 7: 1296, 47: 1296, 125: 1296, 470: 1296, 472: 1296, 478: 1296, 1296, 486: 1296, 1296, 491: 1296, 1296, 1296, 1296, 498: 1296, 500: 1296, 512: 1296, 514: 1296, 522: 1296, 525: 1296, 1296}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 1216, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3955}, + {1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 472: 1270, 1270, 1270, 1270, 1270, 478: 1270, 1270, 3312, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 491: 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 500: 1270, 1270, 1270, 1270, 507: 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 542: 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 583: 3313}, + {1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 472: 1269, 1269, 1269, 1269, 1269, 478: 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 491: 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 500: 1269, 1269, 1269, 1269, 507: 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 542: 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 583: 1269, 649: 3950, 652: 1269, 1269}, + {1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 472: 1266, 1266, 1266, 1266, 1266, 478: 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 491: 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 500: 1266, 1266, 1266, 1266, 507: 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 542: 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 583: 1266, 652: 3946, 3947}, // 705 - {1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 471: 1261, 1261, 1261, 1261, 1261, 477: 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 490: 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 499: 1261, 1261, 1261, 1261, 506: 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 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, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 580: 1261}, - {1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 471: 1259, 1259, 1259, 1259, 1259, 477: 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 490: 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 499: 1259, 1259, 1259, 1259, 506: 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 542: 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 580: 1259}, - {1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 471: 1258, 1258, 1258, 1258, 1258, 477: 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 490: 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 499: 1258, 1258, 1258, 1258, 506: 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 542: 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 580: 1258}, - {1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 471: 1257, 1257, 1257, 1257, 1257, 477: 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 490: 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 499: 1257, 1257, 1257, 1257, 506: 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 542: 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 580: 1257}, - {1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 471: 1256, 1256, 1256, 1256, 1256, 477: 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 490: 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 499: 1256, 1256, 1256, 1256, 506: 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 542: 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 580: 1256}, + {1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 472: 1265, 1265, 1265, 1265, 1265, 478: 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 491: 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 500: 1265, 1265, 1265, 1265, 507: 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 542: 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 583: 1265}, + {1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 472: 1264, 1264, 1264, 1264, 1264, 478: 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 491: 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 500: 1264, 1264, 1264, 1264, 507: 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 542: 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 583: 1264}, + {1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 472: 1263, 1263, 1263, 1263, 1263, 478: 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 491: 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 500: 1263, 1263, 1263, 1263, 507: 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 542: 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 583: 1263}, + {1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 472: 1261, 1261, 1261, 1261, 1261, 478: 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 491: 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 500: 1261, 1261, 1261, 1261, 507: 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 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, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 583: 1261}, + {1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 472: 1260, 1260, 1260, 1260, 1260, 478: 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 491: 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 500: 1260, 1260, 1260, 1260, 507: 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 542: 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 583: 1260}, // 710 - {1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 471: 1255, 1255, 1255, 1255, 1255, 477: 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 490: 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 499: 1255, 1255, 1255, 1255, 506: 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 542: 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 580: 1255}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 3305, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3937, 3210, 3291, 3209, 3206}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 3305, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3936, 3210, 3291, 3209, 3206}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 3305, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3935, 3210, 3291, 3209, 3206}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 3305, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3934, 3210, 3291, 3209, 3206}, + {1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 472: 1259, 1259, 1259, 1259, 1259, 478: 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 491: 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 500: 1259, 1259, 1259, 1259, 507: 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 542: 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 583: 1259}, + {1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 472: 1258, 1258, 1258, 1258, 1258, 478: 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 491: 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 500: 1258, 1258, 1258, 1258, 507: 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 542: 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 583: 1258}, + {1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 472: 1257, 1257, 1257, 1257, 1257, 478: 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 491: 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 500: 1257, 1257, 1257, 1257, 507: 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 542: 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 583: 1257}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 3311, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3310, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3945, 3216, 3296, 3215, 3212}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 3311, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3310, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3944, 3216, 3296, 3215, 3212}, // 715 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 3305, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3933, 3210, 3291, 3209, 3206}, - {1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 471: 1248, 1248, 1248, 1248, 1248, 477: 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 490: 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 499: 1248, 1248, 1248, 1248, 506: 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 542: 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 580: 1248}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 2550, 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3833, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 2548, 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 642: 2544, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3832, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3830, 744: 3835, 2545, 2546, 2547, 2556, 752: 2554, 2553, 2552, 3834, 3837, 3836, 774: 3831}, - {470: 3825}, - {470: 2551, 705: 3824}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 3311, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3310, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3943, 3216, 3296, 3215, 3212}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 3311, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3310, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3942, 3216, 3296, 3215, 3212}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 3311, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3310, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3941, 3216, 3296, 3215, 3212}, + {1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 472: 1250, 1250, 1250, 1250, 1250, 478: 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 491: 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 500: 1250, 1250, 1250, 1250, 507: 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 542: 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 583: 1250}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 2554, 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3841, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 2552, 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 643: 2548, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3840, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3838, 745: 3843, 2549, 2550, 2551, 2560, 753: 2558, 2557, 2556, 3842, 3845, 3844, 775: 3839}, // 720 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3821, 2723, 2724, 2722}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 3305, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3820, 3210, 3291, 3209, 3206}, - {470: 3815}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 539: 1069, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3802, 1201: 3803}, - {470: 3744}, + {471: 3833}, + {471: 2555, 706: 3832}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3829, 2727, 2728, 2726}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 3311, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3310, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3828, 3216, 3296, 3215, 3212}, + {471: 3823}, // 725 - {470: 3741}, - {470: 3733}, - {470: 1218}, - {470: 1215}, - {470: 1214}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 540: 1071, 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3810, 1202: 3811}, + {471: 3752}, + {471: 3749}, + {471: 3741}, + {471: 1220}, // 730 - {470: 1212}, - {470: 1208}, - {470: 1206}, - {470: 1205}, - {470: 1203}, + {471: 1217}, + {471: 1214}, + {471: 1210}, + {471: 1208}, + {471: 1207}, // 735 - {1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 477: 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 490: 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 499: 1192, 1192, 1192, 1192, 506: 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 542: 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 580: 1192}, - {1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 477: 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 490: 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 499: 1191, 1191, 1191, 1191, 506: 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 542: 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 580: 1191}, - {1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 477: 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 490: 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 499: 1190, 1190, 1190, 1190, 506: 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 542: 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 580: 1190}, - {1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 477: 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 490: 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 499: 1189, 1189, 1189, 1189, 506: 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 542: 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 580: 1189}, - {1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 477: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 490: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 499: 1188, 1188, 1188, 1188, 506: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 542: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 580: 1188}, + {471: 1205}, + {1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 478: 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 491: 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 500: 1194, 1194, 1194, 1194, 507: 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 542: 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 583: 1194}, + {1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 478: 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 491: 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 500: 1193, 1193, 1193, 1193, 507: 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 542: 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 583: 1193}, + {1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 478: 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 491: 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 500: 1192, 1192, 1192, 1192, 507: 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 542: 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 583: 1192}, + {1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 478: 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 491: 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 500: 1191, 1191, 1191, 1191, 507: 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 542: 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 583: 1191}, // 740 - {1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 477: 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 490: 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 499: 1187, 1187, 1187, 1187, 506: 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 542: 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 580: 1187}, - {1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 477: 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 490: 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 499: 1186, 1186, 1186, 1186, 506: 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 542: 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 580: 1186}, - {1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 477: 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 490: 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 499: 1185, 1185, 1185, 1185, 506: 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 542: 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 580: 1185}, - {1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 477: 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 490: 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 499: 1184, 1184, 1184, 1184, 506: 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 542: 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 580: 1184}, - {1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 477: 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 490: 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 499: 1183, 1183, 1183, 1183, 506: 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 542: 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 580: 1183}, + {1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 478: 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 491: 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 500: 1190, 1190, 1190, 1190, 507: 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 542: 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 583: 1190}, + {1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 478: 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 491: 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 500: 1189, 1189, 1189, 1189, 507: 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 542: 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 583: 1189}, + {1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 478: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 491: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 500: 1188, 1188, 1188, 1188, 507: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 542: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 583: 1188}, + {1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 478: 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 491: 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 500: 1187, 1187, 1187, 1187, 507: 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 542: 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 583: 1187}, + {1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 478: 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 491: 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 500: 1186, 1186, 1186, 1186, 507: 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 542: 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 583: 1186}, // 745 - {470: 3730}, - {470: 3727}, - {1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 3724, 1194, 1194, 1194, 1194, 1194, 477: 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 490: 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 499: 1194, 1194, 1194, 1194, 506: 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 542: 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 580: 1194, 1087: 3725}, - {470: 3722}, - {1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 3718, 1101, 1101, 1101, 1101, 1101, 477: 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 490: 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 499: 1101, 1101, 1101, 1101, 506: 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 542: 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 580: 1101, 1214: 3717}, + {1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 478: 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 491: 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 500: 1185, 1185, 1185, 1185, 507: 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 542: 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 583: 1185}, + {471: 3738}, + {471: 3735}, + {1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 3732, 1196, 1196, 1196, 1196, 1196, 478: 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 491: 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 500: 1196, 1196, 1196, 1196, 507: 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 542: 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 583: 1196, 1088: 3733}, + {471: 3730}, // 750 - {470: 3709}, - {470: 3705}, - {470: 3700}, - {470: 3697}, - {470: 3692}, + {1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 3726, 1103, 1103, 1103, 1103, 1103, 478: 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 491: 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 500: 1103, 1103, 1103, 1103, 507: 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 542: 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 583: 1103, 1215: 3725}, + {471: 3717}, + {471: 3713}, + {471: 3708}, + {471: 3705}, // 755 - {470: 3683}, - {470: 3676}, - {470: 3671}, - {470: 3636}, - {470: 3622}, + {471: 3700}, + {471: 3691}, + {471: 3684}, + {471: 3679}, + {471: 3642}, // 760 - {470: 3605}, - {1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 471: 1148, 1148, 1148, 1148, 1148, 477: 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 490: 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 499: 1148, 1148, 1148, 1148, 506: 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 542: 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 580: 1148}, - {470: 3598}, - {470: 1142}, - {470: 1141}, + {471: 3628}, + {471: 3611}, + {1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 472: 1150, 1150, 1150, 1150, 1150, 478: 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 491: 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 500: 1150, 1150, 1150, 1150, 507: 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 542: 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 583: 1150}, + {471: 3604}, + {471: 1144}, // 765 - {1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 471: 1133, 1133, 1133, 1133, 1133, 477: 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 490: 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 499: 1133, 1133, 1133, 1133, 506: 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 542: 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 580: 1133}, - {470: 3595}, - {470: 3592}, - {470: 3584}, - {470: 3576}, + {471: 1143}, + {1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 472: 1135, 1135, 1135, 1135, 1135, 478: 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 491: 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 500: 1135, 1135, 1135, 1135, 507: 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 542: 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 583: 1135}, + {471: 3601}, + {471: 3598}, + {471: 3590}, // 770 - {470: 3568}, - {470: 3554}, - {470: 3542}, - {470: 3537}, - {470: 3532}, + {471: 3582}, + {471: 3574}, + {471: 3560}, + {471: 3548}, + {471: 3543}, // 775 - {470: 3527}, - {470: 3522}, - {470: 3517}, - {470: 3512}, - {470: 3499}, + {471: 3538}, + {471: 3533}, + {471: 3528}, + {471: 3523}, + {471: 3518}, // 780 - {470: 3496}, - {470: 3493}, - {470: 3490}, - {470: 3487}, - {470: 3484}, + {471: 3505}, + {471: 3502}, + {471: 3499}, + {471: 3496}, + {471: 3493}, // 785 - {470: 3480}, - {470: 3474}, - {470: 3461}, - {470: 3456}, - {470: 3451}, + {471: 3490}, + {471: 3486}, + {471: 3480}, + {471: 3467}, + {471: 3462}, // 790 - {470: 3294}, - {741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 471: 741, 741, 741, 741, 741, 477: 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 490: 741, 741, 741, 741, 741, 741, 741, 741, 499: 741, 741, 741, 741, 506: 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 542: 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 580: 741}, - {740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 471: 740, 740, 740, 740, 740, 477: 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 490: 740, 740, 740, 740, 740, 740, 740, 740, 499: 740, 740, 740, 740, 506: 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 542: 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 580: 740}, - {739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 471: 739, 739, 739, 739, 739, 477: 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 490: 739, 739, 739, 739, 739, 739, 739, 739, 499: 739, 739, 739, 739, 506: 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 542: 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 580: 739}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3295}, + {471: 3457}, + {471: 3299}, + {742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 472: 742, 742, 742, 742, 742, 478: 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 491: 742, 742, 742, 742, 742, 742, 742, 742, 500: 742, 742, 742, 742, 507: 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 542: 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 583: 742}, + {741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 472: 741, 741, 741, 741, 741, 478: 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 491: 741, 741, 741, 741, 741, 741, 741, 741, 500: 741, 741, 741, 741, 507: 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 542: 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 583: 741}, + {740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 472: 740, 740, 740, 740, 740, 478: 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 491: 740, 740, 740, 740, 740, 740, 740, 740, 500: 740, 740, 740, 740, 507: 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 542: 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 583: 740}, // 795 - {7: 3303, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3450}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3449}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3448}, - {2: 1911, 1911, 1911, 1911, 1911, 8: 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 48: 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 470: 1911, 472: 1911, 1911, 1911, 476: 1911, 480: 1911, 1911, 1911, 1911, 1911, 489: 1911, 498: 1911, 503: 1911, 1911, 1911, 541: 1911, 563: 1911, 1911, 1911, 567: 1911, 1911, 1911, 571: 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 582: 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 592: 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 622: 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 644: 1911}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3300}, + {7: 3308, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3456}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3455}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3454}, // 800 - {2: 1910, 1910, 1910, 1910, 1910, 8: 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 48: 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 470: 1910, 472: 1910, 1910, 1910, 476: 1910, 480: 1910, 1910, 1910, 1910, 1910, 489: 1910, 498: 1910, 503: 1910, 1910, 1910, 541: 1910, 563: 1910, 1910, 1910, 567: 1910, 1910, 1910, 571: 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 582: 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 592: 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 622: 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 644: 1910}, - {2: 1909, 1909, 1909, 1909, 1909, 8: 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 48: 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 470: 1909, 472: 1909, 1909, 1909, 476: 1909, 480: 1909, 1909, 1909, 1909, 1909, 489: 1909, 498: 1909, 503: 1909, 1909, 1909, 541: 1909, 563: 1909, 1909, 1909, 567: 1909, 1909, 1909, 571: 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 582: 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 592: 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 622: 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 644: 1909}, - {2: 1908, 1908, 1908, 1908, 1908, 8: 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 48: 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 470: 1908, 472: 1908, 1908, 1908, 476: 1908, 480: 1908, 1908, 1908, 1908, 1908, 489: 1908, 498: 1908, 503: 1908, 1908, 1908, 541: 1908, 563: 1908, 1908, 1908, 567: 1908, 1908, 1908, 571: 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 582: 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 592: 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 622: 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 644: 1908}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 3305, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3304, 3210, 3291, 3209, 3206}, - {47: 3308, 479: 3306, 580: 3307}, + {2: 1915, 1915, 1915, 1915, 1915, 8: 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 48: 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 471: 1915, 473: 1915, 1915, 1915, 477: 1915, 481: 1915, 1915, 1915, 1915, 1915, 490: 1915, 499: 1915, 504: 1915, 1915, 1915, 541: 1915, 564: 1915, 1915, 1915, 568: 1915, 1915, 1915, 572: 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 581: 1915, 1915, 585: 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 637: 1915, 1915, 1915, 645: 1915}, + {2: 1914, 1914, 1914, 1914, 1914, 8: 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 48: 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 471: 1914, 473: 1914, 1914, 1914, 477: 1914, 481: 1914, 1914, 1914, 1914, 1914, 490: 1914, 499: 1914, 504: 1914, 1914, 1914, 541: 1914, 564: 1914, 1914, 1914, 568: 1914, 1914, 1914, 572: 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 581: 1914, 1914, 585: 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 637: 1914, 1914, 1914, 645: 1914}, + {2: 1913, 1913, 1913, 1913, 1913, 8: 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 48: 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 471: 1913, 473: 1913, 1913, 1913, 477: 1913, 481: 1913, 1913, 1913, 1913, 1913, 490: 1913, 499: 1913, 504: 1913, 1913, 1913, 541: 1913, 564: 1913, 1913, 1913, 568: 1913, 1913, 1913, 572: 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 581: 1913, 1913, 585: 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 637: 1913, 1913, 1913, 645: 1913}, + {2: 1912, 1912, 1912, 1912, 1912, 8: 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 48: 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 471: 1912, 473: 1912, 1912, 1912, 477: 1912, 481: 1912, 1912, 1912, 1912, 1912, 490: 1912, 499: 1912, 504: 1912, 1912, 1912, 541: 1912, 564: 1912, 1912, 1912, 568: 1912, 1912, 1912, 572: 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 581: 1912, 1912, 585: 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 637: 1912, 1912, 1912, 645: 1912}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 3311, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3310, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3309, 3216, 3296, 3215, 3212}, // 805 - {738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 471: 738, 738, 738, 738, 738, 477: 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 490: 738, 738, 738, 738, 738, 738, 738, 738, 499: 738, 738, 738, 738, 506: 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 542: 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 580: 738}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 3446, 541: 3445, 659: 3447, 2723, 2724, 2722, 734: 3444, 867: 3443}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 3305, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3442, 3210, 3291, 3209, 3206}, - {144: 924, 487: 924, 495: 3310, 737: 924, 1253: 3309}, - {144: 3314, 487: 3315, 737: 927, 880: 3313}, + {47: 3314, 480: 3312, 583: 3313}, + {471: 1216}, + {739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 472: 739, 739, 739, 739, 739, 478: 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 491: 739, 739, 739, 739, 739, 739, 739, 739, 500: 739, 739, 739, 739, 507: 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 542: 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 583: 739}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 3452, 541: 3451, 660: 3453, 2727, 2728, 2726, 735: 3450, 868: 3449}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 3311, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3310, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3448, 3216, 3296, 3215, 3212}, // 810 - {8: 3311, 350: 3312}, - {144: 923, 487: 923, 737: 923}, - {144: 922, 487: 922, 737: 922}, - {737: 3318, 743: 3319}, - {268: 3317}, + {144: 926, 488: 926, 497: 3316, 738: 926, 1254: 3315}, + {144: 3320, 488: 3321, 738: 929, 881: 3319}, + {8: 3317, 350: 3318}, + {144: 925, 488: 925, 738: 925}, + {144: 924, 488: 924, 738: 924}, // 815 - {268: 3316}, - {737: 925}, - {737: 926}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 470: 3357, 659: 3356, 2723, 2724, 2722, 918: 3359, 1156: 3360, 1338: 3358}, - {933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 471: 933, 933, 933, 933, 933, 477: 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 490: 933, 933, 933, 933, 933, 933, 933, 933, 499: 933, 933, 933, 933, 506: 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 542: 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, 580: 933}, + {738: 3324, 744: 3325}, + {268: 3323}, + {268: 3322}, + {738: 927}, + {738: 928}, // 820 - {1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 663: 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816}, - {1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 663: 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810}, - {1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 663: 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799}, - {1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 663: 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788}, - {1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 663: 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 471: 3363, 660: 3362, 2727, 2728, 2726, 919: 3365, 1157: 3366, 1339: 3364}, + {935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 472: 935, 935, 935, 935, 935, 478: 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 491: 935, 935, 935, 935, 935, 935, 935, 935, 500: 935, 935, 935, 935, 507: 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 542: 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 583: 935}, + {1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 664: 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820}, + {1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 664: 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814}, + {1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 664: 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803}, // 825 - {1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 663: 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775}, - {1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 663: 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752}, - {1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 663: 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746}, - {1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 663: 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736}, - {1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 663: 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711}, + {1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 664: 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792}, + {1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 664: 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781}, + {1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 664: 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779}, + {1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 664: 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756}, + {1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 664: 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750}, // 830 - {1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 663: 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710}, - {1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 663: 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707}, - {1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 663: 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702}, - {1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 663: 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 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, 663: 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699}, + {1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 664: 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740}, + {1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 664: 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 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, 664: 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714}, + {1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 664: 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711}, + {1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 664: 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706}, // 835 - {1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 663: 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696}, - {1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 663: 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694}, - {1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 663: 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681}, - {1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 663: 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658}, - {1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 663: 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641}, + {1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 664: 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 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, 664: 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703}, + {1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 664: 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700}, + {1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 664: 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698}, + {1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 664: 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685}, // 840 - {1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 663: 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 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, 663: 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639}, - {1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 663: 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635}, - {1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 663: 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634}, - {1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 663: 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628}, + {1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 664: 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662}, + {1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 664: 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 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, 664: 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 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, 664: 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643}, + {1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 664: 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639}, // 845 - {1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 663: 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519}, - {1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 663: 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 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, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 663: 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517}, - {1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 663: 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516}, - {1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 663: 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432}, + {1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 664: 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638}, + {1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 664: 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632}, + {1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 664: 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 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, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 664: 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 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, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 664: 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521}, // 850 - {1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 663: 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417}, - {1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 663: 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399}, - {1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 663: 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387}, - {1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 663: 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386}, - {1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 663: 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367}, + {1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 664: 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520}, + {1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 664: 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435}, + {1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 664: 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420}, + {1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 664: 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402}, + {1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 664: 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390}, // 855 - {1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 663: 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366}, - {975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 471: 975, 975, 975, 975, 975, 477: 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 490: 975, 975, 975, 975, 975, 975, 975, 975, 499: 975, 975, 975, 975, 506: 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 542: 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 580: 975}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 972, 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 488: 972, 499: 972, 521: 972, 524: 972, 972, 659: 3356, 2723, 2724, 2722, 918: 3363, 1252: 3362, 1339: 3361}, - {946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 471: 946, 946, 946, 946, 946, 477: 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 490: 946, 946, 946, 946, 946, 946, 946, 946, 499: 946, 946, 946, 946, 506: 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 542: 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 580: 946}, - {945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 471: 945, 945, 945, 945, 945, 477: 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 490: 945, 945, 945, 945, 945, 945, 945, 945, 499: 945, 945, 945, 945, 506: 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 542: 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 580: 945}, + {1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 664: 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389}, + {1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 664: 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370}, + {1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 664: 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369}, + {977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 472: 977, 977, 977, 977, 977, 478: 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 491: 977, 977, 977, 977, 977, 977, 977, 977, 500: 977, 977, 977, 977, 507: 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 542: 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 583: 977}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 974, 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 489: 974, 500: 974, 522: 974, 525: 974, 974, 660: 3362, 2727, 2728, 2726, 919: 3369, 1253: 3368, 1340: 3367}, // 860 - {944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 471: 944, 944, 944, 944, 944, 477: 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 490: 944, 944, 944, 944, 944, 944, 944, 944, 499: 944, 944, 944, 944, 506: 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 542: 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 580: 944}, - {47: 3441}, - {47: 970, 488: 3365, 499: 970, 521: 970, 524: 970, 970, 1256: 3364}, - {47: 971, 488: 971, 499: 971, 521: 971, 524: 971, 971}, - {47: 968, 499: 3371, 521: 968, 524: 968, 968, 1259: 3370}, + {948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 472: 948, 948, 948, 948, 948, 478: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 491: 948, 948, 948, 948, 948, 948, 948, 948, 500: 948, 948, 948, 948, 507: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 542: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 583: 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, 472: 947, 947, 947, 947, 947, 478: 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 491: 947, 947, 947, 947, 947, 947, 947, 947, 500: 947, 947, 947, 947, 507: 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 542: 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 583: 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, 472: 946, 946, 946, 946, 946, 478: 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 491: 946, 946, 946, 946, 946, 946, 946, 946, 500: 946, 946, 946, 946, 507: 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 542: 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 583: 946}, + {47: 3447}, + {47: 972, 489: 3371, 500: 972, 522: 972, 525: 972, 972, 1257: 3370}, // 865 - {655: 3366}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 2715, 866: 3199, 895: 3367}, - {7: 3368, 47: 969, 499: 969, 521: 969, 524: 969, 969}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 2715, 866: 3369}, - {1292, 1292, 7: 1292, 47: 1292, 125: 1292, 469: 1292, 471: 1292, 477: 1292, 1292, 485: 1292, 1292, 490: 1292, 1292, 1292, 1292, 497: 1292, 499: 1292, 511: 1292, 513: 1292, 521: 1292, 524: 1292, 1292}, + {47: 973, 489: 973, 500: 973, 522: 973, 525: 973, 973}, + {47: 970, 500: 3377, 522: 970, 525: 970, 970, 1260: 3376}, + {657: 3372}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 2719, 867: 3204, 896: 3373}, + {7: 3374, 47: 971, 500: 971, 522: 971, 525: 971, 971}, // 870 - {47: 966, 521: 3376, 524: 3377, 3378, 1258: 3374, 1337: 3375}, - {655: 3372}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 2715, 866: 3199, 895: 3373}, - {7: 3368, 47: 967, 521: 967, 524: 967, 967}, - {47: 973}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 2719, 867: 3375}, + {1295, 1295, 7: 1295, 47: 1295, 125: 1295, 470: 1295, 472: 1295, 478: 1295, 1295, 486: 1295, 1295, 491: 1295, 1295, 1295, 1295, 498: 1295, 500: 1295, 512: 1295, 514: 1295, 522: 1295, 525: 1295, 1295}, + {47: 968, 522: 3382, 525: 3383, 3384, 1259: 3380, 1338: 3381}, + {657: 3378}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 2719, 867: 3204, 896: 3379}, // 875 - {146: 3389, 163: 3385, 505: 3379, 552: 3390, 571: 3381, 3380, 575: 3387, 578: 3388, 815: 3386, 974: 3383, 1335: 3384, 3382}, - {146: 964, 163: 964, 505: 964, 552: 964, 571: 964, 964, 575: 964, 578: 964}, - {146: 963, 163: 963, 505: 963, 552: 963, 571: 963, 963, 575: 963, 578: 963}, - {146: 962, 163: 962, 505: 962, 552: 962, 571: 962, 962, 575: 962, 578: 962}, - {2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 47: 2196, 130: 2196, 148: 2196, 469: 2196, 2196, 2196, 473: 2196, 2196, 2196, 2196, 2196, 479: 2196, 487: 2196, 2196, 2196, 498: 2196, 500: 2196, 503: 2196, 2196, 566: 2196, 570: 2196, 579: 2196, 581: 2196, 591: 2196, 621: 2196, 640: 2196, 2196, 2196, 2196, 645: 2196}, + {7: 3374, 47: 969, 522: 969, 525: 969, 969}, + {47: 975}, + {146: 3395, 163: 3391, 506: 3385, 553: 3396, 572: 3387, 3386, 576: 3393, 579: 3394, 816: 3392, 975: 3389, 1336: 3390, 3388}, + {146: 966, 163: 966, 506: 966, 553: 966, 572: 966, 966, 576: 966, 579: 966}, + {146: 965, 163: 965, 506: 965, 553: 965, 572: 965, 965, 576: 965, 579: 965}, // 880 - {2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 47: 2195, 130: 2195, 148: 2195, 188: 2195, 469: 2195, 2195, 2195, 473: 2195, 2195, 2195, 2195, 2195, 479: 2195, 487: 2195, 2195, 2195, 498: 2195, 500: 2195, 503: 2195, 2195, 566: 2195, 570: 2195, 579: 2195, 581: 2195, 591: 2195, 621: 2195, 640: 2195, 2195, 2195, 2195, 645: 2195}, - {2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 47: 2194, 130: 2194, 148: 2194, 188: 2194, 469: 2194, 2194, 2194, 473: 2194, 2194, 2194, 2194, 2194, 479: 2194, 487: 2194, 2194, 2194, 498: 2194, 500: 2194, 503: 2194, 2194, 566: 2194, 570: 2194, 579: 2194, 581: 2194, 591: 2194, 621: 2194, 640: 2194, 2194, 2194, 2194, 645: 2194}, - {47: 965}, - {47: 961}, - {47: 960}, + {146: 964, 163: 964, 506: 964, 553: 964, 572: 964, 964, 576: 964, 579: 964}, + {2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 47: 2200, 130: 2200, 148: 2200, 470: 2200, 2200, 2200, 474: 2200, 2200, 2200, 2200, 2200, 480: 2200, 488: 2200, 2200, 2200, 499: 2200, 501: 2200, 504: 2200, 2200, 567: 2200, 571: 2200, 580: 2200, 584: 2200, 636: 2200, 640: 2200, 2200, 2200, 2200, 2200, 646: 2200}, + {2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 47: 2199, 130: 2199, 148: 2199, 188: 2199, 470: 2199, 2199, 2199, 474: 2199, 2199, 2199, 2199, 2199, 480: 2199, 488: 2199, 2199, 2199, 499: 2199, 501: 2199, 504: 2199, 2199, 567: 2199, 571: 2199, 580: 2199, 584: 2199, 636: 2199, 640: 2199, 2199, 2199, 2199, 2199, 646: 2199}, + {2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 47: 2198, 130: 2198, 148: 2198, 188: 2198, 470: 2198, 2198, 2198, 474: 2198, 2198, 2198, 2198, 2198, 480: 2198, 488: 2198, 2198, 2198, 499: 2198, 501: 2198, 504: 2198, 2198, 567: 2198, 571: 2198, 580: 2198, 584: 2198, 636: 2198, 640: 2198, 2198, 2198, 2198, 2198, 646: 2198}, + {47: 967}, // 885 - {130: 3436}, - {130: 3434}, - {130: 3432}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3439}, - {573: 3438}, + {47: 963}, + {47: 962}, + {130: 3442}, + {130: 3440}, + {130: 3438}, // 890 - {146: 3389, 163: 3391, 505: 3379, 571: 3381, 3380, 575: 3393, 578: 3394, 815: 3392, 974: 3396, 1155: 3395}, - {130: 3436, 148: 3437}, - {130: 3434, 148: 3435}, - {130: 3432, 148: 3433}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3399}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3445}, + {574: 3444}, + {146: 3395, 163: 3397, 506: 3385, 572: 3387, 3386, 576: 3399, 579: 3400, 816: 3398, 975: 3402, 1156: 3401}, + {130: 3442, 148: 3443}, + {130: 3440, 148: 3441}, // 895 - {502: 3397}, - {47: 953, 502: 953}, - {146: 3389, 163: 3391, 505: 3379, 571: 3381, 3380, 575: 3393, 578: 3394, 815: 3392, 974: 3396, 1155: 3398}, - {47: 954}, - {105: 3420, 3416, 108: 3413, 3428, 111: 3415, 3412, 3414, 3418, 3419, 3424, 3423, 3422, 3426, 3427, 3421, 3425, 124: 3417, 502: 3302, 506: 3300, 3301, 3299, 3297, 528: 3410, 3407, 3409, 3408, 3404, 3406, 3405, 3402, 3403, 3401, 3411, 730: 3298, 3296, 801: 3400, 825: 3429}, + {130: 3438, 148: 3439}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3405}, + {503: 3403}, + {47: 955, 503: 955}, + {146: 3395, 163: 3397, 506: 3385, 572: 3387, 3386, 576: 3399, 579: 3400, 816: 3398, 975: 3402, 1156: 3404}, // 900 - {1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 477: 1098, 1098, 480: 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 490: 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 504: 1098, 506: 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 542: 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 566: 1098, 642: 1098}, - {1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 477: 1097, 1097, 480: 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 490: 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 504: 1097, 506: 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 542: 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 566: 1097, 642: 1097}, - {1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 477: 1096, 1096, 480: 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 490: 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 504: 1096, 506: 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 542: 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 566: 1096, 642: 1096}, - {1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 477: 1095, 1095, 480: 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 490: 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 504: 1095, 506: 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 542: 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 566: 1095, 642: 1095}, - {1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 477: 1094, 1094, 480: 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 490: 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 504: 1094, 506: 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 542: 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 566: 1094, 642: 1094}, + {47: 956}, + {101: 3426, 104: 3422, 108: 3419, 3434, 3421, 3418, 3420, 3424, 3425, 3430, 3429, 3428, 3432, 3433, 3427, 3431, 123: 3423, 503: 3307, 507: 3305, 3306, 3304, 3302, 529: 3416, 3413, 3415, 3414, 3410, 3412, 3411, 3408, 3409, 3407, 3417, 731: 3303, 3301, 800: 3406, 819: 3435}, + {1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 478: 1100, 1100, 481: 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 491: 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 505: 1100, 507: 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 542: 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 567: 1100, 643: 1100}, + {1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 478: 1099, 1099, 481: 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 491: 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 505: 1099, 507: 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 542: 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 567: 1099, 643: 1099}, + {1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 478: 1098, 1098, 481: 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 491: 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 505: 1098, 507: 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 542: 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 567: 1098, 643: 1098}, // 905 - {1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 477: 1093, 1093, 480: 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 490: 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 504: 1093, 506: 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 542: 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 566: 1093, 642: 1093}, - {1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 477: 1092, 1092, 480: 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 490: 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 504: 1092, 506: 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 542: 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 566: 1092, 642: 1092}, - {1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 477: 1091, 1091, 480: 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 490: 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 504: 1091, 506: 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 542: 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 566: 1091, 642: 1091}, - {1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 477: 1090, 1090, 480: 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 490: 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 504: 1090, 506: 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 542: 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 566: 1090, 642: 1090}, - {1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 477: 1089, 1089, 480: 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 490: 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 504: 1089, 506: 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 542: 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 566: 1089, 642: 1089}, + {1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 478: 1097, 1097, 481: 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 491: 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 505: 1097, 507: 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 542: 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 567: 1097, 643: 1097}, + {1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 478: 1096, 1096, 481: 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 491: 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 505: 1096, 507: 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 542: 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 567: 1096, 643: 1096}, + {1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 478: 1095, 1095, 481: 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 491: 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 505: 1095, 507: 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 542: 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 567: 1095, 643: 1095}, + {1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 478: 1094, 1094, 481: 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 491: 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 505: 1094, 507: 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 542: 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 567: 1094, 643: 1094}, + {1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 478: 1093, 1093, 481: 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 491: 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 505: 1093, 507: 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 542: 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 567: 1093, 643: 1093}, // 910 - {1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 477: 1088, 1088, 480: 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 490: 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 504: 1088, 506: 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 542: 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 566: 1088, 642: 1088}, - {1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 477: 1087, 1087, 480: 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 490: 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 504: 1087, 506: 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 542: 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 566: 1087, 642: 1087}, - {1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 477: 1086, 1086, 480: 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 490: 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 504: 1086, 506: 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 542: 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 566: 1086, 642: 1086}, - {1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 477: 1085, 1085, 480: 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 490: 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 504: 1085, 506: 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 542: 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 566: 1085, 642: 1085}, - {1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 477: 1084, 1084, 480: 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 490: 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 504: 1084, 506: 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 542: 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 566: 1084, 642: 1084}, + {1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 478: 1092, 1092, 481: 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 491: 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 505: 1092, 507: 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 542: 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 567: 1092, 643: 1092}, + {1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 478: 1091, 1091, 481: 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 491: 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 505: 1091, 507: 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 542: 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 567: 1091, 643: 1091}, + {1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 478: 1090, 1090, 481: 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 491: 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 505: 1090, 507: 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 542: 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 567: 1090, 643: 1090}, + {1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 478: 1089, 1089, 481: 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 491: 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 505: 1089, 507: 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 542: 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 567: 1089, 643: 1089}, + {1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 478: 1088, 1088, 481: 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 491: 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 505: 1088, 507: 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 542: 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 567: 1088, 643: 1088}, // 915 - {1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 477: 1083, 1083, 480: 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 490: 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 504: 1083, 506: 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 542: 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 566: 1083, 642: 1083}, - {1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 477: 1082, 1082, 480: 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 490: 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 504: 1082, 506: 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 542: 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 566: 1082, 642: 1082}, - {1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 477: 1081, 1081, 480: 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 490: 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 504: 1081, 506: 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 542: 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 566: 1081, 642: 1081}, - {1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 477: 1080, 1080, 480: 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 490: 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 504: 1080, 506: 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 542: 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 566: 1080, 642: 1080}, - {1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 477: 1079, 1079, 480: 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 490: 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 504: 1079, 506: 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 542: 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 566: 1079, 642: 1079}, + {1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 478: 1087, 1087, 481: 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 491: 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 505: 1087, 507: 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 542: 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 567: 1087, 643: 1087}, + {1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 478: 1086, 1086, 481: 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 491: 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 505: 1086, 507: 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 542: 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 567: 1086, 643: 1086}, + {1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 478: 1085, 1085, 481: 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 491: 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 505: 1085, 507: 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 542: 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 567: 1085, 643: 1085}, + {1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 478: 1084, 1084, 481: 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 491: 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 505: 1084, 507: 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 542: 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 567: 1084, 643: 1084}, + {1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 478: 1083, 1083, 481: 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 491: 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 505: 1083, 507: 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 542: 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 567: 1083, 643: 1083}, // 920 - {1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 477: 1078, 1078, 480: 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 490: 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 504: 1078, 506: 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 542: 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 566: 1078, 642: 1078}, - {1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 477: 1077, 1077, 480: 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 490: 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 504: 1077, 506: 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 542: 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 566: 1077, 642: 1077}, - {1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 477: 1076, 1076, 480: 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 490: 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 504: 1076, 506: 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 542: 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 566: 1076, 642: 1076}, - {1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 477: 1075, 1075, 480: 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 490: 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 504: 1075, 506: 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 542: 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 566: 1075, 642: 1075}, - {1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 477: 1074, 1074, 480: 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 490: 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 504: 1074, 506: 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 542: 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 566: 1074, 642: 1074}, + {1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 478: 1082, 1082, 481: 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 491: 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 505: 1082, 507: 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 542: 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 567: 1082, 643: 1082}, + {1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 478: 1081, 1081, 481: 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 491: 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 505: 1081, 507: 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 542: 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 567: 1081, 643: 1081}, + {1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 478: 1080, 1080, 481: 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 491: 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 505: 1080, 507: 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 542: 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 567: 1080, 643: 1080}, + {1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 478: 1079, 1079, 481: 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 491: 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 505: 1079, 507: 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 542: 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 567: 1079, 643: 1079}, + {1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 478: 1078, 1078, 481: 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 491: 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 505: 1078, 507: 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 542: 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 567: 1078, 643: 1078}, // 925 - {1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 477: 1073, 1073, 480: 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 490: 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 504: 1073, 506: 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 542: 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 566: 1073, 642: 1073}, - {1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 477: 1072, 1072, 480: 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 490: 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 504: 1072, 506: 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 542: 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 566: 1072, 642: 1072}, - {1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 477: 1071, 1071, 480: 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 490: 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 504: 1071, 506: 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 542: 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 566: 1071, 642: 1071}, - {1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 477: 1070, 1070, 480: 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 490: 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 504: 1070, 506: 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 542: 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 566: 1070, 642: 1070}, - {130: 3430, 148: 3431}, + {1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 478: 1077, 1077, 481: 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 491: 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 505: 1077, 507: 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 542: 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 567: 1077, 643: 1077}, + {1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 478: 1076, 1076, 481: 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 491: 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 505: 1076, 507: 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 542: 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 567: 1076, 643: 1076}, + {1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 478: 1075, 1075, 481: 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 491: 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 505: 1075, 507: 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 542: 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 567: 1075, 643: 1075}, + {1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 478: 1074, 1074, 481: 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 491: 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 505: 1074, 507: 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 542: 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 567: 1074, 643: 1074}, + {1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 478: 1073, 1073, 481: 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 491: 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 505: 1073, 507: 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 542: 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 567: 1073, 643: 1073}, // 930 - {47: 956, 502: 956}, - {47: 949, 502: 949}, - {47: 957, 502: 957}, - {47: 950, 502: 950}, - {47: 958, 502: 958}, + {1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 478: 1072, 1072, 481: 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 491: 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 505: 1072, 507: 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 542: 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 567: 1072, 643: 1072}, + {130: 3436, 148: 3437}, + {47: 958, 503: 958}, + {47: 951, 503: 951}, + {47: 959, 503: 959}, // 935 - {47: 951, 502: 951}, - {47: 959, 502: 959}, - {47: 952, 502: 952}, - {47: 955, 502: 955}, - {105: 3420, 3416, 108: 3413, 3428, 111: 3415, 3412, 3414, 3418, 3419, 3424, 3423, 3422, 3426, 3427, 3421, 3425, 124: 3417, 502: 3302, 506: 3300, 3301, 3299, 3297, 528: 3410, 3407, 3409, 3408, 3404, 3406, 3405, 3402, 3403, 3401, 3411, 730: 3298, 3296, 801: 3400, 825: 3440}, + {47: 952, 503: 952}, + {47: 960, 503: 960}, + {47: 953, 503: 953}, + {47: 961, 503: 961}, + {47: 954, 503: 954}, // 940 - {130: 3430}, - {974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 471: 974, 974, 974, 974, 974, 477: 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 490: 974, 974, 974, 974, 974, 974, 974, 974, 499: 974, 974, 974, 974, 506: 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 542: 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 580: 974}, - {1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 471: 1250, 1250, 1250, 1250, 1250, 477: 1250, 1250, 3306, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 490: 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 499: 1250, 1250, 1250, 1250, 506: 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 542: 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 580: 1250}, - {1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 471: 1260, 1260, 1260, 1260, 1260, 477: 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 490: 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 499: 1260, 1260, 1260, 1260, 506: 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 542: 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 580: 1260}, - {745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 506: 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 542: 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 566: 745, 570: 745, 579: 745, 745, 745, 591: 745, 621: 745, 640: 745, 745, 745, 745, 645: 745}, + {47: 957, 503: 957}, + {101: 3426, 104: 3422, 108: 3419, 3434, 3421, 3418, 3420, 3424, 3425, 3430, 3429, 3428, 3432, 3433, 3427, 3431, 123: 3423, 503: 3307, 507: 3305, 3306, 3304, 3302, 529: 3416, 3413, 3415, 3414, 3410, 3412, 3411, 3408, 3409, 3407, 3417, 731: 3303, 3301, 800: 3406, 819: 3446}, + {130: 3436}, + {976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 472: 976, 976, 976, 976, 976, 478: 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 491: 976, 976, 976, 976, 976, 976, 976, 976, 500: 976, 976, 976, 976, 507: 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 542: 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 583: 976}, + {1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 472: 1252, 1252, 1252, 1252, 1252, 478: 1252, 1252, 3312, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 491: 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 500: 1252, 1252, 1252, 1252, 507: 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 542: 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 583: 1252}, // 945 - {744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 506: 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 542: 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 566: 744, 570: 744, 579: 744, 744, 744, 591: 744, 621: 744, 640: 744, 744, 744, 744, 645: 744}, - {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 506: 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 565: 256, 256, 570: 256, 579: 256, 256, 256, 591: 256, 621: 256, 640: 256, 256, 256, 256, 645: 256, 256, 649: 256, 654: 256, 256, 658: 256, 663: 256, 256}, - {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 506: 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 565: 255, 255, 570: 255, 579: 255, 255, 255, 591: 255, 621: 255, 640: 255, 255, 255, 255, 645: 255, 255, 649: 255, 654: 255, 255, 658: 255, 663: 255, 255}, - {1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 471: 1925, 1925, 475: 1925, 477: 1925, 1925, 480: 1925, 1925, 485: 1925, 1925, 1925, 490: 1925, 1925, 1925, 1925, 1925, 1925, 497: 1925, 499: 1925, 1925, 1925, 1925, 506: 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 516: 1925, 1925, 1925, 1925, 521: 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 542: 1925, 1925, 730: 3298, 3296}, - {1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 471: 1926, 1926, 475: 1926, 477: 1926, 1926, 480: 1926, 1926, 485: 1926, 1926, 1926, 490: 1926, 1926, 1926, 1926, 1926, 1926, 497: 1926, 499: 1926, 1926, 1926, 3302, 506: 1926, 3301, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 516: 1926, 1926, 1926, 1926, 521: 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 542: 1926, 1926, 730: 3298, 3296}, + {1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 472: 1262, 1262, 1262, 1262, 1262, 478: 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 491: 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 500: 1262, 1262, 1262, 1262, 507: 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 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, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 583: 1262}, + {746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 507: 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 542: 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 567: 746, 571: 746, 580: 746, 583: 746, 746, 636: 746, 640: 746, 746, 746, 746, 746, 646: 746}, + {745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 507: 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 542: 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 567: 745, 571: 745, 580: 745, 583: 745, 745, 636: 745, 640: 745, 745, 745, 745, 745, 646: 745}, + {256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 507: 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 566: 256, 256, 571: 256, 580: 256, 583: 256, 256, 636: 256, 640: 256, 256, 256, 256, 256, 646: 256, 256, 650: 256, 655: 256, 657: 256, 659: 256, 664: 256, 256}, + {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 507: 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 566: 255, 255, 571: 255, 580: 255, 583: 255, 255, 636: 255, 640: 255, 255, 255, 255, 255, 646: 255, 255, 650: 255, 655: 255, 657: 255, 659: 255, 664: 255, 255}, // 950 - {1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 471: 1927, 1927, 475: 1927, 477: 1927, 1927, 480: 1927, 1927, 485: 1927, 1927, 1927, 490: 1927, 1927, 1927, 1927, 1927, 1927, 497: 1927, 499: 1927, 1927, 1927, 3302, 506: 1927, 3301, 1927, 3297, 1927, 1927, 1927, 1927, 1927, 516: 1927, 1927, 1927, 1927, 521: 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 542: 1927, 1927, 730: 3298, 3296}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3452}, - {47: 3453, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, - {144: 3314, 487: 3315, 737: 927, 880: 3454}, - {737: 3318, 743: 3455}, + {1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 472: 1929, 1929, 476: 1929, 478: 1929, 1929, 481: 1929, 1929, 486: 1929, 1929, 1929, 491: 1929, 1929, 1929, 1929, 1929, 497: 1929, 1929, 500: 1929, 1929, 1929, 1929, 507: 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 517: 1929, 1929, 1929, 1929, 522: 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 543: 1929, 1929, 731: 3303, 3301}, + {1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 472: 1930, 1930, 476: 1930, 478: 1930, 1930, 481: 1930, 1930, 486: 1930, 1930, 1930, 491: 1930, 1930, 1930, 1930, 1930, 497: 1930, 1930, 500: 1930, 1930, 1930, 3307, 507: 1930, 3306, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 517: 1930, 1930, 1930, 1930, 522: 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 543: 1930, 1930, 731: 3303, 3301}, + {1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 472: 1931, 1931, 476: 1931, 478: 1931, 1931, 481: 1931, 1931, 486: 1931, 1931, 1931, 491: 1931, 1931, 1931, 1931, 1931, 497: 1931, 1931, 500: 1931, 1931, 1931, 3307, 507: 1931, 3306, 1931, 3302, 1931, 1931, 1931, 1931, 1931, 517: 1931, 1931, 1931, 1931, 522: 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 543: 1931, 1931, 731: 3303, 3301}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3458}, + {47: 3459, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, // 955 - {934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 471: 934, 934, 934, 934, 934, 477: 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 490: 934, 934, 934, 934, 934, 934, 934, 934, 499: 934, 934, 934, 934, 506: 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 542: 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 580: 934}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3457}, - {47: 3458, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, - {144: 3314, 487: 3315, 737: 927, 880: 3459}, - {737: 3318, 743: 3460}, + {144: 3320, 488: 3321, 738: 929, 881: 3460}, + {738: 3324, 744: 3461}, + {936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 472: 936, 936, 936, 936, 936, 478: 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 491: 936, 936, 936, 936, 936, 936, 936, 936, 500: 936, 936, 936, 936, 507: 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 542: 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 583: 936}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3463}, + {47: 3464, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, // 960 - {935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 471: 935, 935, 935, 935, 935, 477: 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 490: 935, 935, 935, 935, 935, 935, 935, 935, 499: 935, 935, 935, 935, 506: 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 542: 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 580: 935}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3462}, - {7: 3464, 47: 932, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296, 1089: 3463}, - {47: 3471}, - {505: 3379, 571: 3381, 3380, 575: 3466, 815: 3465}, + {144: 3320, 488: 3321, 738: 929, 881: 3465}, + {738: 3324, 744: 3466}, + {937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 472: 937, 937, 937, 937, 937, 478: 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 491: 937, 937, 937, 937, 937, 937, 937, 937, 500: 937, 937, 937, 937, 507: 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 542: 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 583: 937}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3468}, + {7: 3470, 47: 934, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301, 1090: 3469}, // 965 - {7: 3468, 47: 929, 1090: 3470}, - {7: 3468, 47: 929, 1090: 3467}, - {47: 930}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3469}, - {47: 928, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, + {47: 3477}, + {506: 3385, 572: 3387, 3386, 576: 3472, 816: 3471}, + {7: 3474, 47: 931, 1091: 3476}, + {7: 3474, 47: 931, 1091: 3473}, + {47: 932}, // 970 - {47: 931}, - {144: 3314, 487: 3315, 737: 927, 880: 3472}, - {737: 3318, 743: 3473}, - {936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 471: 936, 936, 936, 936, 936, 477: 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 490: 936, 936, 936, 936, 936, 936, 936, 936, 499: 936, 936, 936, 936, 506: 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 542: 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 580: 936}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3475}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3475}, + {47: 930, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {47: 933}, + {144: 3320, 488: 3321, 738: 929, 881: 3478}, + {738: 3324, 744: 3479}, // 975 - {7: 3464, 47: 932, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296, 1089: 3476}, - {47: 3477}, - {144: 3314, 487: 3315, 737: 927, 880: 3478}, - {737: 3318, 743: 3479}, - {937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 471: 937, 937, 937, 937, 937, 477: 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 490: 937, 937, 937, 937, 937, 937, 937, 937, 499: 937, 937, 937, 937, 506: 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 542: 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 580: 937}, + {938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 472: 938, 938, 938, 938, 938, 478: 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 491: 938, 938, 938, 938, 938, 938, 938, 938, 500: 938, 938, 938, 938, 507: 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 542: 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 583: 938}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3481}, + {7: 3470, 47: 934, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301, 1090: 3482}, + {47: 3483}, + {144: 3320, 488: 3321, 738: 929, 881: 3484}, // 980 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 3305, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3481, 3210, 3291, 3209, 3206}, - {47: 3482, 479: 3306, 580: 3307}, - {737: 3318, 743: 3483}, - {938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 471: 938, 938, 938, 938, 938, 477: 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 490: 938, 938, 938, 938, 938, 938, 938, 938, 499: 938, 938, 938, 938, 506: 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 542: 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 580: 938}, - {47: 3485}, + {738: 3324, 744: 3485}, + {939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 472: 939, 939, 939, 939, 939, 478: 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 491: 939, 939, 939, 939, 939, 939, 939, 939, 500: 939, 939, 939, 939, 507: 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 542: 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 583: 939}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 3311, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3310, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3487, 3216, 3296, 3215, 3212}, + {47: 3488, 480: 3312, 583: 3313}, + {738: 3324, 744: 3489}, // 985 - {737: 3318, 743: 3486}, - {939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 471: 939, 939, 939, 939, 939, 477: 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 490: 939, 939, 939, 939, 939, 939, 939, 939, 499: 939, 939, 939, 939, 506: 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 542: 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 580: 939}, - {47: 3488}, - {737: 3318, 743: 3489}, - {940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 471: 940, 940, 940, 940, 940, 477: 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 490: 940, 940, 940, 940, 940, 940, 940, 940, 499: 940, 940, 940, 940, 506: 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 542: 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 580: 940}, - // 990 + {940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 472: 940, 940, 940, 940, 940, 478: 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 491: 940, 940, 940, 940, 940, 940, 940, 940, 500: 940, 940, 940, 940, 507: 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 542: 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 583: 940}, {47: 3491}, - {737: 3318, 743: 3492}, - {941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 471: 941, 941, 941, 941, 941, 477: 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 490: 941, 941, 941, 941, 941, 941, 941, 941, 499: 941, 941, 941, 941, 506: 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 542: 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 580: 941}, + {738: 3324, 744: 3492}, + {941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 472: 941, 941, 941, 941, 941, 478: 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 491: 941, 941, 941, 941, 941, 941, 941, 941, 500: 941, 941, 941, 941, 507: 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 542: 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 583: 941}, {47: 3494}, - {737: 3318, 743: 3495}, - // 995 - {942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 471: 942, 942, 942, 942, 942, 477: 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 490: 942, 942, 942, 942, 942, 942, 942, 942, 499: 942, 942, 942, 942, 506: 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 542: 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 580: 942}, + // 990 + {738: 3324, 744: 3495}, + {942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 472: 942, 942, 942, 942, 942, 478: 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 491: 942, 942, 942, 942, 942, 942, 942, 942, 500: 942, 942, 942, 942, 507: 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 542: 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 583: 942}, {47: 3497}, - {737: 3318, 743: 3498}, - {943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 471: 943, 943, 943, 943, 943, 477: 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 490: 943, 943, 943, 943, 943, 943, 943, 943, 499: 943, 943, 943, 943, 506: 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 542: 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 580: 943}, - {2: 1229, 1229, 1229, 1229, 1229, 8: 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 48: 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 470: 1229, 472: 1229, 1229, 1229, 476: 1229, 480: 1229, 1229, 1229, 1229, 1229, 489: 1229, 498: 1229, 503: 1229, 1229, 1229, 541: 1229, 563: 1229, 1229, 1229, 567: 1229, 1229, 1229, 571: 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 582: 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 592: 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 622: 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 644: 1229, 647: 3502, 741: 3500, 3501, 780: 3503, 783: 3504, 810: 3506, 812: 3505}, + {738: 3324, 744: 3498}, + {943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 472: 943, 943, 943, 943, 943, 478: 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 491: 943, 943, 943, 943, 943, 943, 943, 943, 500: 943, 943, 943, 943, 507: 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 542: 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 583: 943}, + // 995 + {47: 3500}, + {738: 3324, 744: 3501}, + {944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 472: 944, 944, 944, 944, 944, 478: 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 491: 944, 944, 944, 944, 944, 944, 944, 944, 500: 944, 944, 944, 944, 507: 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 542: 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 583: 944}, + {47: 3503}, + {738: 3324, 744: 3504}, // 1000 - {2: 1233, 1233, 1233, 1233, 1233, 8: 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 48: 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 470: 1233, 472: 1233, 1233, 1233, 476: 1233, 480: 1233, 1233, 1233, 1233, 1233, 489: 1233, 498: 1233, 503: 1233, 1233, 1233, 512: 1233, 520: 1233, 541: 1233, 563: 1233, 1233, 1233, 1233, 1233, 1233, 1233, 571: 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 582: 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 592: 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 622: 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 642: 1233, 644: 1233, 647: 1233, 741: 1233, 1233, 749: 1233, 1233, 1233, 758: 1233, 765: 1233, 1233, 1233}, - {2: 1232, 1232, 1232, 1232, 1232, 8: 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 48: 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 470: 1232, 472: 1232, 1232, 1232, 476: 1232, 480: 1232, 1232, 1232, 1232, 1232, 489: 1232, 498: 1232, 503: 1232, 1232, 1232, 512: 1232, 520: 1232, 541: 1232, 563: 1232, 1232, 1232, 1232, 1232, 1232, 1232, 571: 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 582: 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 592: 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 622: 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 642: 1232, 644: 1232, 647: 1232, 741: 1232, 1232, 749: 1232, 1232, 1232, 758: 1232, 765: 1232, 1232, 1232}, - {2: 1231, 1231, 1231, 1231, 1231, 8: 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 48: 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 470: 1231, 472: 1231, 1231, 1231, 476: 1231, 480: 1231, 1231, 1231, 1231, 1231, 489: 1231, 498: 1231, 503: 1231, 1231, 1231, 512: 1231, 520: 1231, 541: 1231, 563: 1231, 1231, 1231, 1231, 1231, 1231, 1231, 571: 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 582: 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 592: 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 622: 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 642: 1231, 644: 1231, 647: 1231, 741: 1231, 1231, 749: 1231, 1231, 1231, 758: 1231, 765: 1231, 1231, 1231}, - {2: 1230, 1230, 1230, 1230, 1230, 8: 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 48: 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 470: 1230, 472: 1230, 1230, 1230, 476: 1230, 480: 1230, 1230, 1230, 1230, 1230, 489: 1230, 498: 1230, 503: 1230, 1230, 1230, 541: 1230, 563: 1230, 1230, 1230, 567: 1230, 1230, 1230, 571: 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 582: 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 592: 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 622: 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 644: 1230, 647: 3511}, - {2: 1228, 1228, 1228, 1228, 1228, 8: 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 48: 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 470: 1228, 472: 1228, 1228, 1228, 476: 1228, 480: 1228, 1228, 1228, 1228, 1228, 489: 1228, 498: 1228, 503: 1228, 1228, 1228, 541: 1228, 563: 1228, 1228, 1228, 567: 1228, 1228, 1228, 571: 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 582: 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 592: 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 622: 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 644: 1228}, + {945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 472: 945, 945, 945, 945, 945, 478: 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 491: 945, 945, 945, 945, 945, 945, 945, 945, 500: 945, 945, 945, 945, 507: 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 542: 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 583: 945}, + {2: 1231, 1231, 1231, 1231, 1231, 8: 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 48: 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 471: 1231, 473: 1231, 1231, 1231, 477: 1231, 481: 1231, 1231, 1231, 1231, 1231, 490: 1231, 499: 1231, 504: 1231, 1231, 1231, 541: 1231, 564: 1231, 1231, 1231, 568: 1231, 1231, 1231, 572: 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 581: 1231, 1231, 585: 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 637: 1231, 1231, 1231, 645: 1231, 648: 3508, 742: 3506, 3507, 781: 3509, 784: 3510, 811: 3512, 813: 3511}, + {2: 1235, 1235, 1235, 1235, 1235, 8: 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 48: 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 471: 1235, 473: 1235, 1235, 1235, 477: 1235, 481: 1235, 1235, 1235, 1235, 1235, 490: 1235, 499: 1235, 504: 1235, 1235, 1235, 513: 1235, 521: 1235, 541: 1235, 564: 1235, 1235, 1235, 1235, 1235, 1235, 1235, 572: 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 581: 1235, 1235, 585: 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 637: 1235, 1235, 1235, 643: 1235, 645: 1235, 648: 1235, 742: 1235, 1235, 750: 1235, 1235, 1235, 759: 1235, 766: 1235, 1235, 1235}, + {2: 1234, 1234, 1234, 1234, 1234, 8: 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 48: 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 471: 1234, 473: 1234, 1234, 1234, 477: 1234, 481: 1234, 1234, 1234, 1234, 1234, 490: 1234, 499: 1234, 504: 1234, 1234, 1234, 513: 1234, 521: 1234, 541: 1234, 564: 1234, 1234, 1234, 1234, 1234, 1234, 1234, 572: 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 581: 1234, 1234, 585: 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 637: 1234, 1234, 1234, 643: 1234, 645: 1234, 648: 1234, 742: 1234, 1234, 750: 1234, 1234, 1234, 759: 1234, 766: 1234, 1234, 1234}, + {2: 1233, 1233, 1233, 1233, 1233, 8: 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 48: 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 471: 1233, 473: 1233, 1233, 1233, 477: 1233, 481: 1233, 1233, 1233, 1233, 1233, 490: 1233, 499: 1233, 504: 1233, 1233, 1233, 513: 1233, 521: 1233, 541: 1233, 564: 1233, 1233, 1233, 1233, 1233, 1233, 1233, 572: 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 581: 1233, 1233, 585: 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 637: 1233, 1233, 1233, 643: 1233, 645: 1233, 648: 1233, 742: 1233, 1233, 750: 1233, 1233, 1233, 759: 1233, 766: 1233, 1233, 1233}, // 1005 - {2: 1225, 1225, 1225, 1225, 1225, 8: 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 48: 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 470: 1225, 472: 1225, 1225, 1225, 476: 1225, 480: 1225, 1225, 1225, 1225, 1225, 489: 1225, 498: 1225, 503: 1225, 1225, 1225, 541: 1225, 563: 1225, 1225, 1225, 567: 1225, 1225, 1225, 571: 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 582: 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 592: 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 622: 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 644: 1225}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3507}, - {47: 3508, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, - {948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 471: 948, 948, 948, 948, 948, 477: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 490: 948, 948, 948, 948, 948, 948, 948, 948, 499: 948, 948, 948, 948, 506: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 542: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 580: 948, 737: 3318, 743: 3510, 761: 3509}, - {1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 471: 1112, 1112, 1112, 1112, 1112, 477: 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 490: 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 499: 1112, 1112, 1112, 1112, 506: 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 542: 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 580: 1112}, + {2: 1232, 1232, 1232, 1232, 1232, 8: 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 48: 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 471: 1232, 473: 1232, 1232, 1232, 477: 1232, 481: 1232, 1232, 1232, 1232, 1232, 490: 1232, 499: 1232, 504: 1232, 1232, 1232, 541: 1232, 564: 1232, 1232, 1232, 568: 1232, 1232, 1232, 572: 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 581: 1232, 1232, 585: 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 637: 1232, 1232, 1232, 645: 1232, 648: 3517}, + {2: 1230, 1230, 1230, 1230, 1230, 8: 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 48: 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 471: 1230, 473: 1230, 1230, 1230, 477: 1230, 481: 1230, 1230, 1230, 1230, 1230, 490: 1230, 499: 1230, 504: 1230, 1230, 1230, 541: 1230, 564: 1230, 1230, 1230, 568: 1230, 1230, 1230, 572: 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 581: 1230, 1230, 585: 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 637: 1230, 1230, 1230, 645: 1230}, + {2: 1227, 1227, 1227, 1227, 1227, 8: 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 48: 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 471: 1227, 473: 1227, 1227, 1227, 477: 1227, 481: 1227, 1227, 1227, 1227, 1227, 490: 1227, 499: 1227, 504: 1227, 1227, 1227, 541: 1227, 564: 1227, 1227, 1227, 568: 1227, 1227, 1227, 572: 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 581: 1227, 1227, 585: 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 637: 1227, 1227, 1227, 645: 1227}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3513}, + {47: 3514, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, // 1010 - {947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 471: 947, 947, 947, 947, 947, 477: 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 490: 947, 947, 947, 947, 947, 947, 947, 947, 499: 947, 947, 947, 947, 506: 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 542: 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 580: 947}, - {2: 1224, 1224, 1224, 1224, 1224, 8: 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 48: 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 470: 1224, 472: 1224, 1224, 1224, 476: 1224, 480: 1224, 1224, 1224, 1224, 1224, 489: 1224, 498: 1224, 503: 1224, 1224, 1224, 541: 1224, 563: 1224, 1224, 1224, 567: 1224, 1224, 1224, 571: 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 582: 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 592: 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 622: 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 644: 1224}, - {2: 1229, 1229, 1229, 1229, 1229, 8: 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 48: 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 470: 1229, 472: 1229, 1229, 1229, 476: 1229, 480: 1229, 1229, 1229, 1229, 1229, 489: 1229, 498: 1229, 503: 1229, 1229, 1229, 541: 1229, 563: 1229, 1229, 1229, 567: 1229, 1229, 1229, 571: 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 582: 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 592: 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 622: 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 644: 1229, 647: 3502, 741: 3500, 3501, 780: 3503, 783: 3504, 810: 3513, 812: 3505}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3514}, - {47: 3515, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, + {950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 472: 950, 950, 950, 950, 950, 478: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 491: 950, 950, 950, 950, 950, 950, 950, 950, 500: 950, 950, 950, 950, 507: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 542: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 583: 950, 738: 3324, 744: 3516, 762: 3515}, + {1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 472: 1114, 1114, 1114, 1114, 1114, 478: 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 491: 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 500: 1114, 1114, 1114, 1114, 507: 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 542: 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 583: 1114}, + {949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 472: 949, 949, 949, 949, 949, 478: 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 491: 949, 949, 949, 949, 949, 949, 949, 949, 500: 949, 949, 949, 949, 507: 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 542: 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 583: 949}, + {2: 1226, 1226, 1226, 1226, 1226, 8: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 48: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 471: 1226, 473: 1226, 1226, 1226, 477: 1226, 481: 1226, 1226, 1226, 1226, 1226, 490: 1226, 499: 1226, 504: 1226, 1226, 1226, 541: 1226, 564: 1226, 1226, 1226, 568: 1226, 1226, 1226, 572: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 581: 1226, 1226, 585: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 637: 1226, 1226, 1226, 645: 1226}, + {2: 1231, 1231, 1231, 1231, 1231, 8: 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 48: 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 471: 1231, 473: 1231, 1231, 1231, 477: 1231, 481: 1231, 1231, 1231, 1231, 1231, 490: 1231, 499: 1231, 504: 1231, 1231, 1231, 541: 1231, 564: 1231, 1231, 1231, 568: 1231, 1231, 1231, 572: 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 581: 1231, 1231, 585: 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 637: 1231, 1231, 1231, 645: 1231, 648: 3508, 742: 3506, 3507, 781: 3509, 784: 3510, 811: 3519, 813: 3511}, // 1015 - {948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 471: 948, 948, 948, 948, 948, 477: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 490: 948, 948, 948, 948, 948, 948, 948, 948, 499: 948, 948, 948, 948, 506: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 542: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 580: 948, 737: 3318, 743: 3510, 761: 3516}, - {1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 471: 1113, 1113, 1113, 1113, 1113, 477: 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 490: 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 499: 1113, 1113, 1113, 1113, 506: 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 542: 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 580: 1113}, - {2: 1229, 1229, 1229, 1229, 1229, 8: 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 48: 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 470: 1229, 472: 1229, 1229, 1229, 476: 1229, 480: 1229, 1229, 1229, 1229, 1229, 489: 1229, 498: 1229, 503: 1229, 1229, 1229, 541: 1229, 563: 1229, 1229, 1229, 567: 1229, 1229, 1229, 571: 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 582: 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 592: 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 622: 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 644: 1229, 647: 3502, 741: 3500, 3501, 780: 3503, 783: 3504, 810: 3518, 812: 3505}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3519}, - {47: 3520, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3520}, + {47: 3521, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 472: 950, 950, 950, 950, 950, 478: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 491: 950, 950, 950, 950, 950, 950, 950, 950, 500: 950, 950, 950, 950, 507: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 542: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 583: 950, 738: 3324, 744: 3516, 762: 3522}, + {1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 472: 1115, 1115, 1115, 1115, 1115, 478: 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 491: 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 500: 1115, 1115, 1115, 1115, 507: 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 542: 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 583: 1115}, + {2: 1231, 1231, 1231, 1231, 1231, 8: 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 48: 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 471: 1231, 473: 1231, 1231, 1231, 477: 1231, 481: 1231, 1231, 1231, 1231, 1231, 490: 1231, 499: 1231, 504: 1231, 1231, 1231, 541: 1231, 564: 1231, 1231, 1231, 568: 1231, 1231, 1231, 572: 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 581: 1231, 1231, 585: 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 637: 1231, 1231, 1231, 645: 1231, 648: 3508, 742: 3506, 3507, 781: 3509, 784: 3510, 811: 3524, 813: 3511}, // 1020 - {948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 471: 948, 948, 948, 948, 948, 477: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 490: 948, 948, 948, 948, 948, 948, 948, 948, 499: 948, 948, 948, 948, 506: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 542: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 580: 948, 737: 3318, 743: 3510, 761: 3521}, - {1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 471: 1114, 1114, 1114, 1114, 1114, 477: 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 490: 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 499: 1114, 1114, 1114, 1114, 506: 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 542: 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 580: 1114}, - {2: 1229, 1229, 1229, 1229, 1229, 8: 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 48: 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 470: 1229, 472: 1229, 1229, 1229, 476: 1229, 480: 1229, 1229, 1229, 1229, 1229, 489: 1229, 498: 1229, 503: 1229, 1229, 1229, 541: 1229, 563: 1229, 1229, 1229, 567: 1229, 1229, 1229, 571: 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 582: 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 592: 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 622: 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 644: 1229, 647: 3502, 741: 3500, 3501, 780: 3503, 783: 3504, 810: 3523, 812: 3505}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3524}, - {47: 3525, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3525}, + {47: 3526, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 472: 950, 950, 950, 950, 950, 478: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 491: 950, 950, 950, 950, 950, 950, 950, 950, 500: 950, 950, 950, 950, 507: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 542: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 583: 950, 738: 3324, 744: 3516, 762: 3527}, + {1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 472: 1116, 1116, 1116, 1116, 1116, 478: 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 491: 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 500: 1116, 1116, 1116, 1116, 507: 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 542: 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 583: 1116}, + {2: 1231, 1231, 1231, 1231, 1231, 8: 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 48: 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 471: 1231, 473: 1231, 1231, 1231, 477: 1231, 481: 1231, 1231, 1231, 1231, 1231, 490: 1231, 499: 1231, 504: 1231, 1231, 1231, 541: 1231, 564: 1231, 1231, 1231, 568: 1231, 1231, 1231, 572: 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 581: 1231, 1231, 585: 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 637: 1231, 1231, 1231, 645: 1231, 648: 3508, 742: 3506, 3507, 781: 3509, 784: 3510, 811: 3529, 813: 3511}, // 1025 - {948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 471: 948, 948, 948, 948, 948, 477: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 490: 948, 948, 948, 948, 948, 948, 948, 948, 499: 948, 948, 948, 948, 506: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 542: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 580: 948, 737: 3318, 743: 3510, 761: 3526}, - {1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 471: 1115, 1115, 1115, 1115, 1115, 477: 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 490: 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 499: 1115, 1115, 1115, 1115, 506: 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 542: 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 580: 1115}, - {2: 1229, 1229, 1229, 1229, 1229, 8: 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 48: 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 470: 1229, 472: 1229, 1229, 1229, 476: 1229, 480: 1229, 1229, 1229, 1229, 1229, 489: 1229, 498: 1229, 503: 1229, 1229, 1229, 541: 1229, 563: 1229, 1229, 1229, 567: 1229, 1229, 1229, 571: 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 582: 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 592: 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 622: 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 644: 1229, 647: 3502, 741: 3500, 3501, 780: 3503, 783: 3504, 810: 3528, 812: 3505}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3529}, - {47: 3530, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3530}, + {47: 3531, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 472: 950, 950, 950, 950, 950, 478: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 491: 950, 950, 950, 950, 950, 950, 950, 950, 500: 950, 950, 950, 950, 507: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 542: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 583: 950, 738: 3324, 744: 3516, 762: 3532}, + {1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 472: 1117, 1117, 1117, 1117, 1117, 478: 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 491: 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 500: 1117, 1117, 1117, 1117, 507: 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 542: 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 583: 1117}, + {2: 1231, 1231, 1231, 1231, 1231, 8: 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 48: 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 471: 1231, 473: 1231, 1231, 1231, 477: 1231, 481: 1231, 1231, 1231, 1231, 1231, 490: 1231, 499: 1231, 504: 1231, 1231, 1231, 541: 1231, 564: 1231, 1231, 1231, 568: 1231, 1231, 1231, 572: 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 581: 1231, 1231, 585: 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 637: 1231, 1231, 1231, 645: 1231, 648: 3508, 742: 3506, 3507, 781: 3509, 784: 3510, 811: 3534, 813: 3511}, // 1030 - {948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 471: 948, 948, 948, 948, 948, 477: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 490: 948, 948, 948, 948, 948, 948, 948, 948, 499: 948, 948, 948, 948, 506: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 542: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 580: 948, 737: 3318, 743: 3510, 761: 3531}, - {1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 471: 1116, 1116, 1116, 1116, 1116, 477: 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 490: 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 499: 1116, 1116, 1116, 1116, 506: 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 542: 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 580: 1116}, - {2: 1229, 1229, 1229, 1229, 1229, 8: 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 48: 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 470: 1229, 472: 1229, 1229, 1229, 476: 1229, 480: 1229, 1229, 1229, 1229, 1229, 489: 1229, 498: 1229, 503: 1229, 1229, 1229, 541: 1229, 563: 1229, 1229, 1229, 567: 1229, 1229, 1229, 571: 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 582: 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 592: 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 622: 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 644: 1229, 647: 3502, 741: 3500, 3501, 780: 3503, 783: 3504, 810: 3533, 812: 3505}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3534}, - {47: 3535, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3535}, + {47: 3536, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 472: 950, 950, 950, 950, 950, 478: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 491: 950, 950, 950, 950, 950, 950, 950, 950, 500: 950, 950, 950, 950, 507: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 542: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 583: 950, 738: 3324, 744: 3516, 762: 3537}, + {1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 472: 1118, 1118, 1118, 1118, 1118, 478: 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 491: 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 500: 1118, 1118, 1118, 1118, 507: 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 542: 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 583: 1118}, + {2: 1231, 1231, 1231, 1231, 1231, 8: 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 48: 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 471: 1231, 473: 1231, 1231, 1231, 477: 1231, 481: 1231, 1231, 1231, 1231, 1231, 490: 1231, 499: 1231, 504: 1231, 1231, 1231, 541: 1231, 564: 1231, 1231, 1231, 568: 1231, 1231, 1231, 572: 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 581: 1231, 1231, 585: 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 637: 1231, 1231, 1231, 645: 1231, 648: 3508, 742: 3506, 3507, 781: 3509, 784: 3510, 811: 3539, 813: 3511}, // 1035 - {948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 471: 948, 948, 948, 948, 948, 477: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 490: 948, 948, 948, 948, 948, 948, 948, 948, 499: 948, 948, 948, 948, 506: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 542: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 580: 948, 737: 3318, 743: 3510, 761: 3536}, - {1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 471: 1117, 1117, 1117, 1117, 1117, 477: 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 490: 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 499: 1117, 1117, 1117, 1117, 506: 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 542: 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 580: 1117}, - {2: 1229, 1229, 1229, 1229, 1229, 8: 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 48: 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 470: 1229, 472: 1229, 1229, 1229, 476: 1229, 480: 1229, 1229, 1229, 1229, 1229, 489: 1229, 498: 1229, 503: 1229, 1229, 1229, 541: 1229, 563: 1229, 1229, 1229, 567: 1229, 1229, 1229, 571: 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 582: 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 592: 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 622: 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 644: 1229, 647: 3502, 741: 3500, 3501, 780: 3503, 783: 3504, 810: 3538, 812: 3505}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3539}, - {47: 3540, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3540}, + {47: 3541, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 472: 950, 950, 950, 950, 950, 478: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 491: 950, 950, 950, 950, 950, 950, 950, 950, 500: 950, 950, 950, 950, 507: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 542: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 583: 950, 738: 3324, 744: 3516, 762: 3542}, + {1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 472: 1119, 1119, 1119, 1119, 1119, 478: 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 491: 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 500: 1119, 1119, 1119, 1119, 507: 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 542: 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 583: 1119}, + {2: 1231, 1231, 1231, 1231, 1231, 8: 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 48: 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 471: 1231, 473: 1231, 1231, 1231, 477: 1231, 481: 1231, 1231, 1231, 1231, 1231, 490: 1231, 499: 1231, 504: 1231, 1231, 1231, 541: 1231, 564: 1231, 1231, 1231, 568: 1231, 1231, 1231, 572: 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 581: 1231, 1231, 585: 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 637: 1231, 1231, 1231, 645: 1231, 648: 3508, 742: 3506, 3507, 781: 3509, 784: 3510, 811: 3544, 813: 3511}, // 1040 - {948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 471: 948, 948, 948, 948, 948, 477: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 490: 948, 948, 948, 948, 948, 948, 948, 948, 499: 948, 948, 948, 948, 506: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 542: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 580: 948, 737: 3318, 743: 3510, 761: 3541}, - {1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 471: 1118, 1118, 1118, 1118, 1118, 477: 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 490: 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 499: 1118, 1118, 1118, 1118, 506: 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 542: 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 580: 1118}, - {2: 1229, 1229, 1229, 1229, 1229, 8: 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 48: 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 470: 1229, 472: 1229, 1229, 1229, 476: 1229, 480: 1229, 1229, 1229, 1229, 1229, 489: 1229, 498: 1229, 503: 1229, 1229, 1229, 541: 1229, 563: 1229, 1229, 1229, 567: 1229, 1229, 1229, 571: 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 582: 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 592: 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 622: 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 644: 1229, 647: 3502, 741: 3500, 3501, 780: 3503, 783: 3504, 810: 3543, 812: 3505}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3544, 774: 3545}, - {1907, 1907, 7: 1907, 47: 1907, 125: 1907, 478: 1907, 499: 1907, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3545}, + {47: 3546, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 472: 950, 950, 950, 950, 950, 478: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 491: 950, 950, 950, 950, 950, 950, 950, 950, 500: 950, 950, 950, 950, 507: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 542: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 583: 950, 738: 3324, 744: 3516, 762: 3547}, + {1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 472: 1120, 1120, 1120, 1120, 1120, 478: 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 491: 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 500: 1120, 1120, 1120, 1120, 507: 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 542: 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 583: 1120}, + {2: 1231, 1231, 1231, 1231, 1231, 8: 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 48: 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 471: 1231, 473: 1231, 1231, 1231, 477: 1231, 481: 1231, 1231, 1231, 1231, 1231, 490: 1231, 499: 1231, 504: 1231, 1231, 1231, 541: 1231, 564: 1231, 1231, 1231, 568: 1231, 1231, 1231, 572: 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 581: 1231, 1231, 585: 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 637: 1231, 1231, 1231, 645: 1231, 648: 3508, 742: 3506, 3507, 781: 3509, 784: 3510, 811: 3549, 813: 3511}, // 1045 - {7: 3546, 47: 1284, 125: 1284, 499: 2686, 763: 2687, 807: 3547}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3553}, - {47: 1105, 125: 3549, 1254: 3548}, - {47: 3551}, - {472: 3550}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3550, 775: 3551}, + {1911, 1911, 7: 1911, 47: 1911, 125: 1911, 479: 1911, 500: 1911, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {7: 3552, 47: 1287, 125: 1287, 500: 2690, 764: 2691, 808: 3553}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3559}, + {47: 1107, 125: 3555, 1255: 3554}, // 1050 - {47: 1104}, - {948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 471: 948, 948, 948, 948, 948, 477: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 490: 948, 948, 948, 948, 948, 948, 948, 948, 499: 948, 948, 948, 948, 506: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 542: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 580: 948, 737: 3318, 743: 3510, 761: 3552}, - {1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 471: 1119, 1119, 1119, 1119, 1119, 477: 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 490: 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 499: 1119, 1119, 1119, 1119, 506: 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 542: 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 580: 1119}, - {1906, 1906, 7: 1906, 47: 1906, 125: 1906, 478: 1906, 499: 1906, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 520: 3558, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 647: 3557, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3555, 741: 3500, 3501, 780: 3556}, + {47: 3557}, + {473: 3556}, + {47: 1106}, + {950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 472: 950, 950, 950, 950, 950, 478: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 491: 950, 950, 950, 950, 950, 950, 950, 950, 500: 950, 950, 950, 950, 507: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 542: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 583: 950, 738: 3324, 744: 3516, 762: 3558}, + {1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 472: 1121, 1121, 1121, 1121, 1121, 478: 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 491: 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 500: 1121, 1121, 1121, 1121, 507: 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 542: 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 583: 1121}, // 1055 - {47: 3566, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3544, 774: 3564}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3561}, - {47: 3559}, - {948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 471: 948, 948, 948, 948, 948, 477: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 490: 948, 948, 948, 948, 948, 948, 948, 948, 499: 948, 948, 948, 948, 506: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 542: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 580: 948, 737: 3318, 743: 3510, 761: 3560}, + {1910, 1910, 7: 1910, 47: 1910, 125: 1910, 479: 1910, 500: 1910, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 521: 3564, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 648: 3563, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3561, 742: 3506, 3507, 781: 3562}, + {47: 3572, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3550, 775: 3570}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3567}, // 1060 - {1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 471: 1120, 1120, 1120, 1120, 1120, 477: 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 490: 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 499: 1120, 1120, 1120, 1120, 506: 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 542: 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 580: 1120}, - {47: 3562, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, - {948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 471: 948, 948, 948, 948, 948, 477: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 490: 948, 948, 948, 948, 948, 948, 948, 948, 499: 948, 948, 948, 948, 506: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 542: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 580: 948, 737: 3318, 743: 3510, 761: 3563}, - {1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 471: 1122, 1122, 1122, 1122, 1122, 477: 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 490: 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 499: 1122, 1122, 1122, 1122, 506: 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 542: 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 580: 1122}, - {7: 3546, 47: 3565}, + {47: 3565}, + {950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 472: 950, 950, 950, 950, 950, 478: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 491: 950, 950, 950, 950, 950, 950, 950, 950, 500: 950, 950, 950, 950, 507: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 542: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 583: 950, 738: 3324, 744: 3516, 762: 3566}, + {1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 472: 1122, 1122, 1122, 1122, 1122, 478: 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 491: 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 500: 1122, 1122, 1122, 1122, 507: 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 542: 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 583: 1122}, + {47: 3568, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 472: 950, 950, 950, 950, 950, 478: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 491: 950, 950, 950, 950, 950, 950, 950, 950, 500: 950, 950, 950, 950, 507: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 542: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 583: 950, 738: 3324, 744: 3516, 762: 3569}, // 1065 - {1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 471: 1123, 1123, 1123, 1123, 1123, 477: 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 490: 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 499: 1123, 1123, 1123, 1123, 506: 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 542: 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 580: 1123}, - {948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 471: 948, 948, 948, 948, 948, 477: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 490: 948, 948, 948, 948, 948, 948, 948, 948, 499: 948, 948, 948, 948, 506: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 542: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 580: 948, 737: 3318, 743: 3510, 761: 3567}, - {1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 471: 1121, 1121, 1121, 1121, 1121, 477: 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 490: 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 499: 1121, 1121, 1121, 1121, 506: 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 542: 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 580: 1121}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 647: 3570, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3569}, - {47: 3574, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, + {1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 472: 1124, 1124, 1124, 1124, 1124, 478: 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 491: 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 500: 1124, 1124, 1124, 1124, 507: 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 542: 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 583: 1124}, + {7: 3552, 47: 3571}, + {1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 472: 1125, 1125, 1125, 1125, 1125, 478: 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 491: 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 500: 1125, 1125, 1125, 1125, 507: 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 542: 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 583: 1125}, + {950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 472: 950, 950, 950, 950, 950, 478: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 491: 950, 950, 950, 950, 950, 950, 950, 950, 500: 950, 950, 950, 950, 507: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 542: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 583: 950, 738: 3324, 744: 3516, 762: 3573}, + {1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 472: 1123, 1123, 1123, 1123, 1123, 478: 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 491: 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 500: 1123, 1123, 1123, 1123, 507: 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 542: 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 583: 1123}, // 1070 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3571}, - {47: 3572, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, - {948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 471: 948, 948, 948, 948, 948, 477: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 490: 948, 948, 948, 948, 948, 948, 948, 948, 499: 948, 948, 948, 948, 506: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 542: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 580: 948, 737: 3318, 743: 3510, 761: 3573}, - {1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 471: 1124, 1124, 1124, 1124, 1124, 477: 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 490: 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 499: 1124, 1124, 1124, 1124, 506: 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 542: 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 580: 1124}, - {948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 471: 948, 948, 948, 948, 948, 477: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 490: 948, 948, 948, 948, 948, 948, 948, 948, 499: 948, 948, 948, 948, 506: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 542: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 580: 948, 737: 3318, 743: 3510, 761: 3575}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 648: 3576, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3575}, + {47: 3580, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3577}, + {47: 3578, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 472: 950, 950, 950, 950, 950, 478: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 491: 950, 950, 950, 950, 950, 950, 950, 950, 500: 950, 950, 950, 950, 507: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 542: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 583: 950, 738: 3324, 744: 3516, 762: 3579}, // 1075 - {1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 471: 1125, 1125, 1125, 1125, 1125, 477: 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 490: 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 499: 1125, 1125, 1125, 1125, 506: 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 542: 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 580: 1125}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 647: 3578, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3577}, - {47: 3582, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3579}, - {47: 3580, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, + {1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 472: 1126, 1126, 1126, 1126, 1126, 478: 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 491: 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 500: 1126, 1126, 1126, 1126, 507: 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 542: 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 583: 1126}, + {950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 472: 950, 950, 950, 950, 950, 478: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 491: 950, 950, 950, 950, 950, 950, 950, 950, 500: 950, 950, 950, 950, 507: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 542: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 583: 950, 738: 3324, 744: 3516, 762: 3581}, + {1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 472: 1127, 1127, 1127, 1127, 1127, 478: 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 491: 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 500: 1127, 1127, 1127, 1127, 507: 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 542: 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 583: 1127}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 648: 3584, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3583}, + {47: 3588, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, // 1080 - {948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 471: 948, 948, 948, 948, 948, 477: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 490: 948, 948, 948, 948, 948, 948, 948, 948, 499: 948, 948, 948, 948, 506: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 542: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 580: 948, 737: 3318, 743: 3510, 761: 3581}, - {1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 471: 1126, 1126, 1126, 1126, 1126, 477: 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 490: 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 499: 1126, 1126, 1126, 1126, 506: 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 542: 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 580: 1126}, - {948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 471: 948, 948, 948, 948, 948, 477: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 490: 948, 948, 948, 948, 948, 948, 948, 948, 499: 948, 948, 948, 948, 506: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 542: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 580: 948, 737: 3318, 743: 3510, 761: 3583}, - {1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 471: 1127, 1127, 1127, 1127, 1127, 477: 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 490: 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 499: 1127, 1127, 1127, 1127, 506: 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 542: 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 580: 1127}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 647: 3586, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3585}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3585}, + {47: 3586, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 472: 950, 950, 950, 950, 950, 478: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 491: 950, 950, 950, 950, 950, 950, 950, 950, 500: 950, 950, 950, 950, 507: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 542: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 583: 950, 738: 3324, 744: 3516, 762: 3587}, + {1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 472: 1128, 1128, 1128, 1128, 1128, 478: 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 491: 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 500: 1128, 1128, 1128, 1128, 507: 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 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, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 583: 1128}, + {950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 472: 950, 950, 950, 950, 950, 478: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 491: 950, 950, 950, 950, 950, 950, 950, 950, 500: 950, 950, 950, 950, 507: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 542: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 583: 950, 738: 3324, 744: 3516, 762: 3589}, // 1085 - {47: 3590, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3587}, - {47: 3588, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, - {948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 471: 948, 948, 948, 948, 948, 477: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 490: 948, 948, 948, 948, 948, 948, 948, 948, 499: 948, 948, 948, 948, 506: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 542: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 580: 948, 737: 3318, 743: 3510, 761: 3589}, - {1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 471: 1128, 1128, 1128, 1128, 1128, 477: 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 490: 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 499: 1128, 1128, 1128, 1128, 506: 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 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, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 580: 1128}, + {1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 472: 1129, 1129, 1129, 1129, 1129, 478: 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 491: 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 500: 1129, 1129, 1129, 1129, 507: 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 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, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 583: 1129}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 648: 3592, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3591}, + {47: 3596, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3593}, + {47: 3594, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, // 1090 - {948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 471: 948, 948, 948, 948, 948, 477: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 490: 948, 948, 948, 948, 948, 948, 948, 948, 499: 948, 948, 948, 948, 506: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 542: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 580: 948, 737: 3318, 743: 3510, 761: 3591}, - {1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 471: 1129, 1129, 1129, 1129, 1129, 477: 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 490: 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 499: 1129, 1129, 1129, 1129, 506: 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 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, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 580: 1129}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3544, 774: 3593}, - {7: 3546, 47: 3594}, - {1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 471: 1130, 1130, 1130, 1130, 1130, 477: 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 490: 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 499: 1130, 1130, 1130, 1130, 506: 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 542: 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 580: 1130}, + {950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 472: 950, 950, 950, 950, 950, 478: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 491: 950, 950, 950, 950, 950, 950, 950, 950, 500: 950, 950, 950, 950, 507: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 542: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 583: 950, 738: 3324, 744: 3516, 762: 3595}, + {1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 472: 1130, 1130, 1130, 1130, 1130, 478: 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 491: 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 500: 1130, 1130, 1130, 1130, 507: 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 542: 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 583: 1130}, + {950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 472: 950, 950, 950, 950, 950, 478: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 491: 950, 950, 950, 950, 950, 950, 950, 950, 500: 950, 950, 950, 950, 507: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 542: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 583: 950, 738: 3324, 744: 3516, 762: 3597}, + {1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 472: 1131, 1131, 1131, 1131, 1131, 478: 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 491: 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 500: 1131, 1131, 1131, 1131, 507: 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 542: 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 583: 1131}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3550, 775: 3599}, // 1095 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3544, 774: 3596}, - {7: 3546, 47: 3597}, - {1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 471: 1131, 1131, 1131, 1131, 1131, 477: 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 490: 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 499: 1131, 1131, 1131, 1131, 506: 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 542: 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 580: 1131}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3599}, - {7: 3600, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, + {7: 3552, 47: 3600}, + {1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 472: 1132, 1132, 1132, 1132, 1132, 478: 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 491: 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 500: 1132, 1132, 1132, 1132, 507: 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 542: 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 583: 1132}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3550, 775: 3602}, + {7: 3552, 47: 3603}, + {1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 472: 1133, 1133, 1133, 1133, 1133, 478: 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 491: 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 500: 1133, 1133, 1133, 1133, 507: 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 542: 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 583: 1133}, // 1100 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3601}, - {7: 3602, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3603}, - {47: 3604, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, - {1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 471: 1147, 1147, 1147, 1147, 1147, 477: 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 490: 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 499: 1147, 1147, 1147, 1147, 506: 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 542: 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 580: 1147}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3605}, + {7: 3606, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3607}, + {7: 3608, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3609}, // 1105 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3606, 1177: 3608, 1231: 3609, 1316: 3610, 3607}, - {47: 3618, 495: 3619, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 495: 3612, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3611}, - {2: 1138, 1138, 1138, 1138, 1138, 8: 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 48: 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 470: 1138, 472: 1138, 1138, 1138, 476: 1138, 480: 1138, 1138, 1138, 1138, 1138, 489: 1138, 495: 1138, 498: 1138, 503: 1138, 1138, 1138, 541: 1138, 563: 1138, 1138, 1138, 567: 1138, 1138, 1138, 571: 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 582: 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 592: 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 622: 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 644: 1138}, - {2: 1137, 1137, 1137, 1137, 1137, 8: 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 48: 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 470: 1137, 472: 1137, 1137, 1137, 476: 1137, 480: 1137, 1137, 1137, 1137, 1137, 489: 1137, 495: 1137, 498: 1137, 503: 1137, 1137, 1137, 541: 1137, 563: 1137, 1137, 1137, 567: 1137, 1137, 1137, 571: 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 582: 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 592: 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 622: 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 644: 1137}, + {47: 3610, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 472: 1149, 1149, 1149, 1149, 1149, 478: 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 491: 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 500: 1149, 1149, 1149, 1149, 507: 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 542: 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 583: 1149}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3612, 1178: 3614, 1232: 3615, 1317: 3616, 3613}, + {47: 3624, 497: 3625, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 497: 3618, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3617}, // 1110 - {2: 1136, 1136, 1136, 1136, 1136, 8: 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 48: 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 470: 1136, 472: 1136, 1136, 1136, 476: 1136, 480: 1136, 1136, 1136, 1136, 1136, 489: 1136, 495: 1136, 498: 1136, 503: 1136, 1136, 1136, 541: 1136, 563: 1136, 1136, 1136, 567: 1136, 1136, 1136, 571: 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 582: 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 592: 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 622: 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 644: 1136}, - {495: 3615, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3613}, - {47: 3614, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, - {1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 471: 1153, 1153, 1153, 1153, 1153, 477: 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 490: 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 499: 1153, 1153, 1153, 1153, 506: 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 542: 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 580: 1153}, + {2: 1140, 1140, 1140, 1140, 1140, 8: 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 48: 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 471: 1140, 473: 1140, 1140, 1140, 477: 1140, 481: 1140, 1140, 1140, 1140, 1140, 490: 1140, 497: 1140, 499: 1140, 504: 1140, 1140, 1140, 541: 1140, 564: 1140, 1140, 1140, 568: 1140, 1140, 1140, 572: 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 581: 1140, 1140, 585: 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 637: 1140, 1140, 1140, 645: 1140}, + {2: 1139, 1139, 1139, 1139, 1139, 8: 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 48: 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 471: 1139, 473: 1139, 1139, 1139, 477: 1139, 481: 1139, 1139, 1139, 1139, 1139, 490: 1139, 497: 1139, 499: 1139, 504: 1139, 1139, 1139, 541: 1139, 564: 1139, 1139, 1139, 568: 1139, 1139, 1139, 572: 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 581: 1139, 1139, 585: 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 637: 1139, 1139, 1139, 645: 1139}, + {2: 1138, 1138, 1138, 1138, 1138, 8: 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 48: 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 471: 1138, 473: 1138, 1138, 1138, 477: 1138, 481: 1138, 1138, 1138, 1138, 1138, 490: 1138, 497: 1138, 499: 1138, 504: 1138, 1138, 1138, 541: 1138, 564: 1138, 1138, 1138, 568: 1138, 1138, 1138, 572: 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 581: 1138, 1138, 585: 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 637: 1138, 1138, 1138, 645: 1138}, + {497: 3621, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3619}, // 1115 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3616}, - {47: 3617, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, - {1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 471: 1152, 1152, 1152, 1152, 1152, 477: 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 490: 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 499: 1152, 1152, 1152, 1152, 506: 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 542: 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 580: 1152}, - {1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 471: 1155, 1155, 1155, 1155, 1155, 477: 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 490: 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 499: 1155, 1155, 1155, 1155, 506: 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 542: 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 580: 1155}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3620}, + {47: 3620, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 472: 1155, 1155, 1155, 1155, 1155, 478: 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 491: 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 500: 1155, 1155, 1155, 1155, 507: 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 542: 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 583: 1155}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3622}, + {47: 3623, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 472: 1154, 1154, 1154, 1154, 1154, 478: 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 491: 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 500: 1154, 1154, 1154, 1154, 507: 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 542: 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 583: 1154}, // 1120 - {47: 3621, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, - {1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 471: 1154, 1154, 1154, 1154, 1154, 477: 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 490: 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 499: 1154, 1154, 1154, 1154, 506: 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 542: 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 580: 1154}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3623}, - {7: 3624, 495: 3625, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3631}, + {1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 472: 1157, 1157, 1157, 1157, 1157, 478: 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 491: 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 500: 1157, 1157, 1157, 1157, 507: 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 542: 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 583: 1157}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3626}, + {47: 3627, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 472: 1156, 1156, 1156, 1156, 1156, 478: 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 491: 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 500: 1156, 1156, 1156, 1156, 507: 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 542: 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 583: 1156}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3629}, // 1125 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3626}, - {47: 3627, 491: 3628, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, - {1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 471: 1160, 1160, 1160, 1160, 1160, 477: 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 490: 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 499: 1160, 1160, 1160, 1160, 506: 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 542: 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 580: 1160}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3629}, - {47: 3630, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, + {7: 3630, 497: 3631, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3637}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3632}, + {47: 3633, 492: 3634, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 472: 1162, 1162, 1162, 1162, 1162, 478: 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 491: 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 500: 1162, 1162, 1162, 1162, 507: 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 542: 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 583: 1162}, // 1130 - {1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 471: 1158, 1158, 1158, 1158, 1158, 477: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 490: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 499: 1158, 1158, 1158, 1158, 506: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 542: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 580: 1158}, - {7: 3633, 47: 3632, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, - {1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 471: 1161, 1161, 1161, 1161, 1161, 477: 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 490: 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 499: 1161, 1161, 1161, 1161, 506: 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 542: 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 580: 1161}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3634}, - {47: 3635, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3635}, + {47: 3636, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 472: 1160, 1160, 1160, 1160, 1160, 478: 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 491: 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 500: 1160, 1160, 1160, 1160, 507: 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 542: 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 583: 1160}, + {7: 3639, 47: 3638, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 472: 1163, 1163, 1163, 1163, 1163, 478: 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 491: 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 500: 1163, 1163, 1163, 1163, 507: 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 542: 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 583: 1163}, // 1135 - {1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 471: 1159, 1159, 1159, 1159, 1159, 477: 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 490: 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 499: 1159, 1159, 1159, 1159, 506: 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 542: 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 580: 1159}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 3305, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 3637}, - {482: 3643, 3642, 3648, 520: 3644, 540: 3650, 553: 3645, 3646, 3639, 3649, 3638, 3647, 3640, 3641}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 3305, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 3670}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 3305, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 3669}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3640}, + {47: 3641, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 472: 1161, 1161, 1161, 1161, 1161, 478: 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 491: 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 500: 1161, 1161, 1161, 1161, 507: 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 542: 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 583: 1161}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 3311, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 3643}, + {483: 3648, 3649, 3654, 521: 3650, 542: 3656, 554: 3651, 3652, 3645, 3655, 3644, 3653, 3646, 3647}, // 1140 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 3305, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 3668}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 3305, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 3667}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 3305, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3664, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 3663}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 3305, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3660, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 3659}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 3305, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 3658}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 3311, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 3678}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 3311, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 3677}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 3311, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 3676}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 3311, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 3675}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 3311, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3672, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 3671}, // 1145 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 3305, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 3657}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 3305, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 3656}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 3305, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 3655}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 3305, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 3654}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 3305, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 3653}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 3311, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3666, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 3665}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 3311, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 3664}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 3311, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 3663}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 3311, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 3662}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 3311, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 3661}, // 1150 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3651}, - {47: 3652, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, - {1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 471: 1162, 1162, 1162, 1162, 1162, 477: 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 490: 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 499: 1162, 1162, 1162, 1162, 506: 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 542: 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 580: 1162}, - {1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 471: 1269, 1269, 1269, 1269, 1269, 477: 1269, 1269, 480: 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 490: 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 499: 1269, 1269, 1269, 1269, 506: 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 542: 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269}, - {1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 471: 1270, 1270, 1270, 1270, 1270, 477: 1270, 1270, 480: 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 490: 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 499: 1270, 1270, 1270, 1270, 506: 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 542: 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 3649, 1270, 1270, 1270, 1270, 1270, 1270}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 3311, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 3660}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 3311, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 3659}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3657}, + {47: 3658, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 472: 1164, 1164, 1164, 1164, 1164, 478: 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 491: 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 500: 1164, 1164, 1164, 1164, 507: 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 542: 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 583: 1164}, // 1155 - {1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 471: 1271, 1271, 1271, 1271, 1271, 477: 1271, 1271, 480: 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 490: 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 499: 1271, 1271, 1271, 1271, 506: 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 542: 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 3649, 1271, 1271, 1271, 1271, 1271, 1271}, - {1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 471: 1272, 1272, 1272, 1272, 1272, 477: 1272, 1272, 480: 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 490: 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 499: 1272, 1272, 1272, 1272, 506: 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 542: 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 3649, 1272, 1272, 1272, 1272, 1272, 1272}, - {1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 471: 1273, 1273, 1273, 1273, 1273, 477: 1273, 1273, 480: 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 490: 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 499: 1273, 1273, 1273, 1273, 506: 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 542: 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 3649, 1273, 1273, 1273, 1273, 1273, 1273}, - {1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 471: 1274, 1274, 1274, 1274, 1274, 477: 1274, 1274, 480: 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 490: 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 499: 1274, 1274, 1274, 1274, 506: 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 542: 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 3649, 1274, 1274, 1274, 1274, 1274, 1274}, - {1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 471: 1277, 1277, 1277, 1277, 1277, 477: 1277, 1277, 480: 1277, 1277, 1277, 1277, 3648, 1277, 1277, 1277, 490: 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 499: 1277, 1277, 1277, 1277, 506: 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 3644, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 542: 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 3645, 3646, 1277, 3649, 1277, 3647, 1277, 1277, 1277, 1277}, + {1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 472: 1271, 1271, 1271, 1271, 1271, 478: 1271, 1271, 481: 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 491: 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 500: 1271, 1271, 1271, 1271, 507: 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 542: 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271}, + {1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 472: 1272, 1272, 1272, 1272, 1272, 478: 1272, 1272, 481: 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 491: 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 500: 1272, 1272, 1272, 1272, 507: 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 542: 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 3655, 1272, 1272, 1272, 1272, 1272, 1272}, + {1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 472: 1273, 1273, 1273, 1273, 1273, 478: 1273, 1273, 481: 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 491: 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 500: 1273, 1273, 1273, 1273, 507: 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 542: 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 3655, 1273, 1273, 1273, 1273, 1273, 1273}, + {1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 472: 1274, 1274, 1274, 1274, 1274, 478: 1274, 1274, 481: 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 491: 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 500: 1274, 1274, 1274, 1274, 507: 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 542: 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 3655, 1274, 1274, 1274, 1274, 1274, 1274}, + {1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 472: 1275, 1275, 1275, 1275, 1275, 478: 1275, 1275, 481: 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 491: 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 500: 1275, 1275, 1275, 1275, 507: 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 542: 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 3655, 1275, 1275, 1275, 1275, 1275, 1275}, // 1160 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 1214, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3661}, - {105: 3420, 3416, 108: 3413, 3428, 111: 3415, 3412, 3414, 3418, 3419, 3424, 3423, 3422, 3426, 3427, 3421, 3425, 124: 3417, 502: 3302, 506: 3300, 3301, 3299, 3297, 528: 3410, 3407, 3409, 3408, 3404, 3406, 3405, 3402, 3403, 3401, 3411, 730: 3298, 3296, 801: 3400, 825: 3662}, - {1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 471: 1275, 1275, 1275, 1275, 1275, 477: 1275, 1275, 480: 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 490: 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 499: 1275, 1275, 1275, 1275, 506: 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 542: 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275}, - {1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 471: 1278, 1278, 1278, 1278, 1278, 477: 1278, 1278, 480: 1278, 1278, 1278, 1278, 3648, 1278, 1278, 1278, 490: 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 499: 1278, 1278, 1278, 1278, 506: 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 3644, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 542: 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 3645, 3646, 1278, 3649, 1278, 3647, 1278, 1278, 1278, 1278}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 1214, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3665}, + {1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 472: 1276, 1276, 1276, 1276, 1276, 478: 1276, 1276, 481: 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 491: 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 500: 1276, 1276, 1276, 1276, 507: 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 542: 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 3655, 1276, 1276, 1276, 1276, 1276, 1276}, + {1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 472: 1280, 1280, 1280, 1280, 1280, 478: 1280, 1280, 481: 1280, 1280, 1280, 1280, 3654, 1280, 1280, 1280, 491: 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 500: 1280, 1280, 1280, 1280, 507: 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 3650, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 542: 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 3651, 3652, 1280, 3655, 1280, 3653, 1280, 1280, 1280, 1280}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 1216, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3667}, + {101: 3426, 104: 3422, 108: 3419, 3434, 3421, 3418, 3420, 3424, 3425, 3430, 3429, 3428, 3432, 3433, 3427, 3431, 123: 3423, 503: 3307, 507: 3305, 3306, 3304, 3302, 529: 3416, 3413, 3415, 3414, 3410, 3412, 3411, 3408, 3409, 3407, 3417, 731: 3303, 3301, 800: 3406, 819: 3668}, + {1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 472: 1278, 1278, 1278, 1278, 1278, 478: 1278, 1278, 481: 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 491: 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 500: 1278, 1278, 1278, 1278, 507: 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 542: 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278}, // 1165 - {105: 3420, 3416, 108: 3413, 3428, 111: 3415, 3412, 3414, 3418, 3419, 3424, 3423, 3422, 3426, 3427, 3421, 3425, 124: 3417, 502: 3302, 506: 3300, 3301, 3299, 3297, 528: 3410, 3407, 3409, 3408, 3404, 3406, 3405, 3402, 3403, 3401, 3411, 730: 3298, 3296, 801: 3400, 825: 3666}, - {1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 471: 1276, 1276, 1276, 1276, 1276, 477: 1276, 1276, 480: 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 490: 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 499: 1276, 1276, 1276, 1276, 506: 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 542: 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276}, - {1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 471: 1279, 1279, 1279, 1279, 1279, 477: 1279, 1279, 480: 1279, 1279, 3643, 3642, 3648, 1279, 1279, 1279, 490: 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 499: 1279, 1279, 1279, 1279, 506: 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 3644, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 542: 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 3645, 3646, 1279, 3649, 1279, 3647, 1279, 1279, 1279, 1279}, - {1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 471: 1280, 1280, 1280, 1280, 1280, 477: 1280, 1280, 480: 1280, 1280, 3643, 3642, 3648, 1280, 1280, 1280, 490: 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 499: 1280, 1280, 1280, 1280, 506: 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 3644, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 542: 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 3645, 3646, 1280, 3649, 1280, 3647, 1280, 1280, 1280, 1280}, - {1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 471: 1281, 1281, 1281, 1281, 1281, 477: 1281, 1281, 480: 1281, 1281, 3643, 3642, 3648, 1281, 1281, 1281, 490: 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 499: 1281, 1281, 1281, 1281, 506: 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 3644, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 542: 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 3645, 3646, 1281, 3649, 1281, 3647, 3640, 3641, 1281, 1281}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 3311, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 3670}, + {1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 472: 1277, 1277, 1277, 1277, 1277, 478: 1277, 1277, 481: 1277, 1277, 1277, 1277, 3654, 1277, 1277, 1277, 491: 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 500: 1277, 1277, 1277, 1277, 507: 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 3650, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 542: 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 3651, 3652, 1277, 3655, 1277, 3653, 1277, 1277, 1277, 1277}, + {1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 472: 1281, 1281, 1281, 1281, 1281, 478: 1281, 1281, 481: 1281, 1281, 1281, 1281, 3654, 1281, 1281, 1281, 491: 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 500: 1281, 1281, 1281, 1281, 507: 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 3650, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 542: 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 3651, 3652, 1281, 3655, 1281, 3653, 1281, 1281, 1281, 1281}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 1216, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3673}, + {101: 3426, 104: 3422, 108: 3419, 3434, 3421, 3418, 3420, 3424, 3425, 3430, 3429, 3428, 3432, 3433, 3427, 3431, 123: 3423, 503: 3307, 507: 3305, 3306, 3304, 3302, 529: 3416, 3413, 3415, 3414, 3410, 3412, 3411, 3408, 3409, 3407, 3417, 731: 3303, 3301, 800: 3406, 819: 3674}, // 1170 - {1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 471: 1282, 1282, 1282, 1282, 1282, 477: 1282, 1282, 480: 1282, 1282, 3643, 3642, 3648, 1282, 1282, 1282, 490: 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 499: 1282, 1282, 1282, 1282, 506: 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 3644, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 542: 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 3645, 3646, 3639, 3649, 1282, 3647, 3640, 3641, 1282, 1282}, - {105: 3420, 3416, 108: 3413, 3428, 111: 3415, 3412, 3414, 3418, 3419, 3424, 3423, 3422, 3426, 3427, 3421, 3425, 124: 3417, 528: 3410, 3407, 3409, 3408, 3404, 3406, 3405, 3402, 3403, 3401, 3411, 801: 3400, 825: 3672}, - {495: 3673}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3674}, - {47: 3675, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, + {1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 472: 1279, 1279, 1279, 1279, 1279, 478: 1279, 1279, 481: 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 491: 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 500: 1279, 1279, 1279, 1279, 507: 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 542: 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279}, + {1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 472: 1282, 1282, 1282, 1282, 1282, 478: 1282, 1282, 481: 1282, 1282, 3648, 3649, 3654, 1282, 1282, 1282, 491: 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 500: 1282, 1282, 1282, 1282, 507: 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 3650, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 542: 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 3651, 3652, 1282, 3655, 1282, 3653, 1282, 1282, 1282, 1282}, + {1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 472: 1283, 1283, 1283, 1283, 1283, 478: 1283, 1283, 481: 1283, 1283, 3648, 3649, 3654, 1283, 1283, 1283, 491: 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 500: 1283, 1283, 1283, 1283, 507: 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 3650, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 542: 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 3651, 3652, 1283, 3655, 1283, 3653, 1283, 1283, 1283, 1283}, + {1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 472: 1284, 1284, 1284, 1284, 1284, 478: 1284, 1284, 481: 1284, 1284, 3648, 3649, 3654, 1284, 1284, 1284, 491: 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 500: 1284, 1284, 1284, 1284, 507: 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 3650, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 542: 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 3651, 3652, 1284, 3655, 1284, 3653, 3646, 3647, 1284, 1284}, + {1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 472: 1285, 1285, 1285, 1285, 1285, 478: 1285, 1285, 481: 1285, 1285, 3648, 3649, 3654, 1285, 1285, 1285, 491: 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 500: 1285, 1285, 1285, 1285, 507: 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 3650, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 542: 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 3651, 3652, 3645, 3655, 1285, 3653, 3646, 3647, 1285, 1285}, // 1175 - {1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 471: 1164, 1164, 1164, 1164, 1164, 477: 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 490: 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 499: 1164, 1164, 1164, 1164, 506: 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 542: 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 580: 1164}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3677}, - {7: 3678, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, - {578: 3679}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3680}, + {101: 3426, 104: 3422, 108: 3419, 3434, 3421, 3418, 3420, 3424, 3425, 3430, 3429, 3428, 3432, 3433, 3427, 3431, 123: 3423, 529: 3416, 3413, 3415, 3414, 3410, 3412, 3411, 3408, 3409, 3407, 3417, 800: 3406, 819: 3680}, + {497: 3681}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3682}, + {47: 3683, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 472: 1166, 1166, 1166, 1166, 1166, 478: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 491: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 500: 1166, 1166, 1166, 1166, 507: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 542: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 583: 1166}, // 1180 - {105: 3420, 3416, 108: 3413, 3428, 111: 3415, 3412, 3414, 3418, 3419, 3424, 3423, 3422, 3426, 3427, 3421, 3425, 124: 3417, 502: 3302, 506: 3300, 3301, 3299, 3297, 528: 3410, 3407, 3409, 3408, 3404, 3406, 3405, 3402, 3403, 3401, 3411, 730: 3298, 3296, 801: 3400, 825: 3681}, - {47: 3682}, - {1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 471: 1165, 1165, 1165, 1165, 1165, 477: 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 490: 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 499: 1165, 1165, 1165, 1165, 506: 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 542: 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 580: 1165}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3684}, - {7: 3685, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3685}, + {7: 3686, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {579: 3687}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3688}, + {101: 3426, 104: 3422, 108: 3419, 3434, 3421, 3418, 3420, 3424, 3425, 3430, 3429, 3428, 3432, 3433, 3427, 3431, 123: 3423, 503: 3307, 507: 3305, 3306, 3304, 3302, 529: 3416, 3413, 3415, 3414, 3410, 3412, 3411, 3408, 3409, 3407, 3417, 731: 3303, 3301, 800: 3406, 819: 3689}, // 1185 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3687, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3686}, - {47: 3691, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 1214, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3688}, - {105: 3420, 3416, 108: 3413, 3428, 111: 3415, 3412, 3414, 3418, 3419, 3424, 3423, 3422, 3426, 3427, 3421, 3425, 124: 3417, 502: 3302, 506: 3300, 3301, 3299, 3297, 528: 3410, 3407, 3409, 3408, 3404, 3406, 3405, 3402, 3403, 3401, 3411, 730: 3298, 3296, 801: 3400, 825: 3689}, {47: 3690}, + {1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 472: 1167, 1167, 1167, 1167, 1167, 478: 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 491: 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 500: 1167, 1167, 1167, 1167, 507: 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 542: 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 583: 1167}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3692}, + {7: 3693, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3695, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3694}, // 1190 - {1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 471: 1166, 1166, 1166, 1166, 1166, 477: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 490: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 499: 1166, 1166, 1166, 1166, 506: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 542: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 580: 1166}, - {1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 471: 1167, 1167, 1167, 1167, 1167, 477: 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 490: 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 499: 1167, 1167, 1167, 1167, 506: 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 542: 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 580: 1167}, - {47: 1901, 505: 3694, 1047: 3693, 3695}, - {47: 1900}, - {47: 1899}, + {47: 3699, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 1216, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3696}, + {101: 3426, 104: 3422, 108: 3419, 3434, 3421, 3418, 3420, 3424, 3425, 3430, 3429, 3428, 3432, 3433, 3427, 3431, 123: 3423, 503: 3307, 507: 3305, 3306, 3304, 3302, 529: 3416, 3413, 3415, 3414, 3410, 3412, 3411, 3408, 3409, 3407, 3417, 731: 3303, 3301, 800: 3406, 819: 3697}, + {47: 3698, 483: 3669}, + {1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 472: 1168, 1168, 1168, 1168, 1168, 478: 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 491: 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 500: 1168, 1168, 1168, 1168, 507: 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 542: 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 583: 1168}, // 1195 - {47: 3696}, - {1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 471: 1168, 1168, 1168, 1168, 1168, 477: 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 490: 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 499: 1168, 1168, 1168, 1168, 506: 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 542: 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 580: 1168}, - {47: 1901, 505: 3694, 1047: 3693, 3698}, - {47: 3699}, - {1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 471: 1169, 1169, 1169, 1169, 1169, 477: 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 490: 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 499: 1169, 1169, 1169, 1169, 506: 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 542: 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 580: 1169}, + {1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 472: 1169, 1169, 1169, 1169, 1169, 478: 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 491: 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 500: 1169, 1169, 1169, 1169, 507: 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 542: 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 583: 1169}, + {47: 1905, 506: 3702, 1048: 3701, 3703}, + {47: 1904}, + {47: 1903}, + {47: 3704}, // 1200 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 3305, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 3701}, - {7: 3702, 482: 3643, 3642, 3648, 520: 3644, 553: 3645, 3646, 3639, 3649, 3638, 3647, 3640, 3641}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 3305, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 3703}, - {47: 3704, 482: 3643, 3642, 3648, 520: 3644, 553: 3645, 3646, 3639, 3649, 3638, 3647, 3640, 3641}, - {1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 471: 1171, 1171, 1171, 1171, 1171, 477: 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 490: 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 499: 1171, 1171, 1171, 1171, 506: 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 542: 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 580: 1171}, + {1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 472: 1170, 1170, 1170, 1170, 1170, 478: 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 491: 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 500: 1170, 1170, 1170, 1170, 507: 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 542: 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 583: 1170}, + {47: 1905, 506: 3702, 1048: 3701, 3706}, + {47: 3707}, + {1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 472: 1171, 1171, 1171, 1171, 1171, 478: 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 491: 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 500: 1171, 1171, 1171, 1171, 507: 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 542: 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 583: 1171}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 3311, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 3709}, // 1205 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 1903, 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3544, 774: 3706, 821: 3707}, - {7: 3546, 47: 1902}, - {47: 3708}, - {1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 471: 1172, 1172, 1172, 1172, 1172, 477: 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 490: 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 499: 1172, 1172, 1172, 1172, 506: 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 542: 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 580: 1172}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3544, 774: 3710}, + {7: 3710, 483: 3648, 3649, 3654, 521: 3650, 554: 3651, 3652, 3645, 3655, 3644, 3653, 3646, 3647}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 3311, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 3711}, + {47: 3712, 483: 3648, 3649, 3654, 521: 3650, 554: 3651, 3652, 3645, 3655, 3644, 3653, 3646, 3647}, + {1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 472: 1173, 1173, 1173, 1173, 1173, 478: 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 491: 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 500: 1173, 1173, 1173, 1173, 507: 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 542: 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 583: 1173}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 1907, 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3550, 775: 3714, 823: 3715}, // 1210 - {7: 3546, 47: 3711, 478: 3712}, - {1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 471: 1177, 1177, 1177, 1177, 1177, 477: 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 490: 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 499: 1177, 1177, 1177, 1177, 506: 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 542: 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 580: 1177}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 3446, 541: 3715, 659: 3447, 2723, 2724, 2722, 734: 3714, 803: 3713}, + {7: 3552, 47: 1906}, {47: 3716}, - {747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 47: 747, 98: 747, 107: 747, 469: 747, 747, 747, 473: 747, 747, 747, 747, 747, 479: 747, 487: 747, 747, 747, 498: 747, 500: 747, 747, 503: 747, 747, 541: 747, 566: 747, 570: 747, 579: 747, 581: 747, 591: 747, 621: 747, 640: 747, 747, 747, 747, 645: 747, 654: 747}, + {1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 472: 1174, 1174, 1174, 1174, 1174, 478: 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 491: 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 500: 1174, 1174, 1174, 1174, 507: 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 542: 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 583: 1174}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3550, 775: 3718}, + {7: 3552, 47: 3719, 479: 3720}, // 1215 - {746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 47: 746, 98: 746, 107: 746, 469: 746, 746, 746, 473: 746, 746, 746, 746, 746, 479: 746, 487: 746, 746, 746, 498: 746, 500: 746, 746, 503: 746, 746, 541: 746, 566: 746, 570: 746, 579: 746, 581: 746, 591: 746, 621: 746, 640: 746, 746, 746, 746, 645: 746, 654: 746}, - {1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 471: 1176, 1176, 1176, 1176, 1176, 477: 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 490: 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 499: 1176, 1176, 1176, 1176, 506: 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 542: 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 580: 1176}, - {1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 471: 1178, 1178, 1178, 1178, 1178, 477: 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 490: 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 499: 1178, 1178, 1178, 1178, 506: 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 542: 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 580: 1178}, - {47: 3719, 505: 3720}, - {1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 471: 1100, 1100, 1100, 1100, 1100, 477: 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 490: 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 499: 1100, 1100, 1100, 1100, 506: 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 542: 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 580: 1100}, + {1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 472: 1179, 1179, 1179, 1179, 1179, 478: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 491: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 500: 1179, 1179, 1179, 1179, 507: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 542: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 583: 1179}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 3452, 541: 3723, 660: 3453, 2727, 2728, 2726, 735: 3722, 804: 3721}, + {47: 3724}, + {748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 47: 748, 98: 748, 107: 748, 470: 748, 748, 748, 474: 748, 748, 748, 748, 748, 480: 748, 488: 748, 748, 748, 499: 748, 501: 748, 748, 504: 748, 748, 541: 748, 567: 748, 571: 748, 580: 748, 584: 748, 636: 748, 640: 748, 748, 748, 748, 748, 646: 748, 655: 748}, + {747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, 47: 747, 98: 747, 107: 747, 470: 747, 747, 747, 474: 747, 747, 747, 747, 747, 480: 747, 488: 747, 747, 747, 499: 747, 501: 747, 747, 504: 747, 747, 541: 747, 567: 747, 571: 747, 580: 747, 584: 747, 636: 747, 640: 747, 747, 747, 747, 747, 646: 747, 655: 747}, // 1220 - {47: 3721}, - {1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 471: 1099, 1099, 1099, 1099, 1099, 477: 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 490: 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 499: 1099, 1099, 1099, 1099, 506: 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 542: 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 580: 1099}, - {47: 3723}, - {1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 471: 1179, 1179, 1179, 1179, 1179, 477: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 490: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 499: 1179, 1179, 1179, 1179, 506: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 542: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 580: 1179}, - {47: 3726}, - // 1225 - {1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 471: 1180, 1180, 1180, 1180, 1180, 477: 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 490: 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 499: 1180, 1180, 1180, 1180, 506: 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 542: 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 580: 1180}, - {1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 471: 1193, 1193, 1193, 1193, 1193, 477: 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 490: 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 499: 1193, 1193, 1193, 1193, 506: 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 542: 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 580: 1193, 646: 1193, 658: 1193, 664: 1193}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 1903, 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3544, 774: 3706, 821: 3728}, + {1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 472: 1178, 1178, 1178, 1178, 1178, 478: 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 491: 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 500: 1178, 1178, 1178, 1178, 507: 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 542: 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 583: 1178}, + {1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 472: 1180, 1180, 1180, 1180, 1180, 478: 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 491: 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 500: 1180, 1180, 1180, 1180, 507: 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 542: 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 583: 1180}, + {47: 3727, 506: 3728}, + {1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 472: 1102, 1102, 1102, 1102, 1102, 478: 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 491: 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 500: 1102, 1102, 1102, 1102, 507: 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 542: 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 583: 1102}, {47: 3729}, - {1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 471: 1181, 1181, 1181, 1181, 1181, 477: 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 490: 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 499: 1181, 1181, 1181, 1181, 506: 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 542: 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 580: 1181}, + // 1225 + {1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 472: 1101, 1101, 1101, 1101, 1101, 478: 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 491: 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 500: 1101, 1101, 1101, 1101, 507: 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 542: 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 583: 1101}, + {47: 3731}, + {1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 472: 1181, 1181, 1181, 1181, 1181, 478: 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 491: 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 500: 1181, 1181, 1181, 1181, 507: 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 542: 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 583: 1181}, + {47: 3734}, + {1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 472: 1182, 1182, 1182, 1182, 1182, 478: 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 491: 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 500: 1182, 1182, 1182, 1182, 507: 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 542: 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 583: 1182}, // 1230 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 1903, 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3544, 774: 3706, 821: 3731}, - {47: 3732}, - {1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 471: 1182, 1182, 1182, 1182, 1182, 477: 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 490: 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 499: 1182, 1182, 1182, 1182, 506: 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 542: 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 580: 1182}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3734, 2723, 2724, 2722, 707: 3735}, - {47: 1267, 496: 1267, 648: 3737}, + {1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 472: 1195, 1195, 1195, 1195, 1195, 478: 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 491: 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 500: 1195, 1195, 1195, 1195, 507: 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 542: 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 583: 1195, 647: 1195, 659: 1195, 665: 1195}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 1907, 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3550, 775: 3714, 823: 3736}, + {47: 3737}, + {1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 472: 1183, 1183, 1183, 1183, 1183, 478: 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 491: 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 500: 1183, 1183, 1183, 1183, 507: 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 542: 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 583: 1183}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 1907, 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3550, 775: 3714, 823: 3739}, // 1235 - {47: 3736}, - {1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 471: 1236, 1236, 1236, 1236, 1236, 477: 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 490: 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 499: 1236, 1236, 1236, 1236, 506: 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 542: 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 580: 1236}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3738, 2723, 2724, 2722}, - {47: 1266, 496: 1266, 648: 3739}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3740, 2723, 2724, 2722}, + {47: 3740}, + {1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 472: 1184, 1184, 1184, 1184, 1184, 478: 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 491: 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 500: 1184, 1184, 1184, 1184, 507: 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 542: 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 583: 1184}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3742, 2727, 2728, 2726, 708: 3743}, + {47: 1269, 496: 1269, 649: 3745}, + {47: 3744}, // 1240 - {1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 471: 1265, 1265, 1265, 1265, 1265, 477: 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 490: 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 499: 1265, 1265, 1265, 1265, 506: 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 542: 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 580: 1265, 651: 1265, 1265}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3734, 2723, 2724, 2722, 707: 3742}, - {47: 3743}, - {1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 471: 1237, 1237, 1237, 1237, 1237, 477: 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 490: 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 499: 1237, 1237, 1237, 1237, 506: 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 542: 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 580: 1237}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3745}, + {1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 472: 1238, 1238, 1238, 1238, 1238, 478: 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 491: 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 500: 1238, 1238, 1238, 1238, 507: 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 542: 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 583: 1238}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3746, 2727, 2728, 2726}, + {47: 1268, 496: 1268, 649: 3747}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3748, 2727, 2728, 2726}, + {1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 472: 1267, 1267, 1267, 1267, 1267, 478: 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 491: 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 500: 1267, 1267, 1267, 1267, 507: 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 542: 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 583: 1267, 652: 1267, 1267}, // 1245 - {7: 3746, 478: 3747, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, - {49: 3758, 105: 3754, 165: 3760, 173: 3755, 3753, 192: 3757, 503: 3765, 541: 3751, 643: 3764, 676: 3756, 3761, 3762, 681: 3763, 736: 3759, 896: 3752, 994: 3750}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 3446, 541: 3715, 659: 3447, 2723, 2724, 2722, 734: 3714, 803: 3748}, - {47: 3749}, - {1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 471: 1238, 1238, 1238, 1238, 1238, 477: 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 490: 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 499: 1238, 1238, 1238, 1238, 506: 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 542: 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 580: 1238}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3742, 2727, 2728, 2726, 708: 3750}, + {47: 3751}, + {1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 472: 1239, 1239, 1239, 1239, 1239, 478: 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 491: 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 500: 1239, 1239, 1239, 1239, 507: 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 542: 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 583: 1239}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3753}, + {7: 3754, 479: 3755, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, // 1250 - {47: 3801}, - {47: 286, 470: 3780, 759: 3781, 782: 3800}, - {14: 286, 47: 286, 470: 3780, 503: 286, 541: 286, 643: 286, 759: 3781, 782: 3785}, - {47: 1060}, - {47: 1059}, + {49: 3766, 101: 3762, 165: 3768, 173: 3763, 3761, 192: 3765, 504: 3773, 541: 3759, 644: 3772, 677: 3764, 3769, 3770, 682: 3771, 737: 3767, 897: 3760, 995: 3758}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 3452, 541: 3723, 660: 3453, 2727, 2728, 2726, 735: 3722, 804: 3756}, + {47: 3757}, + {1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 472: 1240, 1240, 1240, 1240, 1240, 478: 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 491: 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 500: 1240, 1240, 1240, 1240, 507: 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 542: 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 583: 1240}, + {47: 3809}, // 1255 - {47: 286, 470: 3780, 759: 3781, 782: 3784}, - {47: 279, 470: 3767, 759: 3768, 899: 3783, 904: 3769}, - {47: 286, 470: 3780, 759: 3781, 782: 3779}, - {47: 350, 679: 3776, 3777, 1086: 3778}, - {47: 350, 679: 3776, 3777, 1086: 3775}, + {47: 286, 471: 3788, 760: 3789, 783: 3808}, + {14: 286, 47: 286, 471: 3788, 504: 286, 541: 286, 644: 286, 760: 3789, 783: 3793}, + {47: 1062}, + {47: 1061}, + {47: 286, 471: 3788, 760: 3789, 783: 3792}, // 1260 - {47: 1053}, - {47: 1052}, - {47: 279, 470: 3767, 759: 3768, 899: 3766, 904: 3769}, - {47: 1050}, - {14: 324, 47: 324, 470: 324, 503: 324, 541: 324, 643: 324}, + {47: 279, 471: 3775, 760: 3776, 900: 3791, 905: 3777}, + {47: 286, 471: 3788, 760: 3789, 783: 3787}, + {47: 350, 680: 3784, 3785, 1087: 3786}, + {47: 350, 680: 3784, 3785, 1087: 3783}, + {47: 1055}, // 1265 - {14: 323, 47: 323, 470: 323, 503: 323, 541: 323, 643: 323}, - {47: 1051}, - {505: 2697, 729: 2696, 740: 3770}, - {278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 47: 278, 49: 278, 469: 278, 473: 278, 278, 278, 278, 479: 278, 488: 278, 278, 570: 278, 579: 278, 581: 278, 591: 278, 621: 278, 640: 278, 278, 736: 278, 738: 278}, - {277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 47: 277, 49: 277, 469: 277, 473: 277, 277, 277, 277, 479: 277, 488: 277, 277, 570: 277, 579: 277, 581: 277, 591: 277, 621: 277, 640: 277, 277, 736: 277, 738: 277}, + {47: 1054}, + {47: 279, 471: 3775, 760: 3776, 900: 3774, 905: 3777}, + {47: 1052}, + {14: 324, 47: 324, 471: 324, 504: 324, 541: 324, 644: 324}, + {14: 323, 47: 323, 471: 323, 504: 323, 541: 323, 644: 323}, // 1270 - {7: 3772, 47: 3771}, - {287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 14: 287, 47: 287, 49: 287, 101: 287, 287, 104: 287, 469: 287, 473: 287, 287, 287, 287, 479: 287, 488: 287, 287, 503: 287, 526: 287, 287, 541: 287, 570: 287, 579: 287, 581: 287, 591: 287, 621: 287, 640: 287, 287, 643: 287, 736: 287, 738: 287}, - {505: 2697, 729: 2696, 740: 3773}, - {47: 3774}, - {276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 47: 276, 49: 276, 469: 276, 473: 276, 276, 276, 276, 479: 276, 488: 276, 276, 570: 276, 579: 276, 581: 276, 591: 276, 621: 276, 640: 276, 276, 736: 276, 738: 276}, + {47: 1053}, + {506: 2701, 730: 2700, 741: 3778}, + {278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 47: 278, 49: 278, 470: 278, 474: 278, 278, 278, 278, 480: 278, 489: 278, 278, 571: 278, 580: 278, 584: 278, 636: 278, 640: 278, 278, 278, 737: 278, 739: 278}, + {277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 47: 277, 49: 277, 470: 277, 474: 277, 277, 277, 277, 480: 277, 489: 277, 277, 571: 277, 580: 277, 584: 277, 636: 277, 640: 277, 277, 277, 737: 277, 739: 277}, + {7: 3780, 47: 3779}, // 1275 - {47: 1054}, - {47: 349}, - {47: 348}, - {47: 1055}, + {287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 14: 287, 47: 287, 49: 287, 102: 287, 287, 106: 287, 470: 287, 474: 287, 287, 287, 287, 480: 287, 489: 287, 287, 504: 287, 527: 287, 287, 541: 287, 571: 287, 580: 287, 584: 287, 636: 287, 640: 287, 287, 287, 644: 287, 737: 287, 739: 287}, + {506: 2701, 730: 2700, 741: 3781}, + {47: 3782}, + {276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 47: 276, 49: 276, 470: 276, 474: 276, 276, 276, 276, 480: 276, 489: 276, 276, 571: 276, 580: 276, 584: 276, 636: 276, 640: 276, 276, 276, 737: 276, 739: 276}, {47: 1056}, // 1280 - {505: 2697, 729: 2696, 740: 3782}, - {285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 14: 285, 47: 285, 49: 285, 101: 285, 285, 104: 285, 469: 285, 473: 285, 285, 285, 285, 479: 285, 488: 285, 285, 503: 285, 526: 285, 285, 541: 285, 570: 285, 579: 285, 581: 285, 591: 285, 621: 285, 640: 285, 285, 643: 285, 736: 285, 738: 285}, - {47: 3771}, + {47: 349}, + {47: 348}, {47: 1057}, {47: 1058}, + {506: 2701, 730: 2700, 741: 3790}, // 1285 - {14: 3790, 47: 273, 503: 3791, 541: 3787, 643: 3789, 769: 3788, 794: 3786}, - {47: 1061}, - {270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 14: 3790, 47: 270, 469: 270, 473: 270, 270, 270, 270, 479: 270, 488: 270, 270, 503: 3791, 570: 270, 579: 270, 581: 270, 591: 270, 621: 270, 640: 270, 270, 643: 3789, 769: 3798, 1250: 3797}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 3446, 541: 3715, 659: 3447, 2723, 2724, 2722, 734: 3714, 803: 3794}, - {501: 3793}, + {285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 14: 285, 47: 285, 49: 285, 102: 285, 285, 106: 285, 470: 285, 474: 285, 285, 285, 285, 480: 285, 489: 285, 285, 504: 285, 527: 285, 285, 541: 285, 571: 285, 580: 285, 584: 285, 636: 285, 640: 285, 285, 285, 644: 285, 737: 285, 739: 285}, + {47: 3779}, + {47: 1059}, + {47: 1060}, + {14: 3798, 47: 273, 504: 3799, 541: 3795, 644: 3797, 770: 3796, 795: 3794}, // 1290 - {267, 267, 267, 267, 267, 267, 267, 8: 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 48: 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 472: 267, 476: 267, 494: 267, 496: 267, 515: 267, 541: 267}, - {501: 3792}, - {266, 266, 266, 266, 266, 266, 266, 8: 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 48: 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 472: 266, 476: 266, 494: 266, 496: 266, 515: 266, 541: 266}, - {268, 268, 268, 268, 268, 268, 268, 8: 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 48: 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 472: 268, 476: 268, 494: 268, 496: 268, 515: 268, 541: 268}, - {275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 47: 275, 469: 275, 473: 275, 275, 275, 275, 479: 275, 488: 275, 275, 541: 3795, 570: 275, 579: 275, 581: 275, 591: 275, 621: 275, 640: 275, 275, 1249: 3796}, + {47: 1063}, + {270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 14: 3798, 47: 270, 470: 270, 474: 270, 270, 270, 270, 480: 270, 489: 270, 270, 504: 3799, 571: 270, 580: 270, 584: 270, 636: 270, 640: 270, 270, 270, 644: 3797, 770: 3806, 1251: 3805}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 3452, 541: 3723, 660: 3453, 2727, 2728, 2726, 735: 3722, 804: 3802}, + {502: 3801}, + {267, 267, 267, 267, 267, 267, 267, 8: 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 48: 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 473: 267, 477: 267, 495: 267, 267, 516: 267, 541: 267}, // 1295 - {274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 47: 274, 469: 274, 473: 274, 274, 274, 274, 479: 274, 488: 274, 274, 570: 274, 579: 274, 581: 274, 591: 274, 621: 274, 640: 274, 274}, - {271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 47: 271, 469: 271, 473: 271, 271, 271, 271, 479: 271, 488: 271, 271, 570: 271, 579: 271, 581: 271, 591: 271, 621: 271, 640: 271, 271}, - {272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 47: 272, 469: 272, 473: 272, 272, 272, 272, 479: 272, 488: 272, 272, 570: 272, 579: 272, 581: 272, 591: 272, 621: 272, 640: 272, 272}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 3446, 541: 3715, 659: 3447, 2723, 2724, 2722, 734: 3714, 803: 3799}, - {269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 47: 269, 469: 269, 473: 269, 269, 269, 269, 479: 269, 488: 269, 269, 570: 269, 579: 269, 581: 269, 591: 269, 621: 269, 640: 269, 269}, + {502: 3800}, + {266, 266, 266, 266, 266, 266, 266, 8: 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 48: 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 473: 266, 477: 266, 495: 266, 266, 516: 266, 541: 266}, + {268, 268, 268, 268, 268, 268, 268, 8: 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 48: 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 473: 268, 477: 268, 495: 268, 268, 516: 268, 541: 268}, + {275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 47: 275, 470: 275, 474: 275, 275, 275, 275, 480: 275, 489: 275, 275, 541: 3803, 571: 275, 580: 275, 584: 275, 636: 275, 640: 275, 275, 275, 1250: 3804}, + {274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 47: 274, 470: 274, 474: 274, 274, 274, 274, 480: 274, 489: 274, 274, 571: 274, 580: 274, 584: 274, 636: 274, 640: 274, 274, 274}, // 1300 - {47: 1062}, - {1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 471: 1239, 1239, 1239, 1239, 1239, 477: 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 490: 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 499: 1239, 1239, 1239, 1239, 506: 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 542: 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 580: 1239}, - {502: 3302, 506: 3300, 3301, 3299, 3297, 539: 1068, 730: 3298, 3296}, - {539: 3806, 1153: 3805, 1332: 3804}, - {157: 1064, 539: 3806, 542: 3812, 1153: 3811, 1199: 3810}, + {271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 47: 271, 470: 271, 474: 271, 271, 271, 271, 480: 271, 489: 271, 271, 571: 271, 580: 271, 584: 271, 636: 271, 640: 271, 271, 271}, + {272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 47: 272, 470: 272, 474: 272, 272, 272, 272, 480: 272, 489: 272, 272, 571: 272, 580: 272, 584: 272, 636: 272, 640: 272, 272, 272}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 3452, 541: 3723, 660: 3453, 2727, 2728, 2726, 735: 3722, 804: 3807}, + {269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 47: 269, 470: 269, 474: 269, 269, 269, 269, 480: 269, 489: 269, 269, 571: 269, 580: 269, 584: 269, 636: 269, 640: 269, 269, 269}, + {47: 1064}, // 1305 - {157: 1067, 539: 1067, 542: 1067}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3807}, - {502: 3302, 506: 3300, 3301, 3299, 3297, 543: 3808, 730: 3298, 3296}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3809}, - {157: 1065, 502: 3302, 506: 3300, 3301, 3299, 3297, 539: 1065, 542: 1065, 730: 3298, 3296}, + {1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 472: 1241, 1241, 1241, 1241, 1241, 478: 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 491: 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 500: 1241, 1241, 1241, 1241, 507: 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 542: 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 583: 1241}, + {503: 3307, 507: 3305, 3306, 3304, 3302, 540: 1070, 731: 3303, 3301}, + {540: 3814, 1154: 3813, 1333: 3812}, + {157: 1066, 540: 3814, 543: 3820, 1154: 3819, 1200: 3818}, + {157: 1069, 540: 1069, 543: 1069}, // 1310 - {157: 3814}, - {157: 1066, 539: 1066, 542: 1066}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3813}, - {157: 1063, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, - {1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 471: 1240, 1240, 1240, 1240, 1240, 477: 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 490: 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 499: 1240, 1240, 1240, 1240, 506: 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 542: 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 580: 1240}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3815}, + {503: 3307, 507: 3305, 3306, 3304, 3302, 544: 3816, 731: 3303, 3301}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3817}, + {157: 1067, 503: 3307, 507: 3305, 3306, 3304, 3302, 540: 1067, 543: 1067, 731: 3303, 3301}, + {157: 3822}, // 1315 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3816}, - {475: 3817, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, - {49: 3758, 105: 3754, 165: 3760, 173: 3755, 3753, 192: 3757, 503: 3765, 541: 3751, 643: 3764, 676: 3756, 3761, 3762, 681: 3763, 736: 3759, 896: 3752, 994: 3818}, - {47: 3819}, - {1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 471: 1241, 1241, 1241, 1241, 1241, 477: 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 490: 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 499: 1241, 1241, 1241, 1241, 506: 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 542: 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 580: 1241}, + {157: 1068, 540: 1068, 543: 1068}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3821}, + {157: 1065, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 472: 1242, 1242, 1242, 1242, 1242, 478: 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 491: 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 500: 1242, 1242, 1242, 1242, 507: 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 542: 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 583: 1242}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3824}, // 1320 - {1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 471: 1242, 1242, 1242, 1242, 1242, 477: 1242, 1242, 3306, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 490: 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 499: 1242, 1242, 1242, 1242, 506: 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 542: 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 580: 1242}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3822}, - {502: 3302, 506: 3300, 3301, 3299, 3297, 519: 3823, 730: 3298, 3296}, - {1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 471: 1243, 1243, 1243, 1243, 1243, 477: 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 490: 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 499: 1243, 1243, 1243, 1243, 506: 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 542: 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 580: 1243}, - {1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 471: 1244, 1244, 1244, 1244, 1244, 477: 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 490: 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 499: 1244, 1244, 1244, 1244, 506: 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 542: 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 580: 1244}, + {476: 3825, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {49: 3766, 101: 3762, 165: 3768, 173: 3763, 3761, 192: 3765, 504: 3773, 541: 3759, 644: 3772, 677: 3764, 3769, 3770, 682: 3771, 737: 3767, 897: 3760, 995: 3826}, + {47: 3827}, + {1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 472: 1243, 1243, 1243, 1243, 1243, 478: 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 491: 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 500: 1243, 1243, 1243, 1243, 507: 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 542: 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 583: 1243}, + {1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 472: 1244, 1244, 1244, 1244, 1244, 478: 1244, 1244, 3312, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 491: 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 500: 1244, 1244, 1244, 1244, 507: 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 542: 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 583: 1244}, // 1325 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3544, 774: 3826}, - {7: 3827}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3828}, - {7: 1906, 47: 3829, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, - {1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 471: 1245, 1245, 1245, 1245, 1245, 477: 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 490: 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 499: 1245, 1245, 1245, 1245, 506: 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 542: 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 580: 1245}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3830}, + {503: 3307, 507: 3305, 3306, 3304, 3302, 520: 3831, 731: 3303, 3301}, + {1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 472: 1245, 1245, 1245, 1245, 1245, 478: 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 491: 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 500: 1245, 1245, 1245, 1245, 507: 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 542: 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 583: 1245}, + {1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 472: 1246, 1246, 1246, 1246, 1246, 478: 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 491: 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 500: 1246, 1246, 1246, 1246, 507: 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 542: 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 583: 1246}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3550, 775: 3834}, // 1330 - {7: 1907, 47: 3932, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, - {7: 3929}, - {7: 1248, 47: 1248, 473: 1248, 1248, 477: 803, 479: 1248, 482: 1248, 1248, 1248, 803, 803, 490: 2689, 496: 1248, 2690, 499: 2686, 502: 1248, 506: 1248, 1248, 1248, 1248, 515: 1248, 520: 1248, 540: 1248, 544: 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 580: 1248, 763: 3845, 3846}, - {470: 3733, 573: 3850, 907: 3849, 971: 3848}, - {470: 2551, 498: 2549, 566: 2548, 642: 2544, 705: 3842, 744: 3841, 2545, 2546, 2547, 2556, 752: 2554, 3843, 3844}, + {7: 3835}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3836}, + {7: 1910, 47: 3837, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 472: 1247, 1247, 1247, 1247, 1247, 478: 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 491: 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 500: 1247, 1247, 1247, 1247, 507: 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 542: 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 583: 1247}, + {7: 1911, 47: 3940, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, // 1335 - {47: 3840, 477: 804, 485: 804, 804}, - {47: 3839}, - {47: 3838}, - {831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 477: 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 490: 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 506: 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 542: 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 566: 831, 580: 831, 642: 831, 650: 831, 735: 831}, - {832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 477: 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 490: 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 506: 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 542: 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 566: 832, 580: 832, 642: 832, 650: 832, 735: 832}, + {7: 3937}, + {7: 1250, 47: 1250, 474: 1250, 1250, 478: 805, 480: 1250, 483: 1250, 1250, 1250, 805, 805, 491: 2693, 496: 1250, 498: 2694, 500: 2690, 503: 1250, 507: 1250, 1250, 1250, 1250, 516: 1250, 521: 1250, 542: 1250, 545: 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 583: 1250, 764: 3853, 3854}, + {471: 3741, 574: 3858, 908: 3857, 972: 3856}, + {471: 2555, 499: 2553, 567: 2552, 643: 2548, 706: 3850, 745: 3849, 2549, 2550, 2551, 2560, 753: 2558, 3851, 3852}, + {47: 3848, 478: 806, 486: 806, 806}, // 1340 - {833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 477: 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 490: 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 506: 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 542: 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 566: 833, 580: 833, 642: 833, 650: 833, 735: 833}, - {988, 988, 47: 988, 469: 988, 471: 988, 477: 804, 988, 485: 804, 804}, - {987, 987, 47: 987, 469: 987, 471: 987, 477: 803, 987, 485: 803, 803, 490: 2689, 497: 2690, 499: 2686, 763: 3845, 3846}, - {816, 816, 47: 816, 469: 816, 471: 816, 478: 816}, - {815, 815, 47: 815, 469: 815, 471: 815, 478: 815}, + {47: 3847}, + {47: 3846}, + {833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 478: 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 491: 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 507: 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 542: 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 567: 833, 583: 833, 643: 833, 651: 833, 736: 833}, + {834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 478: 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 491: 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 507: 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 542: 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 567: 834, 583: 834, 643: 834, 651: 834, 736: 834}, + {835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 478: 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 491: 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 507: 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 542: 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 567: 835, 583: 835, 643: 835, 651: 835, 736: 835}, // 1345 - {809, 809, 47: 809, 469: 809, 471: 809, 478: 809, 490: 2689, 497: 2690, 764: 3847}, - {808, 808, 47: 808, 469: 808, 471: 808, 478: 808}, - {807, 807, 47: 807, 469: 807, 471: 807, 478: 807}, - {1284, 1284, 7: 3862, 47: 1284, 469: 1284, 471: 1284, 477: 1284, 1284, 485: 1284, 1284, 490: 1284, 1284, 1284, 1284, 497: 1284, 499: 2686, 763: 2687, 807: 3861}, - {8, 8, 7: 8, 47: 8, 469: 8, 471: 8, 477: 8, 8, 485: 8, 8, 490: 8, 8, 8, 8, 497: 8, 499: 8}, + {990, 990, 47: 990, 470: 990, 472: 990, 478: 806, 990, 486: 806, 806}, + {989, 989, 47: 989, 470: 989, 472: 989, 478: 805, 989, 486: 805, 805, 491: 2693, 498: 2694, 500: 2690, 764: 3853, 3854}, + {818, 818, 47: 818, 470: 818, 472: 818, 479: 818}, + {817, 817, 47: 817, 470: 817, 472: 817, 479: 817}, + {811, 811, 47: 811, 470: 811, 472: 811, 479: 811, 491: 2693, 498: 2694, 765: 3855}, // 1350 - {470: 3851, 835: 3852}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 1324, 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3857, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3853, 792: 3856, 1322: 3855, 3854}, - {6, 6, 7: 6, 47: 6, 469: 6, 471: 6, 477: 6, 6, 485: 6, 6, 490: 6, 6, 6, 6, 497: 6, 499: 6}, - {1320, 1320, 7: 1320, 47: 1320, 469: 1320, 478: 1320, 490: 1320, 494: 1320, 499: 1320, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, - {47: 3860}, + {810, 810, 47: 810, 470: 810, 472: 810, 479: 810}, + {809, 809, 47: 809, 470: 809, 472: 809, 479: 809}, + {1287, 1287, 7: 3870, 47: 1287, 470: 1287, 472: 1287, 478: 1287, 1287, 486: 1287, 1287, 491: 1287, 1287, 1287, 1287, 498: 1287, 500: 2690, 764: 2691, 808: 3869}, + {8, 8, 7: 8, 47: 8, 470: 8, 472: 8, 478: 8, 8, 486: 8, 8, 491: 8, 8, 8, 8, 498: 8, 500: 8}, + {471: 3859, 836: 3860}, // 1355 - {7: 3858, 47: 1323}, - {7: 1321, 47: 1321}, - {1319, 1319, 7: 1319, 47: 1319, 469: 1319, 3741, 478: 1319, 490: 1319, 494: 1319, 499: 1319}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3857, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3853, 792: 3859}, - {7: 1322, 47: 1322}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 1327, 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3865, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3861, 793: 3864, 1323: 3863, 3862}, + {6, 6, 7: 6, 47: 6, 470: 6, 472: 6, 478: 6, 6, 486: 6, 6, 491: 6, 6, 6, 6, 498: 6, 500: 6}, + {1323, 1323, 7: 1323, 47: 1323, 470: 1323, 479: 1323, 491: 1323, 495: 1323, 500: 1323, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {47: 3868}, + {7: 3866, 47: 1326}, // 1360 - {1325, 1325, 7: 1325, 47: 1325, 86: 1325, 469: 1325, 471: 1325, 477: 1325, 1325, 485: 1325, 1325, 490: 1325, 1325, 1325, 1325, 497: 1325, 499: 1325, 502: 1325}, - {858, 858, 47: 858, 469: 858, 471: 858, 477: 858, 858, 485: 858, 858, 490: 2689, 858, 858, 858, 497: 2690, 764: 2691, 824: 3864}, - {573: 3850, 907: 3863}, - {7, 7, 7: 7, 47: 7, 469: 7, 471: 7, 477: 7, 7, 485: 7, 7, 490: 7, 7, 7, 7, 497: 7, 499: 7}, - {829, 829, 47: 829, 469: 829, 471: 829, 477: 829, 829, 485: 829, 829, 491: 3866, 829, 3867, 883: 3865}, + {7: 1324, 47: 1324}, + {1322, 1322, 7: 1322, 47: 1322, 470: 1322, 3749, 479: 1322, 491: 1322, 495: 1322, 500: 1322}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3865, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3861, 793: 3867}, + {7: 1325, 47: 1325}, + {1328, 1328, 7: 1328, 47: 1328, 86: 1328, 470: 1328, 472: 1328, 478: 1328, 1328, 486: 1328, 1328, 491: 1328, 1328, 1328, 1328, 498: 1328, 500: 1328, 503: 1328}, // 1365 - {835, 835, 47: 835, 469: 835, 471: 835, 477: 835, 835, 485: 835, 835, 492: 3892, 884: 3891}, - {281: 3872, 650: 3871}, - {540: 3868}, - {281: 3869}, - {205: 3870}, + {860, 860, 47: 860, 470: 860, 472: 860, 478: 860, 860, 486: 860, 860, 491: 2693, 860, 860, 860, 498: 2694, 765: 2695, 826: 3872}, + {574: 3858, 908: 3871}, + {7, 7, 7: 7, 47: 7, 470: 7, 472: 7, 478: 7, 7, 486: 7, 7, 491: 7, 7, 7, 7, 498: 7, 500: 7}, + {831, 831, 47: 831, 470: 831, 472: 831, 478: 831, 831, 486: 831, 831, 492: 3874, 831, 3875, 884: 3873}, + {837, 837, 47: 837, 470: 837, 472: 837, 478: 837, 837, 486: 837, 837, 493: 3900, 885: 3899}, // 1370 - {821, 821, 47: 821, 469: 821, 471: 821, 477: 821, 821, 485: 821, 821, 492: 821}, - {820, 820, 47: 820, 138: 820, 150: 820, 171: 820, 469: 820, 471: 820, 477: 820, 820, 485: 820, 820, 492: 820, 1079: 3874, 3885}, - {820, 820, 47: 820, 138: 820, 150: 820, 469: 820, 471: 820, 477: 820, 820, 485: 820, 820, 492: 820, 1079: 3874, 3873}, - {827, 827, 47: 827, 138: 3883, 150: 3882, 469: 827, 471: 827, 477: 827, 827, 485: 827, 827, 492: 827}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3875, 2723, 2724, 2722, 733: 3876, 791: 3877}, + {281: 3880, 651: 3879}, + {542: 3876}, + {281: 3877}, + {205: 3878}, + {823, 823, 47: 823, 470: 823, 472: 823, 478: 823, 823, 486: 823, 823, 493: 823}, // 1375 - {1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 542: 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 566: 1044, 570: 1044, 579: 1044, 1044, 1044, 584: 1044, 591: 1044, 621: 1044, 640: 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 3880, 1044, 1044, 653: 1044, 1044, 1044, 657: 1044, 665: 1044, 1044, 1044, 1044, 1044, 1044, 675: 1044, 682: 1044, 1044, 685: 1044, 700: 1044}, - {1042, 1042, 7: 1042, 47: 1042, 138: 1042, 150: 1042, 171: 1042, 469: 1042, 471: 1042, 477: 1042, 1042, 485: 1042, 1042, 492: 1042, 495: 1042, 646: 1042, 666: 1042, 668: 1042}, - {819, 819, 7: 3878, 47: 819, 138: 819, 150: 819, 171: 819, 469: 819, 471: 819, 477: 819, 819, 485: 819, 819, 492: 819}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3875, 2723, 2724, 2722, 733: 3879}, - {1041, 1041, 7: 1041, 47: 1041, 138: 1041, 150: 1041, 161: 1041, 171: 1041, 469: 1041, 471: 1041, 477: 1041, 1041, 485: 1041, 1041, 492: 1041, 495: 1041, 646: 1041, 1041, 666: 1041, 668: 1041}, + {822, 822, 47: 822, 138: 822, 150: 822, 171: 822, 470: 822, 472: 822, 478: 822, 822, 486: 822, 822, 493: 822, 1080: 3882, 3893}, + {822, 822, 47: 822, 138: 822, 150: 822, 470: 822, 472: 822, 478: 822, 822, 486: 822, 822, 493: 822, 1080: 3882, 3881}, + {829, 829, 47: 829, 138: 3891, 150: 3890, 470: 829, 472: 829, 478: 829, 829, 486: 829, 829, 493: 829}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3883, 2727, 2728, 2726, 734: 3884, 792: 3885}, + {1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 542: 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 567: 1046, 571: 1046, 580: 1046, 583: 1046, 1046, 1046, 636: 1046, 640: 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 3888, 1046, 1046, 654: 1046, 1046, 657: 1046, 1046, 666: 1046, 1046, 1046, 1046, 1046, 1046, 676: 1046, 683: 1046, 1046, 686: 1046, 701: 1046}, // 1380 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3881, 2723, 2724, 2722}, - {1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 542: 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 566: 1043, 570: 1043, 579: 1043, 1043, 1043, 584: 1043, 591: 1043, 621: 1043, 640: 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 649: 1043, 1043, 653: 1043, 1043, 1043, 657: 1043, 665: 1043, 1043, 1043, 1043, 1043, 1043, 675: 1043, 682: 1043, 1043, 685: 1043, 700: 1043}, - {824, 824, 47: 824, 469: 824, 471: 824, 477: 824, 824, 485: 824, 824, 492: 824}, - {263: 3884}, - {822, 822, 47: 822, 469: 822, 471: 822, 477: 822, 822, 485: 822, 822, 492: 822}, + {1044, 1044, 7: 1044, 47: 1044, 138: 1044, 150: 1044, 171: 1044, 470: 1044, 472: 1044, 478: 1044, 1044, 486: 1044, 1044, 493: 1044, 497: 1044, 647: 1044, 667: 1044, 669: 1044}, + {821, 821, 7: 3886, 47: 821, 138: 821, 150: 821, 171: 821, 470: 821, 472: 821, 478: 821, 821, 486: 821, 821, 493: 821}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3883, 2727, 2728, 2726, 734: 3887}, + {1043, 1043, 7: 1043, 47: 1043, 138: 1043, 150: 1043, 161: 1043, 171: 1043, 470: 1043, 472: 1043, 478: 1043, 1043, 486: 1043, 1043, 493: 1043, 497: 1043, 647: 1043, 1043, 667: 1043, 669: 1043}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3889, 2727, 2728, 2726}, // 1385 - {828, 828, 47: 828, 138: 3888, 150: 3886, 171: 3887, 469: 828, 471: 828, 477: 828, 828, 485: 828, 828, 492: 828}, - {826, 826, 47: 826, 469: 826, 471: 826, 477: 826, 826, 485: 826, 826, 492: 826}, - {505: 2697, 729: 3890}, - {263: 3889}, - {823, 823, 47: 823, 469: 823, 471: 823, 477: 823, 823, 485: 823, 823, 492: 823}, + {1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 542: 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 567: 1045, 571: 1045, 580: 1045, 583: 1045, 1045, 1045, 636: 1045, 640: 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 650: 1045, 1045, 654: 1045, 1045, 657: 1045, 1045, 666: 1045, 1045, 1045, 1045, 1045, 1045, 676: 1045, 683: 1045, 1045, 686: 1045, 701: 1045}, + {826, 826, 47: 826, 470: 826, 472: 826, 478: 826, 826, 486: 826, 826, 493: 826}, + {263: 3892}, + {824, 824, 47: 824, 470: 824, 472: 824, 478: 824, 824, 486: 824, 824, 493: 824}, + {830, 830, 47: 830, 138: 3896, 150: 3894, 171: 3895, 470: 830, 472: 830, 478: 830, 830, 486: 830, 830, 493: 830}, // 1390 - {825, 825, 47: 825, 469: 825, 471: 825, 477: 825, 825, 485: 825, 825, 492: 825}, - {989, 989, 47: 989, 469: 989, 471: 989, 477: 989, 989, 485: 989, 989}, - {1262: 3893}, - {472: 3894}, - {100, 100, 47: 100, 98: 3898, 107: 3897, 469: 100, 471: 100, 477: 100, 100, 485: 100, 100, 654: 100, 829: 3896, 1044: 3895}, + {828, 828, 47: 828, 470: 828, 472: 828, 478: 828, 828, 486: 828, 828, 493: 828}, + {506: 2701, 730: 3898}, + {263: 3897}, + {825, 825, 47: 825, 470: 825, 472: 825, 478: 825, 825, 486: 825, 825, 493: 825}, + {827, 827, 47: 827, 470: 827, 472: 827, 478: 827, 827, 486: 827, 827, 493: 827}, // 1395 - {87, 87, 47: 87, 469: 87, 471: 87, 477: 87, 87, 485: 87, 87, 654: 3919, 939: 3918}, - {778: 3901, 784: 3903, 789: 3904, 3902, 1043: 3900, 1205: 3899}, - {98, 98, 15: 98, 48: 98, 50: 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 469: 98, 98, 495: 98, 540: 98, 649: 98, 778: 98, 784: 98, 789: 98, 98}, - {97, 97, 15: 97, 48: 97, 50: 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 469: 97, 97, 495: 97, 540: 97, 649: 97, 778: 97, 784: 97, 789: 97, 97}, - {99, 99, 47: 99, 469: 99, 99, 99, 477: 99, 99, 485: 99, 99, 99, 501: 99, 654: 99, 778: 3901, 784: 3903, 789: 3904, 3902, 1043: 3917}, + {991, 991, 47: 991, 470: 991, 472: 991, 478: 991, 991, 486: 991, 991}, + {1263: 3901}, + {473: 3902}, + {100, 100, 47: 100, 98: 3906, 107: 3905, 470: 100, 472: 100, 478: 100, 100, 486: 100, 100, 655: 100, 830: 3904, 1045: 3903}, + {87, 87, 47: 87, 470: 87, 472: 87, 478: 87, 87, 486: 87, 87, 655: 3927, 940: 3926}, // 1400 - {95, 95, 47: 95, 469: 95, 95, 95, 477: 95, 95, 485: 95, 95, 95, 501: 95, 654: 95, 778: 95, 784: 95, 789: 95, 95}, - {655: 3915}, - {784: 3912}, - {655: 3910}, - {655: 3905}, + {779: 3909, 785: 3911, 790: 3912, 3910, 1044: 3908, 1206: 3907}, + {98, 98, 15: 98, 48: 98, 50: 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 470: 98, 98, 497: 98, 542: 98, 650: 98, 779: 98, 785: 98, 790: 98, 98}, + {97, 97, 15: 97, 48: 97, 50: 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 470: 97, 97, 497: 97, 542: 97, 650: 97, 779: 97, 785: 97, 790: 97, 97}, + {99, 99, 47: 99, 470: 99, 99, 99, 478: 99, 99, 486: 99, 99, 99, 502: 99, 655: 99, 779: 3909, 785: 3911, 790: 3912, 3910, 1044: 3925}, + {95, 95, 47: 95, 470: 95, 95, 95, 478: 95, 95, 486: 95, 95, 95, 502: 95, 655: 95, 779: 95, 785: 95, 790: 95, 95}, // 1405 - {472: 3907, 574: 3908, 577: 3909, 848: 3906}, - {91, 91, 47: 91, 469: 91, 91, 91, 477: 91, 91, 485: 91, 91, 91, 501: 91, 654: 91, 778: 91, 784: 91, 789: 91, 91}, - {90, 90, 47: 90, 469: 90, 90, 90, 477: 90, 90, 485: 90, 90, 90, 501: 90, 654: 90, 778: 90, 784: 90, 789: 90, 90}, - {89, 89, 47: 89, 469: 89, 89, 89, 477: 89, 89, 485: 89, 89, 89, 501: 89, 654: 89, 778: 89, 784: 89, 789: 89, 89}, - {88, 88, 47: 88, 469: 88, 88, 88, 477: 88, 88, 485: 88, 88, 88, 501: 88, 654: 88, 778: 88, 784: 88, 789: 88, 88}, + {657: 3923}, + {785: 3920}, + {657: 3918}, + {657: 3913}, + {473: 3915, 575: 3916, 578: 3917, 849: 3914}, // 1410 - {472: 3907, 574: 3908, 577: 3909, 848: 3911}, - {92, 92, 47: 92, 469: 92, 92, 92, 477: 92, 92, 485: 92, 92, 92, 501: 92, 654: 92, 778: 92, 784: 92, 789: 92, 92}, - {655: 3913}, - {472: 3907, 574: 3908, 577: 3909, 848: 3914}, - {93, 93, 47: 93, 469: 93, 93, 93, 477: 93, 93, 485: 93, 93, 93, 501: 93, 654: 93, 778: 93, 784: 93, 789: 93, 93}, + {91, 91, 47: 91, 470: 91, 91, 91, 478: 91, 91, 486: 91, 91, 91, 502: 91, 655: 91, 779: 91, 785: 91, 790: 91, 91}, + {90, 90, 47: 90, 470: 90, 90, 90, 478: 90, 90, 486: 90, 90, 90, 502: 90, 655: 90, 779: 90, 785: 90, 790: 90, 90}, + {89, 89, 47: 89, 470: 89, 89, 89, 478: 89, 89, 486: 89, 89, 89, 502: 89, 655: 89, 779: 89, 785: 89, 790: 89, 89}, + {88, 88, 47: 88, 470: 88, 88, 88, 478: 88, 88, 486: 88, 88, 88, 502: 88, 655: 88, 779: 88, 785: 88, 790: 88, 88}, + {473: 3915, 575: 3916, 578: 3917, 849: 3919}, // 1415 - {472: 3907, 574: 3908, 577: 3909, 848: 3916}, - {94, 94, 47: 94, 469: 94, 94, 94, 477: 94, 94, 485: 94, 94, 94, 501: 94, 654: 94, 778: 94, 784: 94, 789: 94, 94}, - {96, 96, 47: 96, 469: 96, 96, 96, 477: 96, 96, 485: 96, 96, 96, 501: 96, 654: 96, 778: 96, 784: 96, 789: 96, 96}, - {834, 834, 47: 834, 469: 834, 471: 834, 477: 834, 834, 485: 834, 834}, - {85, 85, 47: 85, 469: 85, 85, 85, 477: 85, 85, 485: 85, 85, 85, 501: 85, 778: 85, 1295: 3920, 3921}, + {92, 92, 47: 92, 470: 92, 92, 92, 478: 92, 92, 486: 92, 92, 92, 502: 92, 655: 92, 779: 92, 785: 92, 790: 92, 92}, + {657: 3921}, + {473: 3915, 575: 3916, 578: 3917, 849: 3922}, + {93, 93, 47: 93, 470: 93, 93, 93, 478: 93, 93, 486: 93, 93, 93, 502: 93, 655: 93, 779: 93, 785: 93, 790: 93, 93}, + {473: 3915, 575: 3916, 578: 3917, 849: 3924}, // 1420 - {83, 83, 47: 83, 469: 83, 83, 83, 477: 83, 83, 485: 83, 83, 83, 501: 83, 778: 3925, 1235: 3924}, - {655: 3922}, - {472: 3907, 574: 3908, 577: 3909, 848: 3923}, - {84, 84, 47: 84, 469: 84, 84, 84, 477: 84, 84, 485: 84, 84, 84, 501: 84, 778: 84}, - {86, 86, 47: 86, 469: 86, 86, 86, 477: 86, 86, 485: 86, 86, 86, 501: 86}, + {94, 94, 47: 94, 470: 94, 94, 94, 478: 94, 94, 486: 94, 94, 94, 502: 94, 655: 94, 779: 94, 785: 94, 790: 94, 94}, + {96, 96, 47: 96, 470: 96, 96, 96, 478: 96, 96, 486: 96, 96, 96, 502: 96, 655: 96, 779: 96, 785: 96, 790: 96, 96}, + {836, 836, 47: 836, 470: 836, 472: 836, 478: 836, 836, 486: 836, 836}, + {85, 85, 47: 85, 470: 85, 85, 85, 478: 85, 85, 486: 85, 85, 85, 502: 85, 779: 85, 1296: 3928, 3929}, + {83, 83, 47: 83, 470: 83, 83, 83, 478: 83, 83, 486: 83, 83, 83, 502: 83, 779: 3933, 1236: 3932}, // 1425 - {655: 3926}, - {472: 3907, 574: 3908, 577: 3909, 848: 3927}, - {82, 82, 47: 82, 469: 82, 82, 82, 477: 82, 82, 485: 82, 82, 82, 501: 82}, - {830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 477: 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 490: 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 506: 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 542: 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, 566: 830, 580: 830, 642: 830, 650: 830, 735: 830}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3930}, + {657: 3930}, + {473: 3915, 575: 3916, 578: 3917, 849: 3931}, + {84, 84, 47: 84, 470: 84, 84, 84, 478: 84, 84, 486: 84, 84, 84, 502: 84, 779: 84}, + {86, 86, 47: 86, 470: 86, 86, 86, 478: 86, 86, 486: 86, 86, 86, 502: 86}, + {657: 3934}, // 1430 - {7: 1906, 47: 3931, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, - {1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 471: 1246, 1246, 1246, 1246, 1246, 477: 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 490: 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 499: 1246, 1246, 1246, 1246, 506: 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 542: 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 580: 1246}, - {1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 471: 1247, 1247, 1247, 1247, 1247, 477: 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 490: 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 499: 1247, 1247, 1247, 1247, 506: 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 542: 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 580: 1247}, - {1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 471: 1249, 1249, 1249, 1249, 1249, 477: 1249, 1249, 3306, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 490: 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 499: 1249, 1249, 1249, 1249, 506: 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 542: 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 580: 1249}, - {1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 471: 1251, 1251, 1251, 1251, 1251, 477: 1251, 1251, 3306, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 490: 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 499: 1251, 1251, 1251, 1251, 506: 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 542: 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 580: 1251}, + {473: 3915, 575: 3916, 578: 3917, 849: 3935}, + {82, 82, 47: 82, 470: 82, 82, 82, 478: 82, 82, 486: 82, 82, 82, 502: 82}, + {832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 478: 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 491: 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 507: 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 542: 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 567: 832, 583: 832, 643: 832, 651: 832, 736: 832}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3938}, + {7: 1910, 47: 3939, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, // 1435 - {1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 471: 1252, 1252, 1252, 1252, 1252, 477: 1252, 1252, 3306, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 490: 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 499: 1252, 1252, 1252, 1252, 506: 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 542: 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 580: 1252}, - {1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 471: 1253, 1253, 1253, 1253, 1253, 477: 1253, 1253, 3306, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 490: 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 499: 1253, 1253, 1253, 1253, 506: 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 542: 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 580: 1253}, - {1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 471: 1254, 1254, 1254, 1254, 1254, 477: 1254, 1254, 3306, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 490: 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 499: 1254, 1254, 1254, 1254, 506: 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 542: 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 580: 1254}, - {472: 3941}, - {472: 3940}, + {1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 472: 1248, 1248, 1248, 1248, 1248, 478: 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 491: 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 500: 1248, 1248, 1248, 1248, 507: 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 542: 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 583: 1248}, + {1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 472: 1249, 1249, 1249, 1249, 1249, 478: 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 491: 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 500: 1249, 1249, 1249, 1249, 507: 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 542: 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 583: 1249}, + {1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 472: 1251, 1251, 1251, 1251, 1251, 478: 1251, 1251, 3312, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 491: 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 500: 1251, 1251, 1251, 1251, 507: 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 542: 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 583: 1251}, + {1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 472: 1253, 1253, 1253, 1253, 1253, 478: 1253, 1253, 3312, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 491: 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 500: 1253, 1253, 1253, 1253, 507: 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 542: 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 583: 1253}, + {1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 472: 1254, 1254, 1254, 1254, 1254, 478: 1254, 1254, 3312, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 491: 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 500: 1254, 1254, 1254, 1254, 507: 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 542: 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 583: 1254}, // 1440 - {1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 471: 1234, 1234, 1234, 1234, 1234, 477: 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 490: 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 499: 1234, 1234, 1234, 1234, 506: 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 542: 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 580: 1234}, - {1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 471: 1235, 1235, 1235, 1235, 1235, 477: 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 490: 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 499: 1235, 1235, 1235, 1235, 506: 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 542: 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 580: 1235}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3943, 2723, 2724, 2722}, - {1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 3944, 1266, 1266, 1266, 1266, 1266, 477: 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 490: 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 499: 1266, 1266, 1266, 1266, 506: 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 542: 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 580: 1266, 648: 3739, 651: 1266, 1266}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 1903, 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3544, 774: 3706, 821: 3945}, + {1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 472: 1255, 1255, 1255, 1255, 1255, 478: 1255, 1255, 3312, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 491: 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 500: 1255, 1255, 1255, 1255, 507: 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 542: 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 583: 1255}, + {1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 472: 1256, 1256, 1256, 1256, 1256, 478: 1256, 1256, 3312, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 491: 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 500: 1256, 1256, 1256, 1256, 507: 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 542: 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 583: 1256}, + {473: 3949}, + {473: 3948}, + {1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 472: 1236, 1236, 1236, 1236, 1236, 478: 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 491: 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 500: 1236, 1236, 1236, 1236, 507: 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 542: 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 583: 1236}, // 1445 - {47: 3946}, - {1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 471: 1102, 1102, 1102, 1102, 1102, 477: 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 490: 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 499: 1102, 1102, 1102, 1102, 506: 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 542: 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 580: 1102}, - {1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 471: 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 499: 1304, 1304, 1304, 1304, 506: 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 542: 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 570: 1304, 579: 1304, 1304, 1304, 591: 1304, 621: 1304, 640: 1304, 1304}, - {1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 471: 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 499: 1301, 1301, 1301, 1301, 506: 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 542: 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 570: 1301, 579: 1301, 1301, 1301, 591: 1301, 621: 1301, 640: 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, 471: 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 499: 1300, 1300, 1300, 1300, 506: 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 542: 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 570: 1300, 579: 1300, 1300, 1300, 591: 1300, 621: 1300, 640: 1300, 1300}, + {1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 472: 1237, 1237, 1237, 1237, 1237, 478: 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 491: 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 500: 1237, 1237, 1237, 1237, 507: 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 542: 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 583: 1237}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3951, 2727, 2728, 2726}, + {1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 3952, 1268, 1268, 1268, 1268, 1268, 478: 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 491: 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 500: 1268, 1268, 1268, 1268, 507: 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 542: 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 583: 1268, 649: 3747, 652: 1268, 1268}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 1907, 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3550, 775: 3714, 823: 3953}, + {47: 3954}, // 1450 - {1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 471: 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 499: 1298, 1298, 1298, 1298, 506: 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 542: 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 570: 1298, 579: 1298, 1298, 1298, 591: 1298, 621: 1298, 640: 1298, 1298}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 647: 3953, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3952}, - {47: 3957, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3954}, - {47: 3955, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, + {1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 472: 1104, 1104, 1104, 1104, 1104, 478: 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 491: 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 500: 1104, 1104, 1104, 1104, 507: 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 542: 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 583: 1104}, + {101: 3426, 104: 3422, 108: 3419, 3434, 3421, 3418, 3420, 3424, 3425, 3430, 3429, 3428, 3432, 3433, 3427, 3431, 123: 3423, 503: 3307, 507: 3305, 3306, 3304, 3302, 529: 3416, 3413, 3415, 3414, 3410, 3412, 3411, 3408, 3409, 3407, 3417, 731: 3303, 3301, 800: 3406, 819: 3956}, + {483: 3669}, + {1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 472: 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 500: 1307, 1307, 1307, 1307, 507: 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 542: 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 571: 1307, 580: 1307, 583: 1307, 1307, 636: 1307, 640: 1307, 1307, 1307}, + {1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 472: 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 500: 1304, 1304, 1304, 1304, 507: 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 542: 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 571: 1304, 580: 1304, 583: 1304, 1304, 636: 1304, 640: 1304, 1304, 1304}, // 1455 - {948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 471: 948, 948, 948, 948, 948, 477: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 490: 948, 948, 948, 948, 948, 948, 948, 948, 499: 948, 948, 948, 948, 506: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 542: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 580: 948, 737: 3318, 743: 3510, 761: 3956}, - {1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 471: 1110, 1110, 1110, 1110, 1110, 477: 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 490: 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 499: 1110, 1110, 1110, 1110, 506: 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 542: 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 580: 1110}, - {948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 471: 948, 948, 948, 948, 948, 477: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 490: 948, 948, 948, 948, 948, 948, 948, 948, 499: 948, 948, 948, 948, 506: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 542: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 580: 948, 737: 3318, 743: 3510, 761: 3958}, - {1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 471: 1111, 1111, 1111, 1111, 1111, 477: 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 490: 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 499: 1111, 1111, 1111, 1111, 506: 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 542: 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 580: 1111}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 647: 3961, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3960}, + {1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 472: 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 500: 1303, 1303, 1303, 1303, 507: 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 542: 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 571: 1303, 580: 1303, 583: 1303, 1303, 636: 1303, 640: 1303, 1303, 1303}, + {1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 472: 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 500: 1301, 1301, 1301, 1301, 507: 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 542: 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 571: 1301, 580: 1301, 583: 1301, 1301, 636: 1301, 640: 1301, 1301, 1301}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 648: 3963, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3962}, + {47: 3967, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3964}, // 1460 - {7: 3971, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3962}, - {7: 3963, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 647: 3965, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3964}, - {47: 3969, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, + {47: 3965, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 472: 950, 950, 950, 950, 950, 478: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 491: 950, 950, 950, 950, 950, 950, 950, 950, 500: 950, 950, 950, 950, 507: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 542: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 583: 950, 738: 3324, 744: 3516, 762: 3966}, + {1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 472: 1112, 1112, 1112, 1112, 1112, 478: 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 491: 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 500: 1112, 1112, 1112, 1112, 507: 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 542: 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 583: 1112}, + {950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 472: 950, 950, 950, 950, 950, 478: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 491: 950, 950, 950, 950, 950, 950, 950, 950, 500: 950, 950, 950, 950, 507: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 542: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 583: 950, 738: 3324, 744: 3516, 762: 3968}, + {1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 472: 1113, 1113, 1113, 1113, 1113, 478: 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 491: 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 500: 1113, 1113, 1113, 1113, 507: 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 542: 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 583: 1113}, // 1465 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3966}, - {47: 3967, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, - {948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 471: 948, 948, 948, 948, 948, 477: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 490: 948, 948, 948, 948, 948, 948, 948, 948, 499: 948, 948, 948, 948, 506: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 542: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 580: 948, 737: 3318, 743: 3510, 761: 3968}, - {1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 471: 1106, 1106, 1106, 1106, 1106, 477: 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 490: 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 499: 1106, 1106, 1106, 1106, 506: 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 542: 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 580: 1106}, - {948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 471: 948, 948, 948, 948, 948, 477: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 490: 948, 948, 948, 948, 948, 948, 948, 948, 499: 948, 948, 948, 948, 506: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 542: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 580: 948, 737: 3318, 743: 3510, 761: 3970}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 648: 3971, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3970}, + {7: 3981, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3972}, + {7: 3973, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 648: 3975, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3974}, // 1470 - {1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 471: 1108, 1108, 1108, 1108, 1108, 477: 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 490: 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 499: 1108, 1108, 1108, 1108, 506: 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 542: 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 580: 1108}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 647: 3973, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3972}, - {47: 3977, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3974}, - {47: 3975, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, + {47: 3979, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3976}, + {47: 3977, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 472: 950, 950, 950, 950, 950, 478: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 491: 950, 950, 950, 950, 950, 950, 950, 950, 500: 950, 950, 950, 950, 507: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 542: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 583: 950, 738: 3324, 744: 3516, 762: 3978}, + {1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 472: 1108, 1108, 1108, 1108, 1108, 478: 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 491: 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 500: 1108, 1108, 1108, 1108, 507: 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 542: 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 583: 1108}, // 1475 - {948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 471: 948, 948, 948, 948, 948, 477: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 490: 948, 948, 948, 948, 948, 948, 948, 948, 499: 948, 948, 948, 948, 506: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 542: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 580: 948, 737: 3318, 743: 3510, 761: 3976}, - {1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 471: 1107, 1107, 1107, 1107, 1107, 477: 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 490: 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 499: 1107, 1107, 1107, 1107, 506: 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 542: 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 580: 1107}, - {948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 471: 948, 948, 948, 948, 948, 477: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 490: 948, 948, 948, 948, 948, 948, 948, 948, 499: 948, 948, 948, 948, 506: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 542: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 580: 948, 737: 3318, 743: 3510, 761: 3978}, - {1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 471: 1109, 1109, 1109, 1109, 1109, 477: 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 490: 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 499: 1109, 1109, 1109, 1109, 506: 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 542: 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 580: 1109}, - {105: 3420, 3416, 108: 3413, 3428, 111: 3415, 3412, 3414, 3418, 3419, 3424, 3423, 3422, 3426, 3427, 3421, 3425, 124: 3417, 801: 3980}, + {950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 472: 950, 950, 950, 950, 950, 478: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 491: 950, 950, 950, 950, 950, 950, 950, 950, 500: 950, 950, 950, 950, 507: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 542: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 583: 950, 738: 3324, 744: 3516, 762: 3980}, + {1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 472: 1110, 1110, 1110, 1110, 1110, 478: 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 491: 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 500: 1110, 1110, 1110, 1110, 507: 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 542: 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 583: 1110}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 648: 3983, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3982}, + {47: 3987, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3984}, // 1480 - {7: 3981}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3982}, - {7: 3983, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3984}, - {47: 3985, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, + {47: 3985, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 472: 950, 950, 950, 950, 950, 478: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 491: 950, 950, 950, 950, 950, 950, 950, 950, 500: 950, 950, 950, 950, 507: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 542: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 583: 950, 738: 3324, 744: 3516, 762: 3986}, + {1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 472: 1109, 1109, 1109, 1109, 1109, 478: 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 491: 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 500: 1109, 1109, 1109, 1109, 507: 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 542: 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 583: 1109}, + {950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 472: 950, 950, 950, 950, 950, 478: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 491: 950, 950, 950, 950, 950, 950, 950, 950, 500: 950, 950, 950, 950, 507: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 542: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 583: 950, 738: 3324, 744: 3516, 762: 3988}, + {1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 472: 1111, 1111, 1111, 1111, 1111, 478: 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 491: 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 500: 1111, 1111, 1111, 1111, 507: 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 542: 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 583: 1111}, // 1485 - {1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 471: 1156, 1156, 1156, 1156, 1156, 477: 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 490: 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 499: 1156, 1156, 1156, 1156, 506: 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 542: 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 580: 1156}, - {105: 3420, 3416, 108: 3413, 3428, 111: 3415, 3412, 3414, 3418, 3419, 3424, 3423, 3422, 3426, 3427, 3421, 3425, 124: 3417, 801: 3987}, - {7: 3988}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3989}, - {7: 3990, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, + {101: 3426, 104: 3422, 108: 3419, 3434, 3421, 3418, 3420, 3424, 3425, 3430, 3429, 3428, 3432, 3433, 3427, 3431, 123: 3423, 800: 3990}, + {7: 3991}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3992}, + {7: 3993, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3994}, // 1490 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3991}, - {47: 3992, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, - {1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 471: 1157, 1157, 1157, 1157, 1157, 477: 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 490: 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 499: 1157, 1157, 1157, 1157, 506: 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 542: 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 580: 1157}, - {173: 3996, 3995, 192: 3997, 218: 3998, 1215: 3994}, - {7: 3999}, + {47: 3995, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 472: 1158, 1158, 1158, 1158, 1158, 478: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 491: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 500: 1158, 1158, 1158, 1158, 507: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 542: 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 583: 1158}, + {101: 3426, 104: 3422, 108: 3419, 3434, 3421, 3418, 3420, 3424, 3425, 3430, 3429, 3428, 3432, 3433, 3427, 3431, 123: 3423, 800: 3997}, + {7: 3998}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3999}, // 1495 + {7: 4000, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 4001}, + {47: 4002, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 472: 1159, 1159, 1159, 1159, 1159, 478: 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 491: 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 500: 1159, 1159, 1159, 1159, 507: 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 542: 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 583: 1159}, + {173: 4006, 4005, 192: 4007, 218: 4008, 1216: 4004}, + // 1500 + {7: 4009}, + {7: 1148}, + {7: 1147}, {7: 1146}, {7: 1145}, - {7: 1144}, - {7: 1143}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 4000}, - // 1500 - {47: 4001, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, - {1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 471: 1163, 1163, 1163, 1163, 1163, 477: 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 490: 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 499: 1163, 1163, 1163, 1163, 506: 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 542: 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 580: 1163}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3875, 2723, 2724, 2722, 733: 4003}, - {7: 4004}, - {482: 4009, 4008, 505: 2697, 729: 4005, 760: 4007, 809: 4006}, // 1505 - {1958, 1958, 4: 1958, 1958, 1958, 1958, 13: 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 70: 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 106: 1958, 126: 1958, 1958, 1958, 1958, 476: 1958, 1958, 479: 1958, 490: 1958, 494: 1958, 497: 1958, 500: 1958, 503: 1958, 643: 1958, 645: 1958, 653: 1958}, - {47: 4012}, - {29, 29, 4: 29, 29, 29, 13: 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 47: 29, 70: 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 476: 29, 29, 479: 29, 500: 29, 503: 29, 643: 29, 645: 29, 653: 29}, - {505: 2697, 729: 4005, 760: 4011}, - {505: 2697, 729: 4010}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 4010}, + {47: 4011, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 472: 1165, 1165, 1165, 1165, 1165, 478: 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 491: 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 500: 1165, 1165, 1165, 1165, 507: 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 542: 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 583: 1165}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3883, 2727, 2728, 2726, 734: 4013}, + {7: 4014}, // 1510 - {27, 27, 4: 27, 27, 27, 13: 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 47: 27, 70: 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 476: 27, 27, 479: 27, 500: 27, 503: 27, 643: 27, 645: 27, 653: 27}, - {28, 28, 4: 28, 28, 28, 13: 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 47: 28, 70: 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 476: 28, 28, 479: 28, 500: 28, 503: 28, 643: 28, 645: 28, 653: 28}, - {1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 471: 1134, 1134, 1134, 1134, 1134, 477: 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 490: 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 499: 1134, 1134, 1134, 1134, 506: 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 542: 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 580: 1134}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3875, 2723, 2724, 2722, 733: 4014}, - {47: 4015}, + {483: 4018, 4019, 506: 2701, 730: 4015, 761: 4017, 810: 4016}, + {1962, 1962, 4: 1962, 1962, 1962, 1962, 13: 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 70: 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 104: 1962, 126: 1962, 1962, 1962, 1962, 477: 1962, 1962, 480: 1962, 491: 1962, 495: 1962, 498: 1962, 501: 1962, 504: 1962, 644: 1962, 646: 1962, 654: 1962}, + {47: 4022}, + {29, 29, 4: 29, 29, 29, 13: 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 47: 29, 70: 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 477: 29, 29, 480: 29, 501: 29, 504: 29, 644: 29, 646: 29, 654: 29}, + {506: 2701, 730: 4015, 761: 4021}, // 1515 - {1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 471: 1135, 1135, 1135, 1135, 1135, 477: 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 490: 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 499: 1135, 1135, 1135, 1135, 506: 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 542: 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 580: 1135}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 4017}, - {47: 4018, 475: 4019, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, - {1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 471: 1151, 1151, 1151, 1151, 1151, 477: 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 490: 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 499: 1151, 1151, 1151, 1151, 506: 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 542: 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 580: 1151}, - {503: 3765, 541: 4021, 643: 3764, 896: 4020}, + {506: 2701, 730: 4020}, + {27, 27, 4: 27, 27, 27, 13: 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 47: 27, 70: 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 477: 27, 27, 480: 27, 501: 27, 504: 27, 644: 27, 646: 27, 654: 27}, + {28, 28, 4: 28, 28, 28, 13: 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 47: 28, 70: 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 477: 28, 28, 480: 28, 501: 28, 504: 28, 644: 28, 646: 28, 654: 28}, + {1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 472: 1136, 1136, 1136, 1136, 1136, 478: 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 491: 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 500: 1136, 1136, 1136, 1136, 507: 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 542: 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 583: 1136}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3883, 2727, 2728, 2726, 734: 4024}, // 1520 - {470: 3780, 759: 4024}, - {470: 3780, 759: 4022}, - {47: 4023}, - {1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 471: 1149, 1149, 1149, 1149, 1149, 477: 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 490: 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 499: 1149, 1149, 1149, 1149, 506: 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 542: 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 580: 1149}, {47: 4025}, + {1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 472: 1137, 1137, 1137, 1137, 1137, 478: 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 491: 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 500: 1137, 1137, 1137, 1137, 507: 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 542: 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 583: 1137}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 4027}, + {47: 4028, 476: 4029, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 472: 1153, 1153, 1153, 1153, 1153, 478: 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 491: 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 500: 1153, 1153, 1153, 1153, 507: 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 542: 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 583: 1153}, // 1525 - {1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 471: 1150, 1150, 1150, 1150, 1150, 477: 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 490: 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 499: 1150, 1150, 1150, 1150, 506: 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 542: 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 580: 1150}, - {1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 471: 1173, 1173, 1173, 1173, 1173, 477: 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 490: 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 499: 1173, 1173, 1173, 1173, 506: 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 542: 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 580: 1173}, - {1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 471: 1174, 1174, 1174, 1174, 1174, 477: 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 490: 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 499: 1174, 1174, 1174, 1174, 506: 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 542: 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 580: 1174}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 1903, 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3544, 774: 3706, 821: 4029}, - {47: 4030}, + {504: 3773, 541: 4031, 644: 3772, 897: 4030}, + {471: 3788, 760: 4034}, + {471: 3788, 760: 4032}, + {47: 4033}, + {1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 472: 1151, 1151, 1151, 1151, 1151, 478: 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 491: 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 500: 1151, 1151, 1151, 1151, 507: 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 542: 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 583: 1151}, // 1530 - {1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 471: 1170, 1170, 1170, 1170, 1170, 477: 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 490: 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 499: 1170, 1170, 1170, 1170, 506: 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 542: 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 580: 1170}, - {1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 471: 1175, 1175, 1175, 1175, 1175, 477: 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 490: 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 499: 1175, 1175, 1175, 1175, 506: 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 542: 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 580: 1175}, - {2: 1229, 1229, 1229, 1229, 1229, 8: 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 48: 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 470: 1229, 472: 1229, 1229, 1229, 476: 1229, 480: 1229, 1229, 1229, 1229, 1229, 489: 1229, 498: 1229, 503: 1229, 1229, 1229, 541: 1229, 563: 1229, 1229, 1229, 567: 1229, 1229, 1229, 571: 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 582: 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 592: 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 622: 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 644: 1229, 647: 3502, 741: 3500, 3501, 780: 3503, 783: 3504, 810: 4033, 812: 3505}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 4034}, - {47: 4035, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, + {47: 4035}, + {1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 472: 1152, 1152, 1152, 1152, 1152, 478: 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 491: 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 500: 1152, 1152, 1152, 1152, 507: 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 542: 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 583: 1152}, + {1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 472: 1175, 1175, 1175, 1175, 1175, 478: 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 491: 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 500: 1175, 1175, 1175, 1175, 507: 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 542: 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 583: 1175}, + {1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 472: 1176, 1176, 1176, 1176, 1176, 478: 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 491: 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 500: 1176, 1176, 1176, 1176, 507: 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 542: 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 583: 1176}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 1907, 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3550, 775: 3714, 823: 4039}, // 1535 - {948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 471: 948, 948, 948, 948, 948, 477: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 490: 948, 948, 948, 948, 948, 948, 948, 948, 499: 948, 948, 948, 948, 506: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 542: 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 580: 948, 737: 3318, 743: 3510, 761: 4036}, - {1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 471: 1132, 1132, 1132, 1132, 1132, 477: 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 490: 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 499: 1132, 1132, 1132, 1132, 506: 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 542: 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 580: 1132}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 1903, 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3544, 774: 3706, 821: 4038}, - {47: 4039}, - {1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 471: 1103, 1103, 1103, 1103, 1103, 477: 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 490: 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 499: 1103, 1103, 1103, 1103, 506: 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 542: 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 580: 1103}, + {47: 4040}, + {1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 472: 1172, 1172, 1172, 1172, 1172, 478: 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 491: 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 500: 1172, 1172, 1172, 1172, 507: 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 542: 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 583: 1172}, + {1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 472: 1177, 1177, 1177, 1177, 1177, 478: 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 491: 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 500: 1177, 1177, 1177, 1177, 507: 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 542: 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 583: 1177}, + {2: 1231, 1231, 1231, 1231, 1231, 8: 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 48: 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 471: 1231, 473: 1231, 1231, 1231, 477: 1231, 481: 1231, 1231, 1231, 1231, 1231, 490: 1231, 499: 1231, 504: 1231, 1231, 1231, 541: 1231, 564: 1231, 1231, 1231, 568: 1231, 1231, 1231, 572: 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 581: 1231, 1231, 585: 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 637: 1231, 1231, 1231, 645: 1231, 648: 3508, 742: 3506, 3507, 781: 3509, 784: 3510, 811: 4043, 813: 3511}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 4044}, // 1540 - {147: 2285, 170: 2285, 187: 2285, 489: 2285, 515: 2285, 540: 2285, 552: 2285, 561: 2285, 2285, 568: 2285, 2285, 583: 2285}, - {147: 2284, 170: 2284, 187: 2284, 489: 2284, 515: 2284, 540: 2284, 552: 2284, 561: 2284, 2284, 568: 2284, 2284, 583: 2284}, - {2: 1885, 1885, 1885, 1885, 1885, 8: 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 48: 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 470: 1885, 472: 1885, 1885, 476: 1885, 480: 1885, 1885, 1885, 1885, 1885, 489: 1885, 498: 1885, 503: 1885, 1885, 1885, 541: 1885, 563: 1885, 1885, 1885, 567: 1885, 1885, 1885, 571: 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 582: 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 592: 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 622: 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885}, - {515: 4067, 540: 4066, 552: 4065, 561: 4051, 4052, 1106: 4068}, - {470: 1881}, + {47: 4045, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 472: 950, 950, 950, 950, 950, 478: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 491: 950, 950, 950, 950, 950, 950, 950, 950, 500: 950, 950, 950, 950, 507: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 542: 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 583: 950, 738: 3324, 744: 3516, 762: 4046}, + {1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 472: 1134, 1134, 1134, 1134, 1134, 478: 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 491: 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 500: 1134, 1134, 1134, 1134, 507: 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 542: 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 583: 1134}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 1907, 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3550, 775: 3714, 823: 4048}, + {47: 4049}, // 1545 - {2: 1879, 1879, 1879, 1879, 1879, 8: 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 48: 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 470: 1879, 472: 1879, 1879, 476: 1879, 480: 1879, 1879, 1879, 1879, 1879, 489: 1879, 498: 1879, 503: 1879, 1879, 1879, 541: 1879, 563: 1879, 1879, 1879, 567: 1879, 1879, 1879, 571: 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 582: 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 592: 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 622: 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879}, - {2: 1877, 1877, 1877, 1877, 1877, 8: 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 48: 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 470: 1877, 472: 1877, 1877, 476: 1877, 480: 1877, 1877, 1877, 1877, 1877, 489: 1877, 498: 1877, 503: 1877, 1877, 1877, 541: 1877, 563: 1877, 1877, 1877, 567: 1877, 1877, 1877, 571: 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 582: 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 592: 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 622: 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877}, - {470: 4061, 705: 4062}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 3305, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 4058}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 3305, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 4054, 3210, 3291, 3209, 3206}, + {1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 472: 1105, 1105, 1105, 1105, 1105, 478: 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 491: 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 500: 1105, 1105, 1105, 1105, 507: 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 542: 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 583: 1105}, + {147: 2289, 170: 2289, 187: 2289, 490: 2289, 516: 2289, 542: 2289, 553: 2289, 562: 2289, 2289, 569: 2289, 2289, 582: 2289}, + {147: 2288, 170: 2288, 187: 2288, 490: 2288, 516: 2288, 542: 2288, 553: 2288, 562: 2288, 2288, 569: 2288, 2288, 582: 2288}, + {2: 1889, 1889, 1889, 1889, 1889, 8: 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 48: 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 471: 1889, 473: 1889, 1889, 477: 1889, 481: 1889, 1889, 1889, 1889, 1889, 490: 1889, 499: 1889, 504: 1889, 1889, 1889, 541: 1889, 564: 1889, 1889, 1889, 568: 1889, 1889, 1889, 572: 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 581: 1889, 1889, 585: 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 637: 1889, 1889, 1889}, + {516: 4077, 542: 4076, 553: 4075, 562: 4061, 4062, 1107: 4078}, // 1550 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 3305, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 4053, 3210, 3291, 3209, 3206}, - {2: 1866, 1866, 1866, 1866, 1866, 8: 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 48: 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 470: 1866, 472: 1866, 1866, 476: 1866, 480: 1866, 1866, 1866, 1866, 1866, 489: 1866, 498: 1866, 503: 1866, 1866, 1866, 541: 1866, 563: 1866, 1866, 1866, 567: 1866, 1866, 1866, 571: 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 582: 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 592: 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 622: 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866}, - {2: 1865, 1865, 1865, 1865, 1865, 8: 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 48: 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 470: 1865, 472: 1865, 1865, 476: 1865, 480: 1865, 1865, 1865, 1865, 1865, 489: 1865, 498: 1865, 503: 1865, 1865, 1865, 541: 1865, 563: 1865, 1865, 1865, 567: 1865, 1865, 1865, 571: 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 582: 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 592: 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 622: 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865}, - {1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 471: 1868, 1868, 475: 1868, 477: 1868, 1868, 3306, 1868, 1868, 485: 1868, 1868, 1868, 490: 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 499: 1868, 1868, 1868, 1868, 506: 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 516: 1868, 1868, 1868, 1868, 521: 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 542: 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 580: 3307}, - {1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 4056, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 471: 1864, 1864, 475: 1864, 477: 1864, 1864, 3306, 1864, 1864, 485: 1864, 1864, 1864, 490: 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 499: 1864, 1864, 1864, 1864, 506: 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 516: 1864, 1864, 1864, 1864, 521: 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 542: 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 580: 3307, 1232: 4055}, + {471: 1885}, + {2: 1883, 1883, 1883, 1883, 1883, 8: 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 48: 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 471: 1883, 473: 1883, 1883, 477: 1883, 481: 1883, 1883, 1883, 1883, 1883, 490: 1883, 499: 1883, 504: 1883, 1883, 1883, 541: 1883, 564: 1883, 1883, 1883, 568: 1883, 1883, 1883, 572: 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 581: 1883, 1883, 585: 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 637: 1883, 1883, 1883}, + {2: 1881, 1881, 1881, 1881, 1881, 8: 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 48: 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 471: 1881, 473: 1881, 1881, 477: 1881, 481: 1881, 1881, 1881, 1881, 1881, 490: 1881, 499: 1881, 504: 1881, 1881, 1881, 541: 1881, 564: 1881, 1881, 1881, 568: 1881, 1881, 1881, 572: 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 581: 1881, 1881, 585: 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 637: 1881, 1881, 1881}, + {471: 4071, 706: 4072}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 3311, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 4068}, // 1555 - {1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 471: 1869, 1869, 475: 1869, 477: 1869, 1869, 480: 1869, 1869, 485: 1869, 1869, 1869, 490: 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 499: 1869, 1869, 1869, 1869, 506: 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 516: 1869, 1869, 1869, 1869, 521: 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 542: 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869}, - {472: 4057}, - {1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 471: 1863, 1863, 475: 1863, 477: 1863, 1863, 480: 1863, 1863, 485: 1863, 1863, 1863, 490: 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 499: 1863, 1863, 1863, 1863, 506: 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 516: 1863, 1863, 1863, 1863, 521: 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 542: 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863}, - {482: 3643, 3642, 3648, 502: 4059, 520: 3644, 553: 3645, 3646, 3639, 3649, 3638, 3647, 3640, 3641}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 3305, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 4060}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 3311, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3310, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 4064, 3216, 3296, 3215, 3212}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 3311, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3310, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 4063, 3216, 3296, 3215, 3212}, + {2: 1870, 1870, 1870, 1870, 1870, 8: 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 48: 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 471: 1870, 473: 1870, 1870, 477: 1870, 481: 1870, 1870, 1870, 1870, 1870, 490: 1870, 499: 1870, 504: 1870, 1870, 1870, 541: 1870, 564: 1870, 1870, 1870, 568: 1870, 1870, 1870, 572: 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 581: 1870, 1870, 585: 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 637: 1870, 1870, 1870}, + {2: 1869, 1869, 1869, 1869, 1869, 8: 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 48: 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 471: 1869, 473: 1869, 1869, 477: 1869, 481: 1869, 1869, 1869, 1869, 1869, 490: 1869, 499: 1869, 504: 1869, 1869, 1869, 541: 1869, 564: 1869, 1869, 1869, 568: 1869, 1869, 1869, 572: 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 581: 1869, 1869, 585: 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 637: 1869, 1869, 1869}, + {1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 472: 1872, 1872, 476: 1872, 478: 1872, 1872, 3312, 1872, 1872, 486: 1872, 1872, 1872, 491: 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 500: 1872, 1872, 1872, 1872, 507: 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 517: 1872, 1872, 1872, 1872, 522: 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 543: 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 583: 3313}, // 1560 - {1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 471: 1870, 1870, 475: 1870, 477: 1870, 1870, 480: 1870, 1870, 485: 1870, 1870, 1870, 490: 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 499: 1870, 1870, 1870, 1870, 506: 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 516: 1870, 1870, 1870, 1870, 521: 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 542: 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 2550, 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3833, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 2548, 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 642: 2544, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3832, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3544, 744: 3835, 2545, 2546, 2547, 2556, 752: 2554, 2553, 2552, 3834, 3837, 3836, 774: 4063}, - {1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 471: 1871, 1871, 475: 1871, 477: 1871, 1871, 480: 1871, 1871, 485: 1871, 1871, 1871, 490: 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 499: 1871, 1871, 1871, 1871, 506: 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 516: 1871, 1871, 1871, 1871, 521: 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 542: 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871}, - {7: 3546, 47: 4064}, - {1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 471: 1872, 1872, 475: 1872, 477: 1872, 1872, 480: 1872, 1872, 485: 1872, 1872, 1872, 490: 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 499: 1872, 1872, 1872, 1872, 506: 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 516: 1872, 1872, 1872, 1872, 521: 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 542: 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872}, + {1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 4066, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 472: 1868, 1868, 476: 1868, 478: 1868, 1868, 3312, 1868, 1868, 486: 1868, 1868, 1868, 491: 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 500: 1868, 1868, 1868, 1868, 507: 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 517: 1868, 1868, 1868, 1868, 522: 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 543: 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 583: 3313, 1233: 4065}, + {1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 472: 1873, 1873, 476: 1873, 478: 1873, 1873, 481: 1873, 1873, 486: 1873, 1873, 1873, 491: 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 500: 1873, 1873, 1873, 1873, 507: 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 517: 1873, 1873, 1873, 1873, 522: 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 543: 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873}, + {473: 4067}, + {1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 472: 1867, 1867, 476: 1867, 478: 1867, 1867, 481: 1867, 1867, 486: 1867, 1867, 1867, 491: 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 500: 1867, 1867, 1867, 1867, 507: 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 517: 1867, 1867, 1867, 1867, 522: 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 543: 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867}, + {483: 3648, 3649, 3654, 503: 4069, 521: 3650, 554: 3651, 3652, 3645, 3655, 3644, 3653, 3646, 3647}, // 1565 - {2: 1884, 1884, 1884, 1884, 1884, 8: 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 48: 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 470: 1884, 472: 1884, 1884, 476: 1884, 480: 1884, 1884, 1884, 1884, 1884, 489: 1884, 498: 1884, 503: 1884, 1884, 1884, 541: 1884, 563: 1884, 1884, 1884, 567: 1884, 1884, 1884, 571: 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 582: 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 592: 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 622: 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884}, - {470: 1880}, - {2: 1878, 1878, 1878, 1878, 1878, 8: 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 48: 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 470: 1878, 472: 1878, 1878, 476: 1878, 480: 1878, 1878, 1878, 1878, 1878, 489: 1878, 498: 1878, 503: 1878, 1878, 1878, 541: 1878, 563: 1878, 1878, 1878, 567: 1878, 1878, 1878, 571: 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 582: 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 592: 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 622: 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878}, - {2: 1876, 1876, 1876, 1876, 1876, 8: 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 48: 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 470: 1876, 472: 1876, 1876, 476: 1876, 480: 1876, 1876, 1876, 1876, 1876, 489: 1876, 498: 1876, 503: 1876, 1876, 1876, 541: 1876, 563: 1876, 1876, 1876, 567: 1876, 1876, 1876, 571: 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 582: 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 592: 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 622: 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876}, - {170: 4092, 489: 4093, 568: 4091, 4090}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 3311, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 4070}, + {1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 472: 1874, 1874, 476: 1874, 478: 1874, 1874, 481: 1874, 1874, 486: 1874, 1874, 1874, 491: 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 500: 1874, 1874, 1874, 1874, 507: 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 517: 1874, 1874, 1874, 1874, 522: 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 543: 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 2554, 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3841, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 2552, 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 643: 2548, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3840, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3550, 745: 3843, 2549, 2550, 2551, 2560, 753: 2558, 2557, 2556, 3842, 3845, 3844, 775: 4073}, + {1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 472: 1875, 1875, 476: 1875, 478: 1875, 1875, 481: 1875, 1875, 486: 1875, 1875, 1875, 491: 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 500: 1875, 1875, 1875, 1875, 507: 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 517: 1875, 1875, 1875, 1875, 522: 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 543: 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875}, + {7: 3552, 47: 4074}, // 1570 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 4084, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 4085, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 4083, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 647: 4086, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 4081, 1167: 4082}, - {2: 1893, 1893, 1893, 1893, 1893, 8: 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 48: 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 470: 1893, 472: 1893, 1893, 476: 1893, 480: 1893, 1893, 1893, 1893, 1893, 489: 1893, 498: 1893, 503: 1893, 1893, 1893, 541: 1893, 563: 1893, 1893, 1893, 567: 1893, 1893, 1893, 571: 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 582: 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 592: 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 622: 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 647: 1893}, - {2: 1892, 1892, 1892, 1892, 1892, 8: 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 48: 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 470: 1892, 472: 1892, 1892, 476: 1892, 480: 1892, 1892, 1892, 1892, 1892, 489: 1892, 498: 1892, 503: 1892, 1892, 1892, 541: 1892, 563: 1892, 1892, 1892, 567: 1892, 1892, 1892, 571: 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 582: 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 592: 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 622: 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 647: 1892}, - {2: 1891, 1891, 1891, 1891, 1891, 8: 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 48: 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 470: 1891, 472: 1891, 1891, 476: 1891, 480: 1891, 1891, 1891, 1891, 1891, 489: 1891, 498: 1891, 503: 1891, 1891, 1891, 541: 1891, 563: 1891, 1891, 1891, 567: 1891, 1891, 1891, 571: 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 582: 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 592: 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 622: 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 647: 1891}, - {2: 1890, 1890, 1890, 1890, 1890, 8: 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 48: 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 470: 1890, 472: 1890, 1890, 476: 1890, 480: 1890, 1890, 1890, 1890, 1890, 489: 1890, 498: 1890, 503: 1890, 1890, 1890, 541: 1890, 563: 1890, 1890, 1890, 567: 1890, 1890, 1890, 571: 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 582: 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 592: 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 622: 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 647: 1890}, + {1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 472: 1876, 1876, 476: 1876, 478: 1876, 1876, 481: 1876, 1876, 486: 1876, 1876, 1876, 491: 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 500: 1876, 1876, 1876, 1876, 507: 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 517: 1876, 1876, 1876, 1876, 522: 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 543: 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876}, + {2: 1888, 1888, 1888, 1888, 1888, 8: 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 48: 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 471: 1888, 473: 1888, 1888, 477: 1888, 481: 1888, 1888, 1888, 1888, 1888, 490: 1888, 499: 1888, 504: 1888, 1888, 1888, 541: 1888, 564: 1888, 1888, 1888, 568: 1888, 1888, 1888, 572: 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 581: 1888, 1888, 585: 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 637: 1888, 1888, 1888}, + {471: 1884}, + {2: 1882, 1882, 1882, 1882, 1882, 8: 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 48: 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 471: 1882, 473: 1882, 1882, 477: 1882, 481: 1882, 1882, 1882, 1882, 1882, 490: 1882, 499: 1882, 504: 1882, 1882, 1882, 541: 1882, 564: 1882, 1882, 1882, 568: 1882, 1882, 1882, 572: 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 581: 1882, 1882, 585: 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 637: 1882, 1882, 1882}, + {2: 1880, 1880, 1880, 1880, 1880, 8: 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 48: 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 471: 1880, 473: 1880, 1880, 477: 1880, 481: 1880, 1880, 1880, 1880, 1880, 490: 1880, 499: 1880, 504: 1880, 1880, 1880, 541: 1880, 564: 1880, 1880, 1880, 568: 1880, 1880, 1880, 572: 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 581: 1880, 1880, 585: 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 637: 1880, 1880, 1880}, // 1575 - {2: 1889, 1889, 1889, 1889, 1889, 8: 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 48: 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 470: 1889, 472: 1889, 1889, 476: 1889, 480: 1889, 1889, 1889, 1889, 1889, 489: 1889, 498: 1889, 503: 1889, 1889, 1889, 541: 1889, 563: 1889, 1889, 1889, 567: 1889, 1889, 1889, 571: 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 582: 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 592: 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 622: 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 647: 1889}, - {2: 1888, 1888, 1888, 1888, 1888, 8: 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 48: 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 470: 1888, 472: 1888, 1888, 476: 1888, 480: 1888, 1888, 1888, 1888, 1888, 489: 1888, 498: 1888, 503: 1888, 1888, 1888, 541: 1888, 563: 1888, 1888, 1888, 567: 1888, 1888, 1888, 571: 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 582: 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 592: 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 622: 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 647: 1888}, - {2: 1887, 1887, 1887, 1887, 1887, 8: 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 48: 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 470: 1887, 472: 1887, 1887, 476: 1887, 480: 1887, 1887, 1887, 1887, 1887, 489: 1887, 498: 1887, 503: 1887, 1887, 1887, 541: 1887, 563: 1887, 1887, 1887, 567: 1887, 1887, 1887, 571: 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 582: 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 592: 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 622: 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 647: 1887}, - {2: 1886, 1886, 1886, 1886, 1886, 8: 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 48: 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 470: 1886, 472: 1886, 1886, 476: 1886, 480: 1886, 1886, 1886, 1886, 1886, 489: 1886, 498: 1886, 503: 1886, 1886, 1886, 541: 1886, 563: 1886, 1886, 1886, 567: 1886, 1886, 1886, 571: 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 582: 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 592: 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 622: 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 647: 1886}, - {170: 1883, 473: 4041, 4040, 489: 1883, 568: 1883, 1883, 806: 4080}, + {170: 4102, 490: 4103, 569: 4101, 4100}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 4094, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 4095, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 4093, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 648: 4096, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 4091, 1168: 4092}, + {2: 1897, 1897, 1897, 1897, 1897, 8: 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 48: 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 471: 1897, 473: 1897, 1897, 477: 1897, 481: 1897, 1897, 1897, 1897, 1897, 490: 1897, 499: 1897, 504: 1897, 1897, 1897, 541: 1897, 564: 1897, 1897, 1897, 568: 1897, 1897, 1897, 572: 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 581: 1897, 1897, 585: 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 637: 1897, 1897, 1897, 648: 1897}, + {2: 1896, 1896, 1896, 1896, 1896, 8: 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 48: 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 471: 1896, 473: 1896, 1896, 477: 1896, 481: 1896, 1896, 1896, 1896, 1896, 490: 1896, 499: 1896, 504: 1896, 1896, 1896, 541: 1896, 564: 1896, 1896, 1896, 568: 1896, 1896, 1896, 572: 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 581: 1896, 1896, 585: 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 637: 1896, 1896, 1896, 648: 1896}, + {2: 1895, 1895, 1895, 1895, 1895, 8: 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 48: 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 471: 1895, 473: 1895, 1895, 477: 1895, 481: 1895, 1895, 1895, 1895, 1895, 490: 1895, 499: 1895, 504: 1895, 1895, 1895, 541: 1895, 564: 1895, 1895, 1895, 568: 1895, 1895, 1895, 572: 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 581: 1895, 1895, 585: 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 637: 1895, 1895, 1895, 648: 1895}, // 1580 - {170: 1882, 489: 1882, 568: 1882, 1882}, - {1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 471: 1897, 1897, 475: 1897, 477: 1897, 1897, 480: 1897, 1897, 485: 1897, 1897, 1897, 490: 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 499: 1897, 1897, 1897, 1897, 506: 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 516: 1897, 1897, 1897, 1897, 521: 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 542: 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897}, - {470: 2551, 705: 4089}, - {738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 471: 738, 738, 738, 738, 738, 477: 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 490: 738, 738, 738, 738, 738, 738, 738, 738, 499: 738, 738, 738, 738, 506: 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 542: 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 580: 738, 656: 4087}, - {1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1875, 1698, 1698, 1698, 1698, 1698, 477: 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 490: 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 499: 1698, 1698, 1698, 1698, 506: 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 542: 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 580: 1698, 648: 1698, 651: 1698, 1698}, + {2: 1894, 1894, 1894, 1894, 1894, 8: 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 48: 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 471: 1894, 473: 1894, 1894, 477: 1894, 481: 1894, 1894, 1894, 1894, 1894, 490: 1894, 499: 1894, 504: 1894, 1894, 1894, 541: 1894, 564: 1894, 1894, 1894, 568: 1894, 1894, 1894, 572: 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 581: 1894, 1894, 585: 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 637: 1894, 1894, 1894, 648: 1894}, + {2: 1893, 1893, 1893, 1893, 1893, 8: 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 48: 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 471: 1893, 473: 1893, 1893, 477: 1893, 481: 1893, 1893, 1893, 1893, 1893, 490: 1893, 499: 1893, 504: 1893, 1893, 1893, 541: 1893, 564: 1893, 1893, 1893, 568: 1893, 1893, 1893, 572: 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 581: 1893, 1893, 585: 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 637: 1893, 1893, 1893, 648: 1893}, + {2: 1892, 1892, 1892, 1892, 1892, 8: 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 48: 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 471: 1892, 473: 1892, 1892, 477: 1892, 481: 1892, 1892, 1892, 1892, 1892, 490: 1892, 499: 1892, 504: 1892, 1892, 1892, 541: 1892, 564: 1892, 1892, 1892, 568: 1892, 1892, 1892, 572: 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 581: 1892, 1892, 585: 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 637: 1892, 1892, 1892, 648: 1892}, + {2: 1891, 1891, 1891, 1891, 1891, 8: 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 48: 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 471: 1891, 473: 1891, 1891, 477: 1891, 481: 1891, 1891, 1891, 1891, 1891, 490: 1891, 499: 1891, 504: 1891, 1891, 1891, 541: 1891, 564: 1891, 1891, 1891, 568: 1891, 1891, 1891, 572: 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 581: 1891, 1891, 585: 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 637: 1891, 1891, 1891, 648: 1891}, + {2: 1890, 1890, 1890, 1890, 1890, 8: 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 48: 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 471: 1890, 473: 1890, 1890, 477: 1890, 481: 1890, 1890, 1890, 1890, 1890, 490: 1890, 499: 1890, 504: 1890, 1890, 1890, 541: 1890, 564: 1890, 1890, 1890, 568: 1890, 1890, 1890, 572: 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 581: 1890, 1890, 585: 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 637: 1890, 1890, 1890, 648: 1890}, // 1585 - {1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1874, 1697, 1697, 1697, 1697, 1697, 477: 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 490: 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 499: 1697, 1697, 1697, 1697, 506: 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 542: 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 580: 1697, 648: 1697, 651: 1697, 1697}, - {470: 1873}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 3305, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 4088}, - {1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 471: 1895, 1895, 475: 1895, 477: 1895, 1895, 480: 1895, 1895, 485: 1895, 1895, 1895, 490: 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 499: 1895, 1895, 1895, 1895, 506: 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 516: 1895, 1895, 1895, 1895, 521: 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 542: 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895}, - {1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 471: 1896, 1896, 475: 1896, 477: 1896, 1896, 480: 1896, 1896, 485: 1896, 1896, 1896, 490: 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 499: 1896, 1896, 1896, 1896, 506: 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 516: 1896, 1896, 1896, 1896, 521: 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 542: 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896}, + {170: 1887, 474: 4051, 4050, 490: 1887, 569: 1887, 1887, 807: 4090}, + {170: 1886, 490: 1886, 569: 1886, 1886}, + {1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 472: 1901, 1901, 476: 1901, 478: 1901, 1901, 481: 1901, 1901, 486: 1901, 1901, 1901, 491: 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 500: 1901, 1901, 1901, 1901, 507: 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 517: 1901, 1901, 1901, 1901, 522: 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 543: 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901}, + {471: 2555, 706: 4099}, + {739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 472: 739, 739, 739, 739, 739, 478: 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 491: 739, 739, 739, 739, 739, 739, 739, 739, 500: 739, 739, 739, 739, 507: 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 542: 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 583: 739, 656: 4097}, // 1590 - {1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 471: 1922, 1922, 475: 1922, 477: 1922, 1922, 480: 1922, 1922, 485: 1922, 1922, 1922, 490: 1922, 1922, 1922, 1922, 1922, 1922, 497: 1922, 499: 1922, 1922, 1922, 1922, 506: 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 516: 1922, 1922, 1922, 1922, 521: 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 542: 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, 471: 1921, 1921, 475: 1921, 477: 1921, 1921, 480: 1921, 1921, 485: 1921, 1921, 1921, 490: 1921, 1921, 1921, 1921, 1921, 1921, 497: 1921, 499: 1921, 1921, 1921, 1921, 506: 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 516: 1921, 1921, 1921, 1921, 521: 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 542: 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, 471: 1920, 1920, 475: 1920, 477: 1920, 1920, 480: 1920, 1920, 485: 1920, 1920, 1920, 490: 1920, 1920, 1920, 1920, 1920, 1920, 497: 1920, 499: 1920, 1920, 1920, 1920, 506: 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 516: 1920, 1920, 1920, 1920, 521: 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 542: 1920, 1920}, - {1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 471: 1898, 1898, 475: 1898, 477: 1898, 1898, 480: 1898, 1898, 485: 1898, 1898, 1898, 490: 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 499: 1898, 1898, 1898, 1898, 506: 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 516: 1898, 1898, 1898, 1898, 521: 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 542: 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 4095, 2723, 2724, 2722, 739: 4096, 804: 4097}, + {1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1879, 1702, 1702, 1702, 1702, 1702, 478: 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 491: 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 500: 1702, 1702, 1702, 1702, 507: 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 542: 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 583: 1702, 649: 1702, 652: 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, 1878, 1701, 1701, 1701, 1701, 1701, 478: 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 491: 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 500: 1701, 1701, 1701, 1701, 507: 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 542: 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 583: 1701, 649: 1701, 652: 1701, 1701}, + {471: 1877}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 3311, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 4098}, + {1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 472: 1899, 1899, 476: 1899, 478: 1899, 1899, 481: 1899, 1899, 486: 1899, 1899, 1899, 491: 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 500: 1899, 1899, 1899, 1899, 507: 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 517: 1899, 1899, 1899, 1899, 522: 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 543: 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899}, // 1595 - {2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 470: 2308, 488: 2308, 490: 2308, 496: 2308, 501: 2308, 503: 2308, 526: 2308, 2308, 541: 2308, 643: 2308, 648: 4118, 665: 2308, 2308, 668: 2308, 673: 2308, 2308, 676: 2308, 2308, 2308, 2308, 2308, 2308, 684: 2308, 686: 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 701: 2308, 2308, 2308, 2308}, - {7: 2305, 47: 2305}, - {7: 4098, 47: 4099}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 4095, 2723, 2724, 2722, 739: 4117}, - {305: 4100}, + {1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 472: 1900, 1900, 476: 1900, 478: 1900, 1900, 481: 1900, 1900, 486: 1900, 1900, 1900, 491: 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 500: 1900, 1900, 1900, 1900, 507: 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 517: 1900, 1900, 1900, 1900, 522: 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 543: 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900}, + {1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 472: 1926, 1926, 476: 1926, 478: 1926, 1926, 481: 1926, 1926, 486: 1926, 1926, 1926, 491: 1926, 1926, 1926, 1926, 1926, 497: 1926, 1926, 500: 1926, 1926, 1926, 1926, 507: 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 517: 1926, 1926, 1926, 1926, 522: 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 543: 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, 472: 1925, 1925, 476: 1925, 478: 1925, 1925, 481: 1925, 1925, 486: 1925, 1925, 1925, 491: 1925, 1925, 1925, 1925, 1925, 497: 1925, 1925, 500: 1925, 1925, 1925, 1925, 507: 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 517: 1925, 1925, 1925, 1925, 522: 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 543: 1925, 1925}, + {1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 472: 1924, 1924, 476: 1924, 478: 1924, 1924, 481: 1924, 1924, 486: 1924, 1924, 1924, 491: 1924, 1924, 1924, 1924, 1924, 497: 1924, 1924, 500: 1924, 1924, 1924, 1924, 507: 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 517: 1924, 1924, 1924, 1924, 522: 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 543: 1924, 1924}, + {1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 472: 1902, 1902, 476: 1902, 478: 1902, 1902, 481: 1902, 1902, 486: 1902, 1902, 1902, 491: 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 500: 1902, 1902, 1902, 1902, 507: 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 517: 1902, 1902, 1902, 1902, 522: 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 543: 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902}, // 1600 - {470: 4101}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 3305, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 4102}, - {47: 1916, 471: 4105, 482: 3643, 3642, 3648, 520: 3644, 540: 4104, 553: 3645, 3646, 3639, 3649, 3638, 3647, 3640, 3641, 1213: 4103}, - {47: 4116}, - {225: 4109, 516: 4108}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 4105, 2727, 2728, 2726, 740: 4106, 805: 4107}, + {2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 471: 2312, 489: 2312, 491: 2312, 496: 2312, 502: 2312, 504: 2312, 527: 2312, 2312, 541: 2312, 644: 2312, 649: 4128, 666: 2312, 2312, 669: 2312, 674: 2312, 2312, 677: 2312, 2312, 2312, 2312, 2312, 2312, 685: 2312, 687: 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 702: 2312, 2312, 2312, 2312}, + {7: 2309, 47: 2309}, + {7: 4108, 47: 4109}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 4105, 2727, 2728, 2726, 740: 4127}, // 1605 - {137: 4106}, - {249: 4107}, - {47: 1912}, - {349: 4111}, - {205: 4110}, + {305: 4110}, + {471: 4111}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 3311, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 4112}, + {47: 1920, 472: 4115, 483: 3648, 3649, 3654, 521: 3650, 542: 4114, 554: 3651, 3652, 3645, 3655, 3644, 3653, 3646, 3647, 1214: 4113}, + {47: 4126}, // 1610 - {47: 1913}, - {205: 4112}, - {47: 1915, 471: 4113}, - {137: 4114}, - {249: 4115}, + {225: 4119, 517: 4118}, + {137: 4116}, + {249: 4117}, + {47: 1916}, + {349: 4121}, // 1615 - {47: 1914}, - {1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 471: 1923, 1923, 475: 1923, 477: 1923, 1923, 480: 1923, 1923, 485: 1923, 1923, 1923, 490: 1923, 1923, 1923, 1923, 1923, 1923, 497: 1923, 499: 1923, 1923, 1923, 1923, 506: 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 516: 1923, 1923, 1923, 1923, 521: 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 542: 1923, 1923}, - {7: 2304, 47: 2304}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 4119, 2723, 2724, 2722}, - {2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 470: 2307, 488: 2307, 490: 2307, 496: 2307, 501: 2307, 503: 2307, 526: 2307, 2307, 541: 2307, 643: 2307, 648: 4120, 665: 2307, 2307, 668: 2307, 673: 2307, 2307, 676: 2307, 2307, 2307, 2307, 2307, 2307, 684: 2307, 686: 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 701: 2307, 2307, 2307, 2307}, + {205: 4120}, + {47: 1917}, + {205: 4122}, + {47: 1919, 472: 4123}, + {137: 4124}, // 1620 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 4121, 2723, 2724, 2722}, - {2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 470: 2306, 488: 2306, 490: 2306, 496: 2306, 501: 2306, 503: 2306, 526: 2306, 2306, 541: 2306, 643: 2306, 665: 2306, 2306, 668: 2306, 673: 2306, 2306, 676: 2306, 2306, 2306, 2306, 2306, 2306, 684: 2306, 686: 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 701: 2306, 2306, 2306, 2306}, - {1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 471: 1924, 1924, 475: 1924, 477: 1924, 1924, 480: 1924, 1924, 485: 1924, 1924, 1924, 490: 1924, 1924, 1924, 1924, 1924, 1924, 497: 1924, 499: 1924, 1924, 1924, 1924, 506: 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 516: 1924, 1924, 1924, 1924, 521: 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 542: 1924, 1924, 730: 3298, 3296}, - {1290, 1290, 7: 1290, 47: 1290, 125: 1290, 469: 1290, 471: 1290, 477: 1290, 1290, 485: 1290, 1290, 490: 1290, 1290, 1290, 1290, 497: 1290, 499: 1290, 511: 1290, 513: 1290, 521: 1290, 524: 1290, 1290}, - {1289, 1289, 7: 1289, 47: 1289, 125: 1289, 469: 1289, 471: 1289, 477: 1289, 1289, 485: 1289, 1289, 490: 1289, 1289, 1289, 1289, 497: 1289, 499: 1289, 511: 1289, 513: 1289, 521: 1289, 524: 1289, 1289}, + {249: 4125}, + {47: 1918}, + {1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 472: 1927, 1927, 476: 1927, 478: 1927, 1927, 481: 1927, 1927, 486: 1927, 1927, 1927, 491: 1927, 1927, 1927, 1927, 1927, 497: 1927, 1927, 500: 1927, 1927, 1927, 1927, 507: 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 517: 1927, 1927, 1927, 1927, 522: 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 543: 1927, 1927}, + {7: 2308, 47: 2308}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 4129, 2727, 2728, 2726}, // 1625 - {1288, 1288, 7: 1288, 47: 1288, 125: 1288, 469: 1288, 471: 1288, 477: 1288, 1288, 485: 1288, 1288, 490: 1288, 1288, 1288, 1288, 497: 1288, 499: 1288, 511: 1288, 513: 1288, 521: 1288, 524: 1288, 1288}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 4127}, - {1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 471: 1928, 1928, 475: 1928, 477: 1928, 1928, 480: 1928, 1928, 485: 1928, 1928, 1928, 490: 1928, 1928, 1928, 1928, 1928, 1928, 497: 1928, 499: 1928, 1928, 1928, 3302, 506: 3300, 3301, 3299, 3297, 1928, 1928, 1928, 1928, 1928, 516: 1928, 1928, 1928, 1928, 521: 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 542: 1928, 1928, 730: 3298, 3296}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3875, 2723, 2724, 2722, 733: 4129}, - {47: 4130}, + {2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 471: 2311, 489: 2311, 491: 2311, 496: 2311, 502: 2311, 504: 2311, 527: 2311, 2311, 541: 2311, 644: 2311, 649: 4130, 666: 2311, 2311, 669: 2311, 674: 2311, 2311, 677: 2311, 2311, 2311, 2311, 2311, 2311, 685: 2311, 687: 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311, 702: 2311, 2311, 2311, 2311}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 4131, 2727, 2728, 2726}, + {2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 471: 2310, 489: 2310, 491: 2310, 496: 2310, 502: 2310, 504: 2310, 527: 2310, 2310, 541: 2310, 644: 2310, 666: 2310, 2310, 669: 2310, 674: 2310, 2310, 677: 2310, 2310, 2310, 2310, 2310, 2310, 685: 2310, 687: 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 702: 2310, 2310, 2310, 2310}, + {1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 472: 1928, 1928, 476: 1928, 478: 1928, 1928, 481: 1928, 1928, 486: 1928, 1928, 1928, 491: 1928, 1928, 1928, 1928, 1928, 497: 1928, 1928, 500: 1928, 1928, 1928, 1928, 507: 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 517: 1928, 1928, 1928, 1928, 522: 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 543: 1928, 1928, 731: 3303, 3301}, + {1293, 1293, 7: 1293, 47: 1293, 125: 1293, 470: 1293, 472: 1293, 478: 1293, 1293, 486: 1293, 1293, 491: 1293, 1293, 1293, 1293, 498: 1293, 500: 1293, 512: 1293, 514: 1293, 522: 1293, 525: 1293, 1293}, // 1630 - {2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 471: 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 499: 2207, 2207, 2207, 2207, 506: 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 542: 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 570: 2207, 579: 2207, 2207, 2207, 591: 2207, 621: 2207, 640: 2207, 2207}, - {491: 4132}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3875, 2723, 2724, 2722, 733: 4133}, - {2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 471: 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 499: 2208, 2208, 2208, 2208, 506: 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 542: 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 570: 2208, 579: 2208, 2208, 2208, 591: 2208, 621: 2208, 640: 2208, 2208}, - {246, 246, 47: 246, 469: 246, 471: 246, 477: 246, 246, 485: 246, 246, 490: 246, 246, 246, 246, 497: 246, 499: 246, 502: 3302, 506: 3300, 3301, 3299, 3297, 246, 246, 513: 246, 730: 3298, 3296}, + {1292, 1292, 7: 1292, 47: 1292, 125: 1292, 470: 1292, 472: 1292, 478: 1292, 1292, 486: 1292, 1292, 491: 1292, 1292, 1292, 1292, 498: 1292, 500: 1292, 512: 1292, 514: 1292, 522: 1292, 525: 1292, 1292}, + {1291, 1291, 7: 1291, 47: 1291, 125: 1291, 470: 1291, 472: 1291, 478: 1291, 1291, 486: 1291, 1291, 491: 1291, 1291, 1291, 1291, 498: 1291, 500: 1291, 512: 1291, 514: 1291, 522: 1291, 525: 1291, 1291}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 4137}, + {1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 472: 1932, 1932, 476: 1932, 478: 1932, 1932, 481: 1932, 1932, 486: 1932, 1932, 1932, 491: 1932, 1932, 1932, 1932, 1932, 497: 1932, 1932, 500: 1932, 1932, 1932, 3307, 507: 3305, 3306, 3304, 3302, 1932, 1932, 1932, 1932, 1932, 517: 1932, 1932, 1932, 1932, 522: 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 543: 1932, 1932, 731: 3303, 3301}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3883, 2727, 2728, 2726, 734: 4139}, // 1635 - {4, 4}, - {137: 4137}, - {245, 245, 490: 245, 494: 2683, 497: 245, 499: 245, 786: 2684, 4138}, - {1284, 1284, 490: 1284, 497: 1284, 499: 2686, 763: 2687, 807: 4139}, - {858, 858, 490: 2689, 497: 2690, 764: 2691, 824: 4140}, + {47: 4140}, + {2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 472: 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 500: 2211, 2211, 2211, 2211, 507: 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 542: 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 571: 2211, 580: 2211, 583: 2211, 2211, 636: 2211, 640: 2211, 2211, 2211}, + {492: 4142}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3883, 2727, 2728, 2726, 734: 4143}, + {2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 472: 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 500: 2212, 2212, 2212, 2212, 507: 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 542: 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 571: 2212, 580: 2212, 583: 2212, 2212, 636: 2212, 640: 2212, 2212, 2212}, // 1640 - {2, 2}, - {566: 4143}, - {2: 1839, 1839, 1839, 1839, 1839, 8: 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 48: 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 470: 1839, 492: 1839, 495: 1839, 566: 1839, 576: 1839}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3875, 2723, 2724, 2722, 733: 4144}, - {2382, 2382, 2382, 2382, 4190, 4192, 397, 13: 4209, 2150, 4207, 4148, 4211, 4198, 4227, 4191, 4194, 4193, 4196, 4197, 4199, 4206, 397, 4217, 4218, 4204, 4205, 4210, 4212, 4224, 4223, 4229, 4225, 4222, 4215, 4220, 4221, 4214, 4216, 4219, 4208, 69: 4161, 72: 4182, 4183, 81: 4184, 132: 4164, 195: 4149, 4147, 4168, 200: 4169, 211: 4163, 219: 4179, 232: 4158, 241: 4165, 247: 4160, 264: 4170, 272: 4166, 279: 4180, 4181, 286: 4150, 471: 4178, 476: 4189, 4226, 479: 2150, 488: 2382, 493: 4185, 499: 4167, 4177, 4152, 503: 2150, 579: 4157, 584: 4153, 643: 2150, 645: 4195, 649: 4146, 657: 4172, 665: 4159, 667: 4186, 675: 4171, 682: 4173, 685: 4154, 700: 4162, 776: 4200, 788: 4202, 808: 4201, 830: 4203, 834: 4213, 838: 4228, 865: 4176, 878: 4174, 914: 4151, 921: 4155, 984: 4188, 1132: 4156, 1159: 4175, 1164: 4187, 4145}, + {246, 246, 47: 246, 470: 246, 472: 246, 478: 246, 246, 486: 246, 246, 491: 246, 246, 246, 246, 498: 246, 500: 246, 503: 3307, 507: 3305, 3306, 3304, 3302, 246, 246, 514: 246, 731: 3303, 3301}, + {4, 4}, + {137: 4147}, + {245, 245, 491: 245, 495: 2687, 498: 245, 500: 245, 787: 2688, 4148}, + {1287, 1287, 491: 1287, 498: 1287, 500: 2690, 764: 2691, 808: 4149}, // 1645 - {2148, 2148, 4963, 4964, 488: 4965, 1094: 4962, 1163: 4961}, - {488: 4935}, - {217: 4933}, - {160: 4925}, - {472: 2031, 476: 2031, 496: 4230, 732: 4922}, + {860, 860, 491: 2693, 498: 2694, 765: 2695, 826: 4150}, + {2, 2}, + {567: 4153}, + {2: 1843, 1843, 1843, 1843, 1843, 8: 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 48: 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 471: 1843, 493: 1843, 497: 1843, 567: 1843, 577: 1843}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3883, 2727, 2728, 2726, 734: 4154}, // 1650 - {472: 2031, 476: 2031, 496: 4230, 732: 4919}, - {2465, 2465, 2465, 2465, 4190, 4192, 397, 2465, 13: 4209, 2150, 4207, 4148, 4211, 4198, 4227, 4191, 4194, 4193, 4196, 4197, 4199, 4206, 397, 4217, 4218, 4204, 4205, 4210, 4212, 4224, 4223, 4229, 4225, 4222, 4215, 4220, 4221, 4214, 4216, 4219, 4208, 476: 4189, 4226, 479: 2150, 488: 2465, 500: 4915, 503: 2150, 643: 2150, 645: 4195, 776: 4200, 788: 4202, 808: 4201, 830: 4203, 834: 4213, 838: 4916}, - {217: 4905}, - {646: 4897}, - {2: 2387, 2387, 2387, 2387, 2387, 8: 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 48: 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 470: 2387, 488: 4756, 563: 2387, 570: 2376, 579: 2376, 581: 2376, 591: 2376, 621: 4537, 645: 2376, 671: 2376, 2376, 828: 4758, 842: 4372, 868: 4754, 898: 4755, 909: 4757}, + {2386, 2386, 2386, 2386, 4200, 4202, 397, 13: 4219, 2154, 4217, 4158, 4221, 4208, 4237, 4201, 4204, 4203, 4206, 4207, 4209, 4216, 397, 4227, 4228, 4214, 4215, 4220, 4222, 4234, 4233, 4239, 4235, 4232, 4225, 4230, 4231, 4224, 4226, 4229, 4218, 69: 4171, 72: 4192, 4193, 81: 4194, 132: 4174, 195: 4159, 4157, 4178, 200: 4179, 211: 4173, 219: 4189, 232: 4168, 241: 4175, 247: 4170, 264: 4180, 272: 4176, 279: 4190, 4191, 286: 4160, 472: 4188, 477: 4199, 4236, 480: 2154, 489: 2386, 494: 4195, 500: 4177, 4187, 4162, 504: 2154, 580: 4167, 585: 4163, 644: 2154, 646: 4205, 650: 4156, 658: 4182, 666: 4169, 668: 4196, 676: 4181, 683: 4183, 686: 4164, 701: 4172, 777: 4210, 789: 4212, 809: 4211, 831: 4213, 835: 4223, 839: 4238, 866: 4186, 879: 4184, 915: 4161, 922: 4165, 985: 4198, 1133: 4166, 1160: 4185, 1165: 4197, 4155}, + {2152, 2152, 4973, 4974, 489: 4975, 1095: 4972, 1164: 4971}, + {489: 4945}, + {217: 4943}, + {160: 4935}, // 1655 - {2455, 2455, 2455, 2455, 7: 2455, 488: 2455}, - {2454, 2454, 2454, 2454, 7: 2454, 488: 2454}, - {488: 4752}, - {488: 4749}, - {2: 2387, 2387, 2387, 2387, 2387, 8: 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 48: 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 488: 4728, 563: 2387, 570: 4358, 579: 4373, 581: 4727, 621: 4374, 645: 4359, 671: 4731, 823: 4730, 842: 4372, 868: 4726, 909: 4729, 996: 4732}, + {473: 2035, 477: 2035, 496: 4240, 733: 4932}, + {473: 2035, 477: 2035, 496: 4240, 733: 4929}, + {2469, 2469, 2469, 2469, 4200, 4202, 397, 2469, 13: 4219, 2154, 4217, 4158, 4221, 4208, 4237, 4201, 4204, 4203, 4206, 4207, 4209, 4216, 397, 4227, 4228, 4214, 4215, 4220, 4222, 4234, 4233, 4239, 4235, 4232, 4225, 4230, 4231, 4224, 4226, 4229, 4218, 477: 4199, 4236, 480: 2154, 489: 2469, 501: 4925, 504: 2154, 644: 2154, 646: 4205, 777: 4210, 789: 4212, 809: 4211, 831: 4213, 835: 4223, 839: 4926}, + {217: 4915}, + {647: 4907}, // 1660 - {488: 4715}, - {488: 4713}, - {488: 4710}, - {488: 4707}, - {18: 4704, 488: 4703}, + {2: 2391, 2391, 2391, 2391, 2391, 8: 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, 2391, 2391, 2391, 48: 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 471: 2391, 489: 4766, 564: 2391, 571: 2380, 580: 2380, 584: 2380, 636: 2380, 640: 4547, 646: 2380, 672: 2380, 2380, 829: 4768, 843: 4382, 869: 4764, 899: 4765, 910: 4767}, + {2459, 2459, 2459, 2459, 7: 2459, 489: 2459}, + {2458, 2458, 2458, 2458, 7: 2458, 489: 2458}, + {489: 4762}, + {489: 4759}, // 1665 - {18: 4700, 488: 4699}, - {488: 4689}, - {655: 4682}, - {938: 4681}, - {938: 4680}, + {2: 2391, 2391, 2391, 2391, 2391, 8: 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, 2391, 2391, 2391, 48: 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 489: 4738, 564: 2391, 571: 4368, 580: 4383, 584: 4737, 640: 4384, 646: 4369, 672: 4741, 825: 4740, 843: 4382, 869: 4736, 910: 4739, 997: 4742}, + {489: 4725}, + {489: 4723}, + {489: 4720}, + {489: 4717}, // 1670 - {2: 2387, 2387, 2387, 2387, 2387, 8: 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 48: 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 563: 2387, 842: 4372, 868: 4676}, - {2: 2387, 2387, 2387, 2387, 2387, 8: 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 48: 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 563: 2387, 842: 4372, 868: 4398}, - {2: 2387, 2387, 2387, 2387, 2387, 8: 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 48: 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 579: 4373, 621: 4374, 645: 4371, 842: 4372, 868: 4369, 996: 4370}, - {2: 2031, 2031, 2031, 2031, 2031, 8: 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 48: 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 475: 4356, 496: 4230, 570: 4358, 645: 4359, 4354, 732: 4355, 823: 4357, 842: 4353}, - {2423, 2423, 2423, 2423, 7: 2423, 488: 2423}, + {18: 4714, 489: 4713}, + {18: 4710, 489: 4709}, + {489: 4699}, + {657: 4692}, + {939: 4691}, // 1675 - {2422, 2422, 2422, 2422, 7: 2422, 488: 2422}, - {2421, 2421, 2421, 2421, 7: 2421, 488: 2421}, - {2420, 2420, 2420, 2420, 6: 396, 2420, 27: 396, 488: 2420}, - {193: 4352}, - {193: 4351}, + {939: 4690}, + {2: 2391, 2391, 2391, 2391, 2391, 8: 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, 2391, 2391, 2391, 48: 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 564: 2391, 843: 4382, 869: 4686}, + {2: 2391, 2391, 2391, 2391, 2391, 8: 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, 2391, 2391, 2391, 48: 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 564: 2391, 843: 4382, 869: 4408}, + {2: 2391, 2391, 2391, 2391, 2391, 8: 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, 2391, 2391, 2391, 48: 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 580: 4383, 640: 4384, 646: 4381, 843: 4382, 869: 4379, 997: 4380}, + {2: 2035, 2035, 2035, 2035, 2035, 8: 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 48: 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 476: 4366, 496: 4240, 571: 4368, 646: 4369, 4364, 733: 4365, 825: 4367, 843: 4363}, // 1680 - {2417, 2417, 2417, 2417, 7: 2417, 488: 2417}, - {2416, 2416, 2416, 2416, 7: 2416, 488: 2416}, - {2412, 2412, 2412, 2412, 7: 2412, 488: 2412}, - {2411, 2411, 2411, 2411, 7: 2411, 488: 2411}, - {149: 2031, 235: 2031, 256: 2031, 258: 2031, 476: 2031, 496: 4230, 732: 4345}, + {2427, 2427, 2427, 2427, 7: 2427, 489: 2427}, + {2426, 2426, 2426, 2426, 7: 2426, 489: 2426}, + {2425, 2425, 2425, 2425, 7: 2425, 489: 2425}, + {2424, 2424, 2424, 2424, 6: 396, 2424, 27: 396, 489: 2424}, + {193: 4362}, // 1685 - {2: 2031, 2031, 2031, 2031, 2031, 8: 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 48: 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 476: 2031, 496: 4230, 732: 4342}, - {151: 4341, 683: 4340}, - {2381, 2381, 2381, 2381, 7: 4338, 488: 2381}, - {2380, 2380, 2380, 2380, 7: 2380, 488: 2380}, - {14: 2149, 16: 2149, 19: 2149, 479: 2149, 503: 2149, 643: 2149}, + {193: 4361}, + {2421, 2421, 2421, 2421, 7: 2421, 489: 2421}, + {2420, 2420, 2420, 2420, 7: 2420, 489: 2420}, + {2416, 2416, 2416, 2416, 7: 2416, 489: 2416}, + {2415, 2415, 2415, 2415, 7: 2415, 489: 2415}, // 1690 - {472: 2031, 496: 4230, 732: 4336}, - {2: 2031, 2031, 2031, 2031, 2031, 8: 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 48: 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 472: 2031, 496: 4230, 732: 4334}, - {20: 4329, 180: 4330, 242: 4331}, - {2: 2031, 2031, 2031, 2031, 2031, 8: 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 48: 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 472: 2031, 496: 4230, 732: 4327}, - {240: 4324}, + {149: 2035, 235: 2035, 256: 2035, 258: 2035, 477: 2035, 496: 4240, 733: 4355}, + {2: 2035, 2035, 2035, 2035, 2035, 8: 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 48: 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 477: 2035, 496: 4240, 733: 4352}, + {151: 4351, 684: 4350}, + {2385, 2385, 2385, 2385, 7: 4348, 489: 2385}, + {2384, 2384, 2384, 2384, 7: 2384, 489: 2384}, // 1695 - {240: 4321}, - {496: 4230, 505: 2031, 732: 4319}, - {496: 4230, 505: 2031, 732: 4317}, - {2: 2031, 2031, 2031, 2031, 2031, 8: 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 48: 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 496: 4230, 732: 4315}, - {496: 4230, 505: 2031, 732: 4313}, + {14: 2153, 16: 2153, 19: 2153, 480: 2153, 504: 2153, 644: 2153}, + {473: 2035, 496: 4240, 733: 4346}, + {2: 2035, 2035, 2035, 2035, 2035, 8: 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 48: 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 473: 2035, 496: 4240, 733: 4344}, + {20: 4339, 180: 4340, 242: 4341}, + {2: 2035, 2035, 2035, 2035, 2035, 8: 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 48: 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 473: 2035, 496: 4240, 733: 4337}, // 1700 - {2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 13: 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 47: 2104, 469: 2104, 2104, 2104, 475: 2104, 2104, 2104, 479: 2104, 487: 2104, 2104, 498: 2104, 500: 2104, 503: 2104, 2104, 566: 2104, 642: 2104, 2104, 645: 2104}, - {431, 431, 431, 431, 431, 431, 431, 431, 13: 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 469: 431, 431, 431, 475: 431, 431, 431, 479: 431, 487: 431, 431, 498: 431, 500: 431, 503: 431, 431, 566: 431, 642: 431, 431, 645: 431}, - {14: 3790, 479: 4308, 503: 3791, 643: 3789, 769: 4307}, - {6: 4301, 27: 4302}, - {496: 4230, 505: 2031, 732: 4299}, + {240: 4334}, + {240: 4331}, + {496: 4240, 506: 2035, 733: 4329}, + {496: 4240, 506: 2035, 733: 4327}, + {2: 2035, 2035, 2035, 2035, 2035, 8: 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 48: 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 496: 4240, 733: 4325}, // 1705 - {496: 4230, 505: 2031, 732: 4297}, - {472: 2031, 496: 4230, 732: 4295}, - {496: 4230, 505: 2031, 732: 4293}, - {496: 4230, 505: 2031, 732: 4291}, - {472: 2031, 496: 4230, 732: 4289}, + {496: 4240, 506: 2035, 733: 4323}, + {2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 13: 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 47: 2108, 470: 2108, 2108, 2108, 476: 2108, 2108, 2108, 480: 2108, 488: 2108, 2108, 499: 2108, 501: 2108, 504: 2108, 2108, 567: 2108, 643: 2108, 2108, 646: 2108}, + {431, 431, 431, 431, 431, 431, 431, 431, 13: 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 470: 431, 431, 431, 476: 431, 431, 431, 480: 431, 488: 431, 431, 499: 431, 501: 431, 504: 431, 431, 567: 431, 643: 431, 431, 646: 431}, + {14: 3798, 480: 4318, 504: 3799, 644: 3797, 770: 4317}, + {6: 4311, 27: 4312}, // 1710 - {472: 2031, 496: 4230, 732: 4287}, - {496: 4230, 505: 2031, 732: 4285}, - {496: 4230, 505: 2031, 732: 4283}, - {417, 417, 417, 417, 417, 417, 417, 417, 13: 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 469: 417, 417, 417, 475: 417, 417, 417, 479: 417, 487: 417, 417, 498: 417, 500: 417, 503: 417, 417, 566: 417, 642: 417, 417, 645: 417}, - {476: 2031, 496: 4230, 505: 2031, 732: 4281}, + {496: 4240, 506: 2035, 733: 4309}, + {496: 4240, 506: 2035, 733: 4307}, + {473: 2035, 496: 4240, 733: 4305}, + {496: 4240, 506: 2035, 733: 4303}, + {496: 4240, 506: 2035, 733: 4301}, // 1715 - {476: 2031, 496: 4230, 505: 2031, 732: 4278}, - {476: 2031, 496: 4230, 505: 2031, 732: 4275}, - {496: 4230, 505: 2031, 732: 4273}, - {496: 4230, 505: 2031, 732: 4271}, - {496: 4230, 505: 2031, 571: 2031, 2031, 732: 4269}, + {473: 2035, 496: 4240, 733: 4299}, + {473: 2035, 496: 4240, 733: 4297}, + {496: 4240, 506: 2035, 733: 4295}, + {496: 4240, 506: 2035, 733: 4293}, + {417, 417, 417, 417, 417, 417, 417, 417, 13: 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 470: 417, 417, 417, 476: 417, 417, 417, 480: 417, 488: 417, 417, 499: 417, 501: 417, 504: 417, 417, 567: 417, 643: 417, 417, 646: 417}, // 1720 - {472: 2031, 496: 4230, 732: 4267}, - {472: 2031, 496: 4230, 732: 4265}, - {496: 4230, 505: 2031, 732: 4263}, - {496: 4230, 505: 2031, 732: 4261}, - {476: 2031, 496: 4230, 505: 2031, 732: 4257}, + {477: 2035, 496: 4240, 506: 2035, 733: 4291}, + {477: 2035, 496: 4240, 506: 2035, 733: 4288}, + {477: 2035, 496: 4240, 506: 2035, 733: 4285}, + {496: 4240, 506: 2035, 733: 4283}, + {496: 4240, 506: 2035, 733: 4281}, // 1725 - {2: 2031, 2031, 2031, 2031, 2031, 8: 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 48: 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 472: 2031, 489: 2031, 496: 4230, 732: 4254}, - {470: 2031, 496: 4230, 732: 4249}, - {472: 2031, 496: 4230, 732: 4246}, - {391, 391, 391, 391, 391, 391, 391, 391, 13: 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 469: 391, 391, 391, 475: 391, 391, 391, 479: 391, 487: 391, 391, 498: 391, 500: 391, 503: 391, 391, 566: 391, 642: 391, 391, 645: 391}, - {175: 2031, 196: 2031, 199: 2031, 233: 2031, 273: 2031, 289: 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 476: 2031, 496: 4230, 732: 4231}, + {496: 4240, 506: 2035, 572: 2035, 2035, 733: 4279}, + {473: 2035, 496: 4240, 733: 4277}, + {473: 2035, 496: 4240, 733: 4275}, + {496: 4240, 506: 2035, 733: 4273}, + {496: 4240, 506: 2035, 733: 4271}, // 1730 - {2: 2030, 2030, 2030, 2030, 2030, 8: 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 48: 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 470: 2030, 472: 2030, 476: 2030, 482: 2030, 2030, 487: 2030, 489: 2030, 504: 2030, 2030, 541: 2030, 568: 2030, 2030, 571: 2030, 2030}, - {175: 4234, 196: 4237, 199: 4233, 233: 4235, 273: 4236, 289: 4238, 4239, 4243, 4242, 4240, 4244, 4245, 4241, 476: 4232}, - {385, 385, 385, 385, 385, 385, 385, 385, 13: 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 469: 385, 385, 385, 475: 385, 385, 385, 479: 385, 487: 385, 385, 498: 385, 500: 385, 503: 385, 385, 566: 385, 642: 385, 385, 645: 385}, - {384, 384, 384, 384, 384, 384, 384, 384, 13: 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 469: 384, 384, 384, 475: 384, 384, 384, 479: 384, 487: 384, 384, 498: 384, 500: 384, 503: 384, 384, 566: 384, 642: 384, 384, 645: 384}, - {383, 383, 383, 383, 383, 383, 383, 383, 13: 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 469: 383, 383, 383, 475: 383, 383, 383, 479: 383, 487: 383, 383, 498: 383, 500: 383, 503: 383, 383, 566: 383, 642: 383, 383, 645: 383}, + {477: 2035, 496: 4240, 506: 2035, 733: 4267}, + {2: 2035, 2035, 2035, 2035, 2035, 8: 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 48: 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 473: 2035, 490: 2035, 496: 4240, 733: 4264}, + {471: 2035, 496: 4240, 733: 4259}, + {473: 2035, 496: 4240, 733: 4256}, + {391, 391, 391, 391, 391, 391, 391, 391, 13: 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 470: 391, 391, 391, 476: 391, 391, 391, 480: 391, 488: 391, 391, 499: 391, 501: 391, 504: 391, 391, 567: 391, 643: 391, 391, 646: 391}, // 1735 - {382, 382, 382, 382, 382, 382, 382, 382, 13: 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 469: 382, 382, 382, 475: 382, 382, 382, 479: 382, 487: 382, 382, 498: 382, 500: 382, 503: 382, 382, 566: 382, 642: 382, 382, 645: 382}, - {381, 381, 381, 381, 381, 381, 381, 381, 13: 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 469: 381, 381, 381, 475: 381, 381, 381, 479: 381, 487: 381, 381, 498: 381, 500: 381, 503: 381, 381, 566: 381, 642: 381, 381, 645: 381}, - {380, 380, 380, 380, 380, 380, 380, 380, 13: 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 469: 380, 380, 380, 475: 380, 380, 380, 479: 380, 487: 380, 380, 498: 380, 500: 380, 503: 380, 380, 566: 380, 642: 380, 380, 645: 380}, - {379, 379, 379, 379, 379, 379, 379, 379, 13: 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 469: 379, 379, 379, 475: 379, 379, 379, 479: 379, 487: 379, 379, 498: 379, 500: 379, 503: 379, 379, 566: 379, 642: 379, 379, 645: 379}, - {378, 378, 378, 378, 378, 378, 378, 378, 13: 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 469: 378, 378, 378, 475: 378, 378, 378, 479: 378, 487: 378, 378, 498: 378, 500: 378, 503: 378, 378, 566: 378, 642: 378, 378, 645: 378}, + {175: 2035, 196: 2035, 199: 2035, 233: 2035, 273: 2035, 289: 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 477: 2035, 496: 4240, 733: 4241}, + {2: 2034, 2034, 2034, 2034, 2034, 8: 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 48: 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 471: 2034, 473: 2034, 477: 2034, 483: 2034, 2034, 488: 2034, 490: 2034, 505: 2034, 2034, 541: 2034, 569: 2034, 2034, 572: 2034, 2034}, + {175: 4244, 196: 4247, 199: 4243, 233: 4245, 273: 4246, 289: 4248, 4249, 4253, 4252, 4250, 4254, 4255, 4251, 477: 4242}, + {385, 385, 385, 385, 385, 385, 385, 385, 13: 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 470: 385, 385, 385, 476: 385, 385, 385, 480: 385, 488: 385, 385, 499: 385, 501: 385, 504: 385, 385, 567: 385, 643: 385, 385, 646: 385}, + {384, 384, 384, 384, 384, 384, 384, 384, 13: 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 470: 384, 384, 384, 476: 384, 384, 384, 480: 384, 488: 384, 384, 499: 384, 501: 384, 504: 384, 384, 567: 384, 643: 384, 384, 646: 384}, // 1740 - {377, 377, 377, 377, 377, 377, 377, 377, 13: 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 469: 377, 377, 377, 475: 377, 377, 377, 479: 377, 487: 377, 377, 498: 377, 500: 377, 503: 377, 377, 566: 377, 642: 377, 377, 645: 377}, - {376, 376, 376, 376, 376, 376, 376, 376, 13: 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 469: 376, 376, 376, 475: 376, 376, 376, 479: 376, 487: 376, 376, 498: 376, 500: 376, 503: 376, 376, 566: 376, 642: 376, 376, 645: 376}, - {375, 375, 375, 375, 375, 375, 375, 375, 13: 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 469: 375, 375, 375, 475: 375, 375, 375, 479: 375, 487: 375, 375, 498: 375, 500: 375, 503: 375, 375, 566: 375, 642: 375, 375, 645: 375}, - {374, 374, 374, 374, 374, 374, 374, 374, 13: 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 469: 374, 374, 374, 475: 374, 374, 374, 479: 374, 487: 374, 374, 498: 374, 500: 374, 503: 374, 374, 566: 374, 642: 374, 374, 645: 374}, - {373, 373, 373, 373, 373, 373, 373, 373, 13: 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 469: 373, 373, 373, 475: 373, 373, 373, 479: 373, 487: 373, 373, 498: 373, 500: 373, 503: 373, 373, 566: 373, 642: 373, 373, 645: 373}, + {383, 383, 383, 383, 383, 383, 383, 383, 13: 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 470: 383, 383, 383, 476: 383, 383, 383, 480: 383, 488: 383, 383, 499: 383, 501: 383, 504: 383, 383, 567: 383, 643: 383, 383, 646: 383}, + {382, 382, 382, 382, 382, 382, 382, 382, 13: 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 470: 382, 382, 382, 476: 382, 382, 382, 480: 382, 488: 382, 382, 499: 382, 501: 382, 504: 382, 382, 567: 382, 643: 382, 382, 646: 382}, + {381, 381, 381, 381, 381, 381, 381, 381, 13: 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 470: 381, 381, 381, 476: 381, 381, 381, 480: 381, 488: 381, 381, 499: 381, 501: 381, 504: 381, 381, 567: 381, 643: 381, 381, 646: 381}, + {380, 380, 380, 380, 380, 380, 380, 380, 13: 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 470: 380, 380, 380, 476: 380, 380, 380, 480: 380, 488: 380, 380, 499: 380, 501: 380, 504: 380, 380, 567: 380, 643: 380, 380, 646: 380}, + {379, 379, 379, 379, 379, 379, 379, 379, 13: 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 470: 379, 379, 379, 476: 379, 379, 379, 480: 379, 488: 379, 379, 499: 379, 501: 379, 504: 379, 379, 567: 379, 643: 379, 379, 646: 379}, // 1745 - {372, 372, 372, 372, 372, 372, 372, 372, 13: 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 469: 372, 372, 372, 475: 372, 372, 372, 479: 372, 487: 372, 372, 498: 372, 500: 372, 503: 372, 372, 566: 372, 642: 372, 372, 645: 372}, - {472: 4248, 1035: 4247}, - {398, 398, 398, 398, 398, 398, 398, 398, 13: 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 469: 398, 398, 398, 475: 398, 398, 398, 479: 398, 487: 398, 398, 498: 398, 500: 398, 503: 398, 398, 566: 398, 642: 398, 398, 645: 398}, - {9, 9, 9, 9, 9, 9, 9, 9, 13: 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 469: 9, 9, 9, 475: 9, 9, 9, 479: 9, 487: 9, 9, 498: 9, 500: 9, 9, 503: 9, 9, 566: 9, 642: 9, 9, 645: 9}, - {470: 4250}, + {378, 378, 378, 378, 378, 378, 378, 378, 13: 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 470: 378, 378, 378, 476: 378, 378, 378, 480: 378, 488: 378, 378, 499: 378, 501: 378, 504: 378, 378, 567: 378, 643: 378, 378, 646: 378}, + {377, 377, 377, 377, 377, 377, 377, 377, 13: 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 470: 377, 377, 377, 476: 377, 377, 377, 480: 377, 488: 377, 377, 499: 377, 501: 377, 504: 377, 377, 567: 377, 643: 377, 377, 646: 377}, + {376, 376, 376, 376, 376, 376, 376, 376, 13: 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 470: 376, 376, 376, 476: 376, 376, 376, 480: 376, 488: 376, 376, 499: 376, 501: 376, 504: 376, 376, 567: 376, 643: 376, 376, 646: 376}, + {375, 375, 375, 375, 375, 375, 375, 375, 13: 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 470: 375, 375, 375, 476: 375, 375, 375, 480: 375, 488: 375, 375, 499: 375, 501: 375, 504: 375, 375, 567: 375, 643: 375, 375, 646: 375}, + {374, 374, 374, 374, 374, 374, 374, 374, 13: 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 470: 374, 374, 374, 476: 374, 374, 374, 480: 374, 488: 374, 374, 499: 374, 501: 374, 504: 374, 374, 567: 374, 643: 374, 374, 646: 374}, // 1750 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 561, 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3875, 2723, 2724, 2722, 733: 3876, 791: 4251, 1141: 4252}, - {560, 560, 7: 3878, 47: 560, 471: 560}, - {47: 4253}, - {399, 399, 399, 399, 399, 399, 399, 399, 13: 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 469: 399, 399, 399, 475: 399, 399, 399, 479: 399, 487: 399, 399, 498: 399, 500: 399, 503: 399, 399, 566: 399, 642: 399, 399, 645: 399}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 3446, 489: 4255, 659: 3447, 2723, 2724, 2722, 734: 4256}, + {373, 373, 373, 373, 373, 373, 373, 373, 13: 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 470: 373, 373, 373, 476: 373, 373, 373, 480: 373, 488: 373, 373, 499: 373, 501: 373, 504: 373, 373, 567: 373, 643: 373, 373, 646: 373}, + {372, 372, 372, 372, 372, 372, 372, 372, 13: 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 470: 372, 372, 372, 476: 372, 372, 372, 480: 372, 488: 372, 372, 499: 372, 501: 372, 504: 372, 372, 567: 372, 643: 372, 372, 646: 372}, + {473: 4258, 1036: 4257}, + {398, 398, 398, 398, 398, 398, 398, 398, 13: 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 470: 398, 398, 398, 476: 398, 398, 398, 480: 398, 488: 398, 398, 499: 398, 501: 398, 504: 398, 398, 567: 398, 643: 398, 398, 646: 398}, + {9, 9, 9, 9, 9, 9, 9, 9, 13: 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 470: 9, 9, 9, 476: 9, 9, 9, 480: 9, 488: 9, 9, 499: 9, 501: 9, 9, 504: 9, 9, 567: 9, 643: 9, 9, 646: 9}, // 1755 - {401, 401, 401, 401, 401, 401, 401, 401, 13: 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 469: 401, 401, 401, 475: 401, 401, 401, 479: 401, 487: 401, 401, 498: 401, 500: 401, 503: 401, 401, 566: 401, 642: 401, 401, 645: 401}, - {400, 400, 400, 400, 400, 400, 400, 400, 13: 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 469: 400, 400, 400, 475: 400, 400, 400, 479: 400, 487: 400, 400, 498: 400, 500: 400, 503: 400, 400, 566: 400, 642: 400, 400, 645: 400}, - {476: 4259, 505: 2697, 729: 2696, 740: 4260, 1133: 4258}, - {404, 404, 404, 404, 404, 404, 404, 404, 13: 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 469: 404, 404, 404, 475: 404, 404, 404, 479: 404, 487: 404, 404, 498: 404, 500: 404, 503: 404, 404, 566: 404, 642: 404, 404, 645: 404}, - {395, 395, 395, 395, 395, 395, 395, 395, 13: 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 469: 395, 395, 395, 475: 395, 395, 395, 479: 395, 487: 395, 395, 498: 395, 500: 395, 503: 395, 395, 566: 395, 642: 395, 395, 645: 395}, + {471: 4260}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 561, 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3883, 2727, 2728, 2726, 734: 3884, 792: 4261, 1142: 4262}, + {560, 560, 7: 3886, 47: 560, 472: 560}, + {47: 4263}, + {399, 399, 399, 399, 399, 399, 399, 399, 13: 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 470: 399, 399, 399, 476: 399, 399, 399, 480: 399, 488: 399, 399, 499: 399, 501: 399, 504: 399, 399, 567: 399, 643: 399, 399, 646: 399}, // 1760 - {394, 394, 394, 394, 394, 394, 394, 394, 13: 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 469: 394, 394, 394, 475: 394, 394, 394, 479: 394, 487: 394, 394, 498: 394, 500: 394, 503: 394, 394, 566: 394, 642: 394, 394, 645: 394}, - {505: 2697, 729: 2696, 740: 4262}, - {405, 405, 405, 405, 405, 405, 405, 405, 13: 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, 469: 405, 405, 405, 475: 405, 405, 405, 479: 405, 487: 405, 405, 498: 405, 500: 405, 503: 405, 405, 566: 405, 642: 405, 405, 645: 405}, - {505: 2697, 729: 2696, 740: 4264}, - {406, 406, 406, 406, 406, 406, 406, 406, 13: 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 469: 406, 406, 406, 475: 406, 406, 406, 479: 406, 487: 406, 406, 498: 406, 500: 406, 503: 406, 406, 566: 406, 642: 406, 406, 645: 406}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 3452, 490: 4265, 660: 3453, 2727, 2728, 2726, 735: 4266}, + {401, 401, 401, 401, 401, 401, 401, 401, 13: 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 470: 401, 401, 401, 476: 401, 401, 401, 480: 401, 488: 401, 401, 499: 401, 501: 401, 504: 401, 401, 567: 401, 643: 401, 401, 646: 401}, + {400, 400, 400, 400, 400, 400, 400, 400, 13: 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 470: 400, 400, 400, 476: 400, 400, 400, 480: 400, 488: 400, 400, 499: 400, 501: 400, 504: 400, 400, 567: 400, 643: 400, 400, 646: 400}, + {477: 4269, 506: 2701, 730: 2700, 741: 4270, 1134: 4268}, + {404, 404, 404, 404, 404, 404, 404, 404, 13: 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 470: 404, 404, 404, 476: 404, 404, 404, 480: 404, 488: 404, 404, 499: 404, 501: 404, 504: 404, 404, 567: 404, 643: 404, 404, 646: 404}, // 1765 - {472: 4266}, - {407, 407, 407, 407, 407, 407, 407, 407, 13: 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, 469: 407, 407, 407, 475: 407, 407, 407, 479: 407, 487: 407, 407, 498: 407, 500: 407, 503: 407, 407, 566: 407, 642: 407, 407, 645: 407}, - {472: 4268}, - {408, 408, 408, 408, 408, 408, 408, 408, 13: 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 469: 408, 408, 408, 475: 408, 408, 408, 479: 408, 487: 408, 408, 498: 408, 500: 408, 503: 408, 408, 566: 408, 642: 408, 408, 645: 408}, - {505: 3379, 571: 3381, 3380, 815: 4270}, + {395, 395, 395, 395, 395, 395, 395, 395, 13: 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 470: 395, 395, 395, 476: 395, 395, 395, 480: 395, 488: 395, 395, 499: 395, 501: 395, 504: 395, 395, 567: 395, 643: 395, 395, 646: 395}, + {394, 394, 394, 394, 394, 394, 394, 394, 13: 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 470: 394, 394, 394, 476: 394, 394, 394, 480: 394, 488: 394, 394, 499: 394, 501: 394, 504: 394, 394, 567: 394, 643: 394, 394, 646: 394}, + {506: 2701, 730: 2700, 741: 4272}, + {405, 405, 405, 405, 405, 405, 405, 405, 13: 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, 470: 405, 405, 405, 476: 405, 405, 405, 480: 405, 488: 405, 405, 499: 405, 501: 405, 504: 405, 405, 567: 405, 643: 405, 405, 646: 405}, + {506: 2701, 730: 2700, 741: 4274}, // 1770 - {409, 409, 409, 409, 409, 409, 409, 409, 13: 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 469: 409, 409, 409, 475: 409, 409, 409, 479: 409, 487: 409, 409, 498: 409, 500: 409, 503: 409, 409, 566: 409, 642: 409, 409, 645: 409}, - {505: 2697, 729: 2696, 740: 4272}, - {410, 410, 410, 410, 410, 410, 410, 410, 13: 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 469: 410, 410, 410, 475: 410, 410, 410, 479: 410, 487: 410, 410, 498: 410, 500: 410, 503: 410, 410, 566: 410, 642: 410, 410, 645: 410}, - {505: 2697, 729: 2696, 740: 4274}, - {411, 411, 411, 411, 411, 411, 411, 411, 13: 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 469: 411, 411, 411, 475: 411, 411, 411, 479: 411, 487: 411, 411, 498: 411, 500: 411, 503: 411, 411, 566: 411, 642: 411, 411, 645: 411}, + {406, 406, 406, 406, 406, 406, 406, 406, 13: 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 470: 406, 406, 406, 476: 406, 406, 406, 480: 406, 488: 406, 406, 499: 406, 501: 406, 504: 406, 406, 567: 406, 643: 406, 406, 646: 406}, + {473: 4276}, + {407, 407, 407, 407, 407, 407, 407, 407, 13: 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, 470: 407, 407, 407, 476: 407, 407, 407, 480: 407, 488: 407, 407, 499: 407, 501: 407, 504: 407, 407, 567: 407, 643: 407, 407, 646: 407}, + {473: 4278}, + {408, 408, 408, 408, 408, 408, 408, 408, 13: 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 470: 408, 408, 408, 476: 408, 408, 408, 480: 408, 488: 408, 408, 499: 408, 501: 408, 504: 408, 408, 567: 408, 643: 408, 408, 646: 408}, // 1775 - {476: 4277, 505: 2697, 729: 2696, 740: 4276}, - {413, 413, 413, 413, 413, 413, 413, 413, 13: 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 469: 413, 413, 413, 475: 413, 413, 413, 479: 413, 487: 413, 413, 498: 413, 500: 413, 503: 413, 413, 566: 413, 642: 413, 413, 645: 413}, - {412, 412, 412, 412, 412, 412, 412, 412, 13: 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 469: 412, 412, 412, 475: 412, 412, 412, 479: 412, 487: 412, 412, 498: 412, 500: 412, 503: 412, 412, 566: 412, 642: 412, 412, 645: 412}, - {476: 4280, 505: 2697, 729: 2696, 740: 4279}, - {415, 415, 415, 415, 415, 415, 415, 415, 13: 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 469: 415, 415, 415, 475: 415, 415, 415, 479: 415, 487: 415, 415, 498: 415, 500: 415, 503: 415, 415, 566: 415, 642: 415, 415, 645: 415}, + {506: 3385, 572: 3387, 3386, 816: 4280}, + {409, 409, 409, 409, 409, 409, 409, 409, 13: 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 470: 409, 409, 409, 476: 409, 409, 409, 480: 409, 488: 409, 409, 499: 409, 501: 409, 504: 409, 409, 567: 409, 643: 409, 409, 646: 409}, + {506: 2701, 730: 2700, 741: 4282}, + {410, 410, 410, 410, 410, 410, 410, 410, 13: 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 470: 410, 410, 410, 476: 410, 410, 410, 480: 410, 488: 410, 410, 499: 410, 501: 410, 504: 410, 410, 567: 410, 643: 410, 410, 646: 410}, + {506: 2701, 730: 2700, 741: 4284}, // 1780 - {414, 414, 414, 414, 414, 414, 414, 414, 13: 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 469: 414, 414, 414, 475: 414, 414, 414, 479: 414, 487: 414, 414, 498: 414, 500: 414, 503: 414, 414, 566: 414, 642: 414, 414, 645: 414}, - {476: 4259, 505: 2697, 729: 2696, 740: 4260, 1133: 4282}, - {416, 416, 416, 416, 416, 416, 416, 416, 13: 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 469: 416, 416, 416, 475: 416, 416, 416, 479: 416, 487: 416, 416, 498: 416, 500: 416, 503: 416, 416, 566: 416, 642: 416, 416, 645: 416}, - {505: 2697, 729: 2696, 740: 4284}, - {418, 418, 418, 418, 418, 418, 418, 418, 13: 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 469: 418, 418, 418, 475: 418, 418, 418, 479: 418, 487: 418, 418, 498: 418, 500: 418, 503: 418, 418, 566: 418, 642: 418, 418, 645: 418}, + {411, 411, 411, 411, 411, 411, 411, 411, 13: 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 470: 411, 411, 411, 476: 411, 411, 411, 480: 411, 488: 411, 411, 499: 411, 501: 411, 504: 411, 411, 567: 411, 643: 411, 411, 646: 411}, + {477: 4287, 506: 2701, 730: 2700, 741: 4286}, + {413, 413, 413, 413, 413, 413, 413, 413, 13: 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 470: 413, 413, 413, 476: 413, 413, 413, 480: 413, 488: 413, 413, 499: 413, 501: 413, 504: 413, 413, 567: 413, 643: 413, 413, 646: 413}, + {412, 412, 412, 412, 412, 412, 412, 412, 13: 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 470: 412, 412, 412, 476: 412, 412, 412, 480: 412, 488: 412, 412, 499: 412, 501: 412, 504: 412, 412, 567: 412, 643: 412, 412, 646: 412}, + {477: 4290, 506: 2701, 730: 2700, 741: 4289}, // 1785 - {505: 2697, 729: 2696, 740: 4286}, - {419, 419, 419, 419, 419, 419, 419, 419, 13: 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 469: 419, 419, 419, 475: 419, 419, 419, 479: 419, 487: 419, 419, 498: 419, 500: 419, 503: 419, 419, 566: 419, 642: 419, 419, 645: 419}, - {472: 4288}, - {420, 420, 420, 420, 420, 420, 420, 420, 13: 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 469: 420, 420, 420, 475: 420, 420, 420, 479: 420, 487: 420, 420, 498: 420, 500: 420, 503: 420, 420, 566: 420, 642: 420, 420, 645: 420}, - {472: 4290}, + {415, 415, 415, 415, 415, 415, 415, 415, 13: 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 470: 415, 415, 415, 476: 415, 415, 415, 480: 415, 488: 415, 415, 499: 415, 501: 415, 504: 415, 415, 567: 415, 643: 415, 415, 646: 415}, + {414, 414, 414, 414, 414, 414, 414, 414, 13: 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 470: 414, 414, 414, 476: 414, 414, 414, 480: 414, 488: 414, 414, 499: 414, 501: 414, 504: 414, 414, 567: 414, 643: 414, 414, 646: 414}, + {477: 4269, 506: 2701, 730: 2700, 741: 4270, 1134: 4292}, + {416, 416, 416, 416, 416, 416, 416, 416, 13: 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 470: 416, 416, 416, 476: 416, 416, 416, 480: 416, 488: 416, 416, 499: 416, 501: 416, 504: 416, 416, 567: 416, 643: 416, 416, 646: 416}, + {506: 2701, 730: 2700, 741: 4294}, // 1790 - {421, 421, 421, 421, 421, 421, 421, 421, 13: 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 469: 421, 421, 421, 475: 421, 421, 421, 479: 421, 487: 421, 421, 498: 421, 500: 421, 503: 421, 421, 566: 421, 642: 421, 421, 645: 421}, - {505: 2697, 729: 2696, 740: 4292}, - {422, 422, 422, 422, 422, 422, 422, 422, 13: 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 469: 422, 422, 422, 475: 422, 422, 422, 479: 422, 487: 422, 422, 498: 422, 500: 422, 503: 422, 422, 566: 422, 642: 422, 422, 645: 422}, - {505: 2697, 729: 2696, 740: 4294}, - {423, 423, 423, 423, 423, 423, 423, 423, 13: 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 469: 423, 423, 423, 475: 423, 423, 423, 479: 423, 487: 423, 423, 498: 423, 500: 423, 503: 423, 423, 566: 423, 642: 423, 423, 645: 423}, + {418, 418, 418, 418, 418, 418, 418, 418, 13: 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 470: 418, 418, 418, 476: 418, 418, 418, 480: 418, 488: 418, 418, 499: 418, 501: 418, 504: 418, 418, 567: 418, 643: 418, 418, 646: 418}, + {506: 2701, 730: 2700, 741: 4296}, + {419, 419, 419, 419, 419, 419, 419, 419, 13: 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 470: 419, 419, 419, 476: 419, 419, 419, 480: 419, 488: 419, 419, 499: 419, 501: 419, 504: 419, 419, 567: 419, 643: 419, 419, 646: 419}, + {473: 4298}, + {420, 420, 420, 420, 420, 420, 420, 420, 13: 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 470: 420, 420, 420, 476: 420, 420, 420, 480: 420, 488: 420, 420, 499: 420, 501: 420, 504: 420, 420, 567: 420, 643: 420, 420, 646: 420}, // 1795 - {472: 4296}, - {424, 424, 424, 424, 424, 424, 424, 424, 13: 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 469: 424, 424, 424, 475: 424, 424, 424, 479: 424, 487: 424, 424, 498: 424, 500: 424, 503: 424, 424, 566: 424, 642: 424, 424, 645: 424}, - {505: 2697, 729: 2696, 740: 4298}, - {425, 425, 425, 425, 425, 425, 425, 425, 13: 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 469: 425, 425, 425, 475: 425, 425, 425, 479: 425, 487: 425, 425, 498: 425, 500: 425, 503: 425, 425, 566: 425, 642: 425, 425, 645: 425}, - {505: 2697, 729: 2696, 740: 4300}, + {473: 4300}, + {421, 421, 421, 421, 421, 421, 421, 421, 13: 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 470: 421, 421, 421, 476: 421, 421, 421, 480: 421, 488: 421, 421, 499: 421, 501: 421, 504: 421, 421, 567: 421, 643: 421, 421, 646: 421}, + {506: 2701, 730: 2700, 741: 4302}, + {422, 422, 422, 422, 422, 422, 422, 422, 13: 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 470: 422, 422, 422, 476: 422, 422, 422, 480: 422, 488: 422, 422, 499: 422, 501: 422, 504: 422, 422, 567: 422, 643: 422, 422, 646: 422}, + {506: 2701, 730: 2700, 741: 4304}, // 1800 - {427, 427, 427, 427, 427, 427, 427, 427, 13: 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 469: 427, 427, 427, 475: 427, 427, 427, 479: 427, 487: 427, 427, 498: 427, 500: 427, 503: 427, 427, 566: 427, 642: 427, 427, 645: 427}, - {496: 4230, 505: 2031, 732: 4305}, - {496: 4230, 505: 2031, 732: 4303}, - {505: 2697, 729: 2696, 740: 4304}, - {426, 426, 426, 426, 426, 426, 426, 426, 13: 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 469: 426, 426, 426, 475: 426, 426, 426, 479: 426, 487: 426, 426, 498: 426, 500: 426, 503: 426, 426, 566: 426, 642: 426, 426, 645: 426}, + {423, 423, 423, 423, 423, 423, 423, 423, 13: 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 470: 423, 423, 423, 476: 423, 423, 423, 480: 423, 488: 423, 423, 499: 423, 501: 423, 504: 423, 423, 567: 423, 643: 423, 423, 646: 423}, + {473: 4306}, + {424, 424, 424, 424, 424, 424, 424, 424, 13: 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 470: 424, 424, 424, 476: 424, 424, 424, 480: 424, 488: 424, 424, 499: 424, 501: 424, 504: 424, 424, 567: 424, 643: 424, 424, 646: 424}, + {506: 2701, 730: 2700, 741: 4308}, + {425, 425, 425, 425, 425, 425, 425, 425, 13: 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 470: 425, 425, 425, 476: 425, 425, 425, 480: 425, 488: 425, 425, 499: 425, 501: 425, 504: 425, 425, 567: 425, 643: 425, 425, 646: 425}, // 1805 - {505: 2697, 729: 2696, 740: 4306}, - {428, 428, 428, 428, 428, 428, 428, 428, 13: 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 469: 428, 428, 428, 475: 428, 428, 428, 479: 428, 487: 428, 428, 498: 428, 500: 428, 503: 428, 428, 566: 428, 642: 428, 428, 645: 428}, - {2: 2031, 2031, 2031, 2031, 2031, 8: 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 48: 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 472: 2031, 496: 4230, 541: 2031, 732: 4311}, - {2: 2031, 2031, 2031, 2031, 2031, 8: 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 48: 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 472: 2031, 496: 4230, 541: 2031, 732: 4309}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 3446, 541: 3445, 659: 3447, 2723, 2724, 2722, 734: 3444, 867: 4310}, + {506: 2701, 730: 2700, 741: 4310}, + {427, 427, 427, 427, 427, 427, 427, 427, 13: 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 470: 427, 427, 427, 476: 427, 427, 427, 480: 427, 488: 427, 427, 499: 427, 501: 427, 504: 427, 427, 567: 427, 643: 427, 427, 646: 427}, + {496: 4240, 506: 2035, 733: 4315}, + {496: 4240, 506: 2035, 733: 4313}, + {506: 2701, 730: 2700, 741: 4314}, // 1810 - {429, 429, 429, 429, 429, 429, 429, 429, 13: 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 469: 429, 429, 429, 475: 429, 429, 429, 479: 429, 487: 429, 429, 498: 429, 500: 429, 503: 429, 429, 566: 429, 642: 429, 429, 645: 429}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 3446, 541: 3715, 659: 3447, 2723, 2724, 2722, 734: 3714, 803: 4312}, - {430, 430, 430, 430, 430, 430, 430, 430, 13: 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 469: 430, 430, 430, 475: 430, 430, 430, 479: 430, 487: 430, 430, 498: 430, 500: 430, 503: 430, 430, 566: 430, 642: 430, 430, 645: 430}, - {505: 2697, 729: 2696, 740: 4314}, - {2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 13: 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 47: 2105, 469: 2105, 2105, 2105, 475: 2105, 2105, 2105, 479: 2105, 487: 2105, 2105, 498: 2105, 500: 2105, 503: 2105, 2105, 566: 2105, 642: 2105, 2105, 645: 2105}, + {426, 426, 426, 426, 426, 426, 426, 426, 13: 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 470: 426, 426, 426, 476: 426, 426, 426, 480: 426, 488: 426, 426, 499: 426, 501: 426, 504: 426, 426, 567: 426, 643: 426, 426, 646: 426}, + {506: 2701, 730: 2700, 741: 4316}, + {428, 428, 428, 428, 428, 428, 428, 428, 13: 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 470: 428, 428, 428, 476: 428, 428, 428, 480: 428, 488: 428, 428, 499: 428, 501: 428, 504: 428, 428, 567: 428, 643: 428, 428, 646: 428}, + {2: 2035, 2035, 2035, 2035, 2035, 8: 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 48: 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 473: 2035, 496: 4240, 541: 2035, 733: 4321}, + {2: 2035, 2035, 2035, 2035, 2035, 8: 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 48: 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 473: 2035, 496: 4240, 541: 2035, 733: 4319}, // 1815 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 4316, 2723, 2724, 2722}, - {2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 13: 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 47: 2106, 469: 2106, 2106, 2106, 475: 2106, 2106, 2106, 479: 2106, 487: 2106, 2106, 498: 2106, 500: 2106, 503: 2106, 2106, 566: 2106, 642: 2106, 2106, 645: 2106}, - {505: 2697, 729: 2696, 740: 4318}, - {2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 13: 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 47: 2107, 469: 2107, 2107, 2107, 475: 2107, 2107, 2107, 479: 2107, 487: 2107, 2107, 498: 2107, 500: 2107, 503: 2107, 2107, 566: 2107, 642: 2107, 2107, 645: 2107}, - {505: 2697, 729: 2696, 740: 4320}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 3452, 541: 3451, 660: 3453, 2727, 2728, 2726, 735: 3450, 868: 4320}, + {429, 429, 429, 429, 429, 429, 429, 429, 13: 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 470: 429, 429, 429, 476: 429, 429, 429, 480: 429, 488: 429, 429, 499: 429, 501: 429, 504: 429, 429, 567: 429, 643: 429, 429, 646: 429}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 3452, 541: 3723, 660: 3453, 2727, 2728, 2726, 735: 3722, 804: 4322}, + {430, 430, 430, 430, 430, 430, 430, 430, 13: 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 470: 430, 430, 430, 476: 430, 430, 430, 480: 430, 488: 430, 430, 499: 430, 501: 430, 504: 430, 430, 567: 430, 643: 430, 430, 646: 430}, + {506: 2701, 730: 2700, 741: 4324}, // 1820 - {2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 13: 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 47: 2108, 469: 2108, 2108, 2108, 475: 2108, 2108, 2108, 479: 2108, 487: 2108, 2108, 498: 2108, 500: 2108, 503: 2108, 2108, 566: 2108, 642: 2108, 2108, 645: 2108}, - {472: 2031, 496: 4230, 732: 4322}, - {472: 4323}, - {2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 13: 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 47: 2109, 469: 2109, 2109, 2109, 475: 2109, 2109, 2109, 479: 2109, 487: 2109, 2109, 498: 2109, 500: 2109, 503: 2109, 2109, 566: 2109, 642: 2109, 2109, 645: 2109}, - {472: 2031, 496: 4230, 732: 4325}, + {2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 13: 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 47: 2109, 470: 2109, 2109, 2109, 476: 2109, 2109, 2109, 480: 2109, 488: 2109, 2109, 499: 2109, 501: 2109, 504: 2109, 2109, 567: 2109, 643: 2109, 2109, 646: 2109}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 4326, 2727, 2728, 2726}, + {2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 13: 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 47: 2110, 470: 2110, 2110, 2110, 476: 2110, 2110, 2110, 480: 2110, 488: 2110, 2110, 499: 2110, 501: 2110, 504: 2110, 2110, 567: 2110, 643: 2110, 2110, 646: 2110}, + {506: 2701, 730: 2700, 741: 4328}, + {2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 13: 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 47: 2111, 470: 2111, 2111, 2111, 476: 2111, 2111, 2111, 480: 2111, 488: 2111, 2111, 499: 2111, 501: 2111, 504: 2111, 2111, 567: 2111, 643: 2111, 2111, 646: 2111}, // 1825 - {472: 4326}, - {2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 13: 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 47: 2110, 469: 2110, 2110, 2110, 475: 2110, 2110, 2110, 479: 2110, 487: 2110, 2110, 498: 2110, 500: 2110, 503: 2110, 2110, 566: 2110, 642: 2110, 2110, 645: 2110}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 3446, 659: 3447, 2723, 2724, 2722, 734: 4328}, - {2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 13: 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 47: 2111, 469: 2111, 2111, 2111, 475: 2111, 2111, 2111, 479: 2111, 487: 2111, 2111, 498: 2111, 500: 2111, 503: 2111, 2111, 566: 2111, 642: 2111, 2111, 645: 2111}, - {2: 2031, 2031, 2031, 2031, 2031, 8: 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 48: 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 472: 2031, 496: 4230, 732: 4332}, + {506: 2701, 730: 2700, 741: 4330}, + {2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 13: 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 47: 2112, 470: 2112, 2112, 2112, 476: 2112, 2112, 2112, 480: 2112, 488: 2112, 2112, 499: 2112, 501: 2112, 504: 2112, 2112, 567: 2112, 643: 2112, 2112, 646: 2112}, + {473: 2035, 496: 4240, 733: 4332}, + {473: 4333}, + {2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 13: 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 47: 2113, 470: 2113, 2113, 2113, 476: 2113, 2113, 2113, 480: 2113, 488: 2113, 2113, 499: 2113, 501: 2113, 504: 2113, 2113, 567: 2113, 643: 2113, 2113, 646: 2113}, // 1830 - {403, 403, 403, 403, 403, 403, 403, 403, 13: 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 469: 403, 403, 403, 475: 403, 403, 403, 479: 403, 487: 403, 403, 498: 403, 500: 403, 503: 403, 403, 566: 403, 642: 403, 403, 645: 403}, - {402, 402, 402, 402, 402, 402, 402, 402, 13: 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 469: 402, 402, 402, 475: 402, 402, 402, 479: 402, 487: 402, 402, 498: 402, 500: 402, 503: 402, 402, 566: 402, 642: 402, 402, 645: 402}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 3446, 659: 3447, 2723, 2724, 2722, 734: 4333}, - {2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 13: 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 47: 2112, 469: 2112, 2112, 2112, 475: 2112, 2112, 2112, 479: 2112, 487: 2112, 2112, 498: 2112, 500: 2112, 503: 2112, 2112, 566: 2112, 642: 2112, 2112, 645: 2112}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 3446, 659: 3447, 2723, 2724, 2722, 734: 4335}, + {473: 2035, 496: 4240, 733: 4335}, + {473: 4336}, + {2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 13: 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 47: 2114, 470: 2114, 2114, 2114, 476: 2114, 2114, 2114, 480: 2114, 488: 2114, 2114, 499: 2114, 501: 2114, 504: 2114, 2114, 567: 2114, 643: 2114, 2114, 646: 2114}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 3452, 660: 3453, 2727, 2728, 2726, 735: 4338}, + {2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 13: 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 47: 2115, 470: 2115, 2115, 2115, 476: 2115, 2115, 2115, 480: 2115, 488: 2115, 2115, 499: 2115, 501: 2115, 504: 2115, 2115, 567: 2115, 643: 2115, 2115, 646: 2115}, // 1835 - {2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 13: 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 47: 2113, 469: 2113, 2113, 2113, 475: 2113, 2113, 2113, 479: 2113, 487: 2113, 2113, 498: 2113, 500: 2113, 503: 2113, 2113, 566: 2113, 642: 2113, 2113, 645: 2113}, - {472: 4337}, - {2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 13: 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 47: 2114, 469: 2114, 2114, 2114, 475: 2114, 2114, 2114, 479: 2114, 487: 2114, 2114, 498: 2114, 500: 2114, 503: 2114, 2114, 566: 2114, 642: 2114, 2114, 645: 2114}, - {4: 4190, 4192, 397, 13: 4209, 2150, 4207, 4148, 4211, 4198, 4227, 4191, 4194, 4193, 4196, 4197, 4199, 4206, 397, 4217, 4218, 4204, 4205, 4210, 4212, 4224, 4223, 4229, 4225, 4222, 4215, 4220, 4221, 4214, 4216, 4219, 4208, 69: 4161, 72: 4182, 4183, 81: 4184, 132: 4164, 195: 4149, 197: 4168, 200: 4169, 211: 4163, 219: 4179, 232: 4158, 241: 4165, 247: 4160, 264: 4170, 272: 4166, 279: 4180, 4181, 286: 4150, 471: 4178, 476: 4189, 4226, 479: 2150, 493: 4185, 499: 4167, 4177, 4152, 503: 2150, 579: 4157, 584: 4153, 643: 2150, 645: 4195, 657: 4172, 665: 4159, 667: 4186, 675: 4171, 682: 4173, 685: 4154, 700: 4162, 776: 4200, 788: 4202, 808: 4201, 830: 4203, 834: 4213, 838: 4228, 865: 4176, 878: 4174, 914: 4151, 921: 4155, 984: 4339, 1132: 4156, 1159: 4175}, - {2379, 2379, 2379, 2379, 7: 2379, 488: 2379}, + {2: 2035, 2035, 2035, 2035, 2035, 8: 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 48: 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 473: 2035, 496: 4240, 733: 4342}, + {403, 403, 403, 403, 403, 403, 403, 403, 13: 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 470: 403, 403, 403, 476: 403, 403, 403, 480: 403, 488: 403, 403, 499: 403, 501: 403, 504: 403, 403, 567: 403, 643: 403, 403, 646: 403}, + {402, 402, 402, 402, 402, 402, 402, 402, 13: 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 470: 402, 402, 402, 476: 402, 402, 402, 480: 402, 488: 402, 402, 499: 402, 501: 402, 504: 402, 402, 567: 402, 643: 402, 402, 646: 402}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 3452, 660: 3453, 2727, 2728, 2726, 735: 4343}, + {2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 13: 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 47: 2116, 470: 2116, 2116, 2116, 476: 2116, 2116, 2116, 480: 2116, 488: 2116, 2116, 499: 2116, 501: 2116, 504: 2116, 2116, 567: 2116, 643: 2116, 2116, 646: 2116}, // 1840 - {2393, 2393, 2393, 2393, 7: 2393, 488: 2393}, - {2392, 2392, 2392, 2392, 7: 2392, 488: 2392}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 476: 4343, 659: 4344, 2723, 2724, 2722}, - {2395, 2395, 2395, 2395, 7: 2395, 81: 2395, 488: 2395}, - {2394, 2394, 2394, 2394, 7: 2394, 81: 2394, 488: 2394}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 3452, 660: 3453, 2727, 2728, 2726, 735: 4345}, + {2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 13: 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 47: 2117, 470: 2117, 2117, 2117, 476: 2117, 2117, 2117, 480: 2117, 488: 2117, 2117, 499: 2117, 501: 2117, 504: 2117, 2117, 567: 2117, 643: 2117, 2117, 646: 2117}, + {473: 4347}, + {2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 13: 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 47: 2118, 470: 2118, 2118, 2118, 476: 2118, 2118, 2118, 480: 2118, 488: 2118, 2118, 499: 2118, 501: 2118, 504: 2118, 2118, 567: 2118, 643: 2118, 2118, 646: 2118}, + {4: 4200, 4202, 397, 13: 4219, 2154, 4217, 4158, 4221, 4208, 4237, 4201, 4204, 4203, 4206, 4207, 4209, 4216, 397, 4227, 4228, 4214, 4215, 4220, 4222, 4234, 4233, 4239, 4235, 4232, 4225, 4230, 4231, 4224, 4226, 4229, 4218, 69: 4171, 72: 4192, 4193, 81: 4194, 132: 4174, 195: 4159, 197: 4178, 200: 4179, 211: 4173, 219: 4189, 232: 4168, 241: 4175, 247: 4170, 264: 4180, 272: 4176, 279: 4190, 4191, 286: 4160, 472: 4188, 477: 4199, 4236, 480: 2154, 494: 4195, 500: 4177, 4187, 4162, 504: 2154, 580: 4167, 585: 4163, 644: 2154, 646: 4205, 658: 4182, 666: 4169, 668: 4196, 676: 4181, 683: 4183, 686: 4164, 701: 4172, 777: 4210, 789: 4212, 809: 4211, 831: 4213, 835: 4223, 839: 4238, 866: 4186, 879: 4184, 915: 4161, 922: 4165, 985: 4349, 1133: 4166, 1160: 4185}, // 1845 - {149: 4350, 235: 4347, 256: 4348, 258: 4349, 476: 4346}, - {2400, 2400, 2400, 2400, 7: 2400, 488: 2400, 493: 2400}, - {2399, 2399, 2399, 2399, 7: 2399, 488: 2399, 493: 2399}, - {2398, 2398, 2398, 2398, 7: 2398, 488: 2398, 493: 2398}, - {2397, 2397, 2397, 2397, 7: 2397, 488: 2397, 493: 2397}, + {2383, 2383, 2383, 2383, 7: 2383, 489: 2383}, + {2397, 2397, 2397, 2397, 7: 2397, 489: 2397}, + {2396, 2396, 2396, 2396, 7: 2396, 489: 2396}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 477: 4353, 660: 4354, 2727, 2728, 2726}, + {2399, 2399, 2399, 2399, 7: 2399, 81: 2399, 489: 2399}, // 1850 - {2396, 2396, 2396, 2396, 7: 2396, 488: 2396, 493: 2396}, - {2418, 2418, 2418, 2418, 7: 2418, 488: 2418}, - {2419, 2419, 2419, 2419, 7: 2419, 488: 2419}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 4366, 2723, 2724, 2722}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3875, 2723, 2724, 2722, 733: 4365}, + {2398, 2398, 2398, 2398, 7: 2398, 81: 2398, 489: 2398}, + {149: 4360, 235: 4357, 256: 4358, 258: 4359, 477: 4356}, + {2404, 2404, 2404, 2404, 7: 2404, 489: 2404, 494: 2404}, + {2403, 2403, 2403, 2403, 7: 2403, 489: 2403, 494: 2403}, + {2402, 2402, 2402, 2402, 7: 2402, 489: 2402, 494: 2402}, // 1855 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3875, 2723, 2724, 2722, 733: 4364}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3875, 2723, 2724, 2722, 733: 4363}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 4360, 2723, 2724, 2722}, - {2: 2391, 2391, 2391, 2391, 2391, 8: 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, 2391, 2391, 2391, 48: 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 470: 2391, 478: 2391, 491: 2391, 563: 2391}, - {2: 2390, 2390, 2390, 2390, 2390, 8: 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 48: 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 470: 2390, 478: 2390, 491: 2390, 563: 2390}, + {2401, 2401, 2401, 2401, 7: 2401, 489: 2401, 494: 2401}, + {2400, 2400, 2400, 2400, 7: 2400, 489: 2400, 494: 2400}, + {2422, 2422, 2422, 2422, 7: 2422, 489: 2422}, + {2423, 2423, 2423, 2423, 7: 2423, 489: 2423}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 4376, 2727, 2728, 2726}, // 1860 - {646: 4361}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 4362, 2723, 2724, 2722}, - {2424, 2424, 2424, 2424, 7: 2424, 488: 2424}, - {2425, 2425, 2425, 2425, 7: 2425, 488: 2425}, - {2426, 2426, 2426, 2426, 7: 2426, 488: 2426}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3883, 2727, 2728, 2726, 734: 4375}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3883, 2727, 2728, 2726, 734: 4374}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3883, 2727, 2728, 2726, 734: 4373}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 4370, 2727, 2728, 2726}, + {2: 2395, 2395, 2395, 2395, 2395, 8: 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 48: 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 471: 2395, 479: 2395, 492: 2395, 564: 2395}, // 1865 - {2427, 2427, 2427, 2427, 7: 2427, 488: 2427}, - {646: 4367}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 4368, 2723, 2724, 2722}, - {2428, 2428, 2428, 2428, 7: 2428, 488: 2428}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 4095, 2723, 2724, 2722, 739: 4384}, + {2: 2394, 2394, 2394, 2394, 2394, 8: 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 48: 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 471: 2394, 479: 2394, 492: 2394, 564: 2394}, + {647: 4371}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 4372, 2727, 2728, 2726}, + {2428, 2428, 2428, 2428, 7: 2428, 489: 2428}, + {2429, 2429, 2429, 2429, 7: 2429, 489: 2429}, // 1870 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 4379, 2723, 2724, 2722}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 4375, 2723, 2724, 2722}, - {2: 2386, 2386, 2386, 2386, 2386, 8: 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 48: 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 470: 2386, 563: 2386}, - {2: 439, 439, 439, 439, 439, 8: 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 48: 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439}, - {2: 438, 438, 438, 438, 438, 8: 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 48: 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438}, + {2430, 2430, 2430, 2430, 7: 2430, 489: 2430}, + {2431, 2431, 2431, 2431, 7: 2431, 489: 2431}, + {647: 4377}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 4378, 2727, 2728, 2726}, + {2432, 2432, 2432, 2432, 7: 2432, 489: 2432}, // 1875 - {84: 4378, 87: 4377, 851: 4376}, - {2413, 2413, 2413, 2413, 7: 2413, 488: 2413}, - {1818, 1818, 1818, 1818, 1818, 7: 1818, 17: 1818, 47: 1818, 81: 1818, 1818, 1818, 1818, 1818, 87: 1818, 471: 1818, 478: 1818, 488: 1818, 493: 1818}, - {1817, 1817, 1817, 1817, 1817, 7: 1817, 17: 1817, 47: 1817, 81: 1817, 1817, 1817, 1817, 1817, 87: 1817, 471: 1817, 478: 1817, 488: 1817, 493: 1817}, - {147: 4381, 473: 4041, 4040, 806: 4382, 929: 4380}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 4105, 2727, 2728, 2726, 740: 4394}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 4389, 2727, 2728, 2726}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 4385, 2727, 2728, 2726}, + {2: 2390, 2390, 2390, 2390, 2390, 8: 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 48: 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 471: 2390, 564: 2390}, + {2: 439, 439, 439, 439, 439, 8: 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 48: 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439}, // 1880 - {2415, 2415, 2415, 2415, 7: 2415, 488: 2415}, - {2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 47: 2283, 469: 2283, 473: 2283, 2283, 2283, 2283, 479: 2283, 488: 2283, 2283, 570: 2283, 579: 2283, 581: 2283, 591: 2283, 621: 2283, 640: 2283, 2283}, - {147: 4383}, - {2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 47: 2282, 469: 2282, 473: 2282, 2282, 2282, 2282, 479: 2282, 488: 2282, 2282, 570: 2282, 579: 2282, 581: 2282, 591: 2282, 621: 2282, 640: 2282, 2282}, - {501: 4385, 665: 4386}, + {2: 438, 438, 438, 438, 438, 8: 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 48: 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438}, + {84: 4388, 87: 4387, 852: 4386}, + {2417, 2417, 2417, 2417, 7: 2417, 489: 2417}, + {1822, 1822, 1822, 1822, 1822, 7: 1822, 17: 1822, 47: 1822, 81: 1822, 1822, 1822, 1822, 1822, 87: 1822, 472: 1822, 479: 1822, 489: 1822, 494: 1822}, + {1821, 1821, 1821, 1821, 1821, 7: 1821, 17: 1821, 47: 1821, 81: 1821, 1821, 1821, 1821, 1821, 87: 1821, 472: 1821, 479: 1821, 489: 1821, 494: 1821}, // 1885 - {476: 4388}, - {476: 4387}, - {2429, 2429, 2429, 2429, 7: 2429, 488: 2429}, - {470: 4390, 472: 3197, 482: 4393, 4392, 489: 3188, 505: 3192, 568: 3187, 3189, 571: 3191, 3190, 574: 3195, 577: 3196, 590: 3194, 708: 4391, 3193, 1128: 4389}, - {2431, 2431, 2431, 2431, 7: 2431, 488: 2431}, + {147: 4391, 474: 4051, 4050, 807: 4392, 930: 4390}, + {2419, 2419, 2419, 2419, 7: 2419, 489: 2419}, + {2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 47: 2287, 470: 2287, 474: 2287, 2287, 2287, 2287, 480: 2287, 489: 2287, 2287, 571: 2287, 580: 2287, 584: 2287, 636: 2287, 640: 2287, 2287, 2287}, + {147: 4393}, + {2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 47: 2286, 470: 2286, 474: 2286, 2286, 2286, 2286, 480: 2286, 489: 2286, 2286, 571: 2286, 580: 2286, 584: 2286, 636: 2286, 640: 2286, 2286, 2286}, // 1890 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 4396}, - {2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 47: 2199, 469: 2199, 473: 2199, 2199, 2199, 2199, 479: 2199, 488: 2199, 2199, 570: 2199, 579: 2199, 581: 2199, 591: 2199, 621: 2199, 640: 2199, 2199}, - {505: 3379, 571: 3381, 3380, 815: 4395}, - {505: 3379, 571: 3381, 3380, 815: 4394}, - {2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 47: 2197, 469: 2197, 473: 2197, 2197, 2197, 2197, 479: 2197, 488: 2197, 2197, 570: 2197, 579: 2197, 581: 2197, 591: 2197, 621: 2197, 640: 2197, 2197}, + {502: 4395, 666: 4396}, + {477: 4398}, + {477: 4397}, + {2433, 2433, 2433, 2433, 7: 2433, 489: 2433}, + {471: 4400, 473: 3202, 483: 4402, 4403, 490: 3193, 506: 3197, 569: 3192, 3194, 572: 3196, 3195, 575: 3200, 578: 3201, 591: 3199, 709: 4401, 3198, 1129: 4399}, // 1895 - {2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 47: 2198, 469: 2198, 473: 2198, 2198, 2198, 2198, 479: 2198, 488: 2198, 2198, 570: 2198, 579: 2198, 581: 2198, 591: 2198, 621: 2198, 640: 2198, 2198}, - {47: 4397, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, - {2430, 2430, 2430, 2430, 7: 2430, 488: 2430}, - {2: 1844, 1844, 1844, 1844, 1844, 8: 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 48: 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 563: 4400, 777: 4399}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 4095, 2723, 2724, 2722, 739: 4402}, + {2435, 2435, 2435, 2435, 7: 2435, 489: 2435}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 4406}, + {2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 47: 2203, 470: 2203, 474: 2203, 2203, 2203, 2203, 480: 2203, 489: 2203, 2203, 571: 2203, 580: 2203, 584: 2203, 636: 2203, 640: 2203, 2203, 2203}, + {506: 3385, 572: 3387, 3386, 816: 4405}, + {506: 3385, 572: 3387, 3386, 816: 4404}, // 1900 - {583: 4401}, - {2: 1843, 1843, 1843, 1843, 1843, 8: 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 48: 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 472: 1843, 567: 1843}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 4095, 2723, 2724, 2722, 739: 4404, 843: 4403}, - {2385, 2385, 2385, 2385, 7: 2385, 4673, 4674, 488: 2385, 924: 4672}, - {10: 4406, 105: 4454, 109: 4455, 165: 4445, 173: 4465, 4464, 4430, 192: 4467, 218: 4466, 225: 4427, 311: 4434, 4426, 332: 4443, 357: 4450, 4449, 361: 4453, 395: 4461, 501: 4444, 503: 4448, 541: 4439, 643: 4447, 673: 4452, 4451, 676: 4428, 4433, 4431, 4424, 4418, 4432, 684: 4440, 686: 4425, 4457, 4419, 4420, 4421, 4422, 4423, 4446, 4459, 4463, 4458, 4417, 4462, 4429, 701: 4416, 4456, 4415, 4460, 896: 4435, 1151: 4437, 1174: 4414, 4441, 4411, 1194: 4409, 1208: 4412, 1210: 4413, 1228: 4410, 1244: 4436, 4407, 4438, 1303: 4408, 1315: 4442, 1318: 4405, 1343: 4468}, + {2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 47: 2201, 470: 2201, 474: 2201, 2201, 2201, 2201, 480: 2201, 489: 2201, 2201, 571: 2201, 580: 2201, 584: 2201, 636: 2201, 640: 2201, 2201, 2201}, + {2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 47: 2202, 470: 2202, 474: 2202, 2202, 2202, 2202, 480: 2202, 489: 2202, 2202, 571: 2202, 580: 2202, 584: 2202, 636: 2202, 640: 2202, 2202, 2202}, + {47: 4407, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {2434, 2434, 2434, 2434, 7: 2434, 489: 2434}, + {2: 1848, 1848, 1848, 1848, 1848, 8: 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 48: 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 564: 4410, 778: 4409}, // 1905 - {2246, 2246, 2246, 2246, 4548, 4554, 4542, 2246, 2246, 2246, 4546, 4555, 4553, 47: 2246, 469: 4547, 473: 4041, 4040, 2253, 4545, 479: 4552, 488: 2246, 4541, 570: 2287, 579: 2376, 581: 4539, 591: 4544, 621: 4537, 640: 4559, 4556, 806: 4540, 828: 4549, 905: 4551, 923: 4557, 932: 4550, 951: 4543, 999: 4558, 4671}, - {2246, 2246, 2246, 2246, 4548, 4554, 4542, 2246, 2246, 2246, 4546, 4555, 4553, 47: 2246, 469: 4547, 473: 4041, 4040, 2253, 4545, 479: 4552, 488: 2246, 4541, 570: 2287, 579: 2376, 581: 4539, 591: 4544, 621: 4537, 640: 4559, 4556, 806: 4540, 828: 4549, 905: 4551, 923: 4557, 932: 4550, 951: 4543, 999: 4558, 4538}, - {371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 47: 371, 469: 371, 473: 371, 371, 371, 371, 479: 371, 488: 371, 371, 570: 371, 579: 371, 581: 371, 591: 371, 621: 371, 640: 371, 371}, - {370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 47: 370, 469: 370, 473: 370, 370, 370, 370, 479: 370, 488: 370, 370, 570: 370, 579: 370, 581: 370, 591: 370, 621: 370, 640: 370, 370}, - {369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 47: 369, 469: 369, 473: 369, 369, 369, 369, 479: 369, 488: 369, 369, 570: 369, 579: 369, 581: 369, 591: 369, 621: 369, 640: 369, 369}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 4105, 2727, 2728, 2726, 740: 4412}, + {582: 4411}, + {2: 1847, 1847, 1847, 1847, 1847, 8: 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 48: 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 473: 1847, 568: 1847}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 4105, 2727, 2728, 2726, 740: 4414, 844: 4413}, + {2389, 2389, 2389, 2389, 7: 2389, 4683, 4684, 489: 2389, 925: 4682}, // 1910 - {286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 47: 286, 49: 286, 469: 286, 3780, 473: 286, 286, 286, 286, 479: 286, 488: 286, 286, 570: 286, 579: 286, 581: 286, 591: 286, 621: 286, 640: 286, 286, 736: 286, 738: 286, 759: 3781, 782: 4535}, - {281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 47: 281, 49: 281, 469: 281, 473: 281, 281, 281, 281, 479: 281, 488: 281, 281, 570: 281, 579: 281, 581: 281, 591: 281, 621: 281, 640: 281, 281, 736: 281, 738: 281, 871: 4534}, - {279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 47: 279, 49: 279, 469: 279, 3767, 473: 279, 279, 279, 279, 479: 279, 488: 279, 279, 570: 279, 579: 279, 581: 279, 591: 279, 621: 279, 640: 279, 279, 736: 279, 738: 279, 759: 3768, 899: 4532, 904: 3769}, - {279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 47: 279, 49: 279, 469: 279, 3767, 473: 279, 279, 279, 279, 479: 279, 488: 279, 279, 570: 279, 579: 279, 581: 279, 591: 279, 621: 279, 640: 279, 279, 736: 279, 738: 279, 759: 3768, 899: 4530, 904: 3769}, - {286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 47: 286, 469: 286, 3780, 473: 286, 286, 286, 286, 479: 286, 488: 286, 286, 570: 286, 579: 286, 581: 286, 591: 286, 621: 286, 640: 286, 286, 759: 3781, 782: 4529}, + {10: 4416, 101: 4464, 109: 4465, 165: 4455, 173: 4475, 4474, 4440, 192: 4477, 218: 4476, 225: 4437, 311: 4444, 4436, 332: 4453, 357: 4460, 4459, 361: 4463, 396: 4471, 502: 4454, 504: 4458, 541: 4449, 644: 4457, 674: 4462, 4461, 677: 4438, 4443, 4441, 4434, 4428, 4442, 685: 4450, 687: 4435, 4467, 4429, 4430, 4431, 4432, 4433, 4456, 4469, 4473, 4468, 4427, 4472, 4439, 702: 4426, 4466, 4425, 4470, 897: 4445, 1152: 4447, 1175: 4424, 4451, 4421, 1195: 4419, 1209: 4422, 1211: 4423, 1229: 4420, 1245: 4446, 4417, 4448, 1304: 4418, 1316: 4452, 1319: 4415, 1344: 4478}, + {2250, 2250, 2250, 2250, 4558, 4564, 4552, 2250, 2250, 2250, 4556, 4565, 4563, 47: 2250, 470: 4557, 474: 4051, 4050, 2257, 4555, 480: 4562, 489: 2250, 4551, 571: 2291, 580: 2380, 584: 4549, 636: 4554, 640: 4547, 4569, 4566, 807: 4550, 829: 4559, 906: 4561, 924: 4567, 933: 4560, 952: 4553, 1000: 4568, 4681}, + {2250, 2250, 2250, 2250, 4558, 4564, 4552, 2250, 2250, 2250, 4556, 4565, 4563, 47: 2250, 470: 4557, 474: 4051, 4050, 2257, 4555, 480: 4562, 489: 2250, 4551, 571: 2291, 580: 2380, 584: 4549, 636: 4554, 640: 4547, 4569, 4566, 807: 4550, 829: 4559, 906: 4561, 924: 4567, 933: 4560, 952: 4553, 1000: 4568, 4548}, + {371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 47: 371, 470: 371, 474: 371, 371, 371, 371, 480: 371, 489: 371, 371, 571: 371, 580: 371, 584: 371, 636: 371, 640: 371, 371, 371}, + {370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 47: 370, 470: 370, 474: 370, 370, 370, 370, 480: 370, 489: 370, 370, 571: 370, 580: 370, 584: 370, 636: 370, 640: 370, 370, 370}, // 1915 - {363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 47: 363, 49: 363, 469: 363, 363, 473: 363, 363, 363, 363, 479: 363, 488: 363, 363, 570: 363, 579: 363, 581: 363, 591: 363, 621: 363, 640: 363, 363, 736: 363, 738: 363}, - {362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 47: 362, 49: 362, 469: 362, 362, 473: 362, 362, 362, 362, 479: 362, 488: 362, 362, 570: 362, 579: 362, 581: 362, 591: 362, 621: 362, 640: 362, 362, 736: 362, 738: 362}, - {361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 47: 361, 49: 361, 469: 361, 361, 473: 361, 361, 361, 361, 479: 361, 488: 361, 361, 570: 361, 579: 361, 581: 361, 591: 361, 621: 361, 640: 361, 361, 736: 361, 738: 361}, - {360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 47: 360, 49: 360, 469: 360, 360, 473: 360, 360, 360, 360, 479: 360, 488: 360, 360, 570: 360, 579: 360, 581: 360, 591: 360, 621: 360, 640: 360, 360, 736: 360, 738: 360}, - {359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 47: 359, 49: 359, 469: 359, 359, 473: 359, 359, 359, 359, 479: 359, 488: 359, 359, 570: 359, 579: 359, 581: 359, 591: 359, 621: 359, 640: 359, 359, 736: 359, 738: 359}, + {369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 47: 369, 470: 369, 474: 369, 369, 369, 369, 480: 369, 489: 369, 369, 571: 369, 580: 369, 584: 369, 636: 369, 640: 369, 369, 369}, + {286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 47: 286, 49: 286, 470: 286, 3788, 474: 286, 286, 286, 286, 480: 286, 489: 286, 286, 571: 286, 580: 286, 584: 286, 636: 286, 640: 286, 286, 286, 737: 286, 739: 286, 760: 3789, 783: 4545}, + {281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 47: 281, 49: 281, 470: 281, 474: 281, 281, 281, 281, 480: 281, 489: 281, 281, 571: 281, 580: 281, 584: 281, 636: 281, 640: 281, 281, 281, 737: 281, 739: 281, 872: 4544}, + {279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 47: 279, 49: 279, 470: 279, 3775, 474: 279, 279, 279, 279, 480: 279, 489: 279, 279, 571: 279, 580: 279, 584: 279, 636: 279, 640: 279, 279, 279, 737: 279, 739: 279, 760: 3776, 900: 4542, 905: 3777}, + {279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 47: 279, 49: 279, 470: 279, 3775, 474: 279, 279, 279, 279, 480: 279, 489: 279, 279, 571: 279, 580: 279, 584: 279, 636: 279, 640: 279, 279, 279, 737: 279, 739: 279, 760: 3776, 900: 4540, 905: 3777}, // 1920 - {358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 47: 358, 49: 358, 469: 358, 358, 473: 358, 358, 358, 358, 479: 358, 488: 358, 358, 570: 358, 579: 358, 581: 358, 591: 358, 621: 358, 640: 358, 358, 736: 358, 738: 358}, - {357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 47: 357, 49: 357, 469: 357, 357, 473: 357, 357, 357, 357, 479: 357, 488: 357, 357, 570: 357, 579: 357, 581: 357, 591: 357, 621: 357, 640: 357, 357, 736: 357, 738: 357}, - {356, 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, 47: 356, 49: 356, 469: 356, 356, 473: 356, 356, 356, 356, 479: 356, 488: 356, 356, 570: 356, 579: 356, 581: 356, 591: 356, 621: 356, 640: 356, 356, 736: 356, 738: 356}, - {355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 47: 355, 49: 355, 469: 355, 355, 473: 355, 355, 355, 355, 479: 355, 488: 355, 355, 570: 355, 579: 355, 581: 355, 591: 355, 621: 355, 640: 355, 355, 736: 355, 738: 355}, - {354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 47: 354, 49: 354, 469: 354, 354, 473: 354, 354, 354, 354, 479: 354, 488: 354, 354, 570: 354, 579: 354, 581: 354, 591: 354, 621: 354, 640: 354, 354, 736: 354, 738: 354}, + {286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 47: 286, 470: 286, 3788, 474: 286, 286, 286, 286, 480: 286, 489: 286, 286, 571: 286, 580: 286, 584: 286, 636: 286, 640: 286, 286, 286, 760: 3789, 783: 4539}, + {363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 47: 363, 49: 363, 470: 363, 363, 474: 363, 363, 363, 363, 480: 363, 489: 363, 363, 571: 363, 580: 363, 584: 363, 636: 363, 640: 363, 363, 363, 737: 363, 739: 363}, + {362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 47: 362, 49: 362, 470: 362, 362, 474: 362, 362, 362, 362, 480: 362, 489: 362, 362, 571: 362, 580: 362, 584: 362, 636: 362, 640: 362, 362, 362, 737: 362, 739: 362}, + {361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 47: 361, 49: 361, 470: 361, 361, 474: 361, 361, 361, 361, 480: 361, 489: 361, 361, 571: 361, 580: 361, 584: 361, 636: 361, 640: 361, 361, 361, 737: 361, 739: 361}, + {360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 47: 360, 49: 360, 470: 360, 360, 474: 360, 360, 360, 360, 480: 360, 489: 360, 360, 571: 360, 580: 360, 584: 360, 636: 360, 640: 360, 360, 360, 737: 360, 739: 360}, // 1925 - {353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 47: 353, 49: 353, 469: 353, 353, 473: 353, 353, 353, 353, 479: 353, 488: 353, 353, 570: 353, 579: 353, 581: 353, 591: 353, 621: 353, 640: 353, 353, 736: 353, 738: 353}, - {352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 47: 352, 49: 352, 469: 352, 473: 352, 352, 352, 352, 479: 352, 488: 352, 352, 570: 352, 579: 352, 581: 352, 591: 352, 621: 352, 640: 352, 352, 736: 352, 738: 352}, - {351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 47: 351, 49: 351, 469: 351, 473: 351, 351, 351, 351, 479: 351, 488: 351, 351, 570: 351, 579: 351, 581: 351, 591: 351, 621: 351, 640: 351, 351, 736: 351, 738: 351}, - {347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 47: 347, 49: 347, 469: 347, 347, 473: 347, 347, 347, 347, 479: 347, 488: 347, 347, 570: 347, 579: 347, 581: 347, 591: 347, 621: 347, 640: 347, 347, 736: 347, 738: 347}, - {346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 47: 346, 49: 346, 469: 346, 346, 473: 346, 346, 346, 346, 479: 346, 488: 346, 346, 570: 346, 579: 346, 581: 346, 591: 346, 621: 346, 640: 346, 346, 736: 346, 738: 346}, + {359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 47: 359, 49: 359, 470: 359, 359, 474: 359, 359, 359, 359, 480: 359, 489: 359, 359, 571: 359, 580: 359, 584: 359, 636: 359, 640: 359, 359, 359, 737: 359, 739: 359}, + {358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 47: 358, 49: 358, 470: 358, 358, 474: 358, 358, 358, 358, 480: 358, 489: 358, 358, 571: 358, 580: 358, 584: 358, 636: 358, 640: 358, 358, 358, 737: 358, 739: 358}, + {357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 47: 357, 49: 357, 470: 357, 357, 474: 357, 357, 357, 357, 480: 357, 489: 357, 357, 571: 357, 580: 357, 584: 357, 636: 357, 640: 357, 357, 357, 737: 357, 739: 357}, + {356, 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, 47: 356, 49: 356, 470: 356, 356, 474: 356, 356, 356, 356, 480: 356, 489: 356, 356, 571: 356, 580: 356, 584: 356, 636: 356, 640: 356, 356, 356, 737: 356, 739: 356}, + {355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 47: 355, 49: 355, 470: 355, 355, 474: 355, 355, 355, 355, 480: 355, 489: 355, 355, 571: 355, 580: 355, 584: 355, 636: 355, 640: 355, 355, 355, 737: 355, 739: 355}, // 1930 - {345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 47: 345, 49: 345, 469: 345, 345, 473: 345, 345, 345, 345, 479: 345, 488: 345, 345, 570: 345, 579: 345, 581: 345, 591: 345, 621: 345, 640: 345, 345, 736: 345, 738: 345}, - {344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 47: 344, 49: 344, 469: 344, 344, 473: 344, 344, 344, 344, 479: 344, 488: 344, 344, 570: 344, 579: 344, 581: 344, 591: 344, 621: 344, 640: 344, 344, 736: 344, 738: 344}, - {343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 47: 343, 49: 343, 469: 343, 343, 473: 343, 343, 343, 343, 479: 343, 488: 343, 343, 570: 343, 579: 343, 581: 343, 591: 343, 621: 343, 640: 343, 343, 736: 343, 738: 343}, - {342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 47: 342, 49: 342, 469: 342, 342, 473: 342, 342, 342, 342, 479: 342, 488: 342, 342, 570: 342, 579: 342, 581: 342, 591: 342, 621: 342, 640: 342, 342, 736: 342, 738: 342, 1269: 4528}, - {340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 47: 340, 469: 340, 340, 473: 340, 340, 340, 340, 479: 340, 488: 340, 340, 570: 340, 579: 340, 581: 340, 591: 340, 621: 340, 640: 340, 340}, + {354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 47: 354, 49: 354, 470: 354, 354, 474: 354, 354, 354, 354, 480: 354, 489: 354, 354, 571: 354, 580: 354, 584: 354, 636: 354, 640: 354, 354, 354, 737: 354, 739: 354}, + {353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 47: 353, 49: 353, 470: 353, 353, 474: 353, 353, 353, 353, 480: 353, 489: 353, 353, 571: 353, 580: 353, 584: 353, 636: 353, 640: 353, 353, 353, 737: 353, 739: 353}, + {352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 47: 352, 49: 352, 470: 352, 474: 352, 352, 352, 352, 480: 352, 489: 352, 352, 571: 352, 580: 352, 584: 352, 636: 352, 640: 352, 352, 352, 737: 352, 739: 352}, + {351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 47: 351, 49: 351, 470: 351, 474: 351, 351, 351, 351, 480: 351, 489: 351, 351, 571: 351, 580: 351, 584: 351, 636: 351, 640: 351, 351, 351, 737: 351, 739: 351}, + {347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 47: 347, 49: 347, 470: 347, 347, 474: 347, 347, 347, 347, 480: 347, 489: 347, 347, 571: 347, 580: 347, 584: 347, 636: 347, 640: 347, 347, 347, 737: 347, 739: 347}, // 1935 - {273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 14: 3790, 47: 273, 469: 273, 3780, 473: 273, 273, 273, 273, 479: 273, 488: 273, 273, 503: 3791, 541: 3787, 570: 273, 579: 273, 581: 273, 591: 273, 621: 273, 640: 273, 273, 643: 3789, 759: 4525, 769: 3788, 794: 4526}, - {273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 14: 3790, 47: 273, 469: 273, 3780, 473: 273, 273, 273, 273, 479: 273, 488: 273, 273, 503: 3791, 541: 3787, 570: 273, 579: 273, 581: 273, 591: 273, 621: 273, 640: 273, 273, 643: 3789, 759: 4522, 769: 3788, 794: 4523}, - {470: 3780, 759: 4520}, - {470: 3780, 759: 4518}, - {286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 47: 286, 469: 286, 3780, 473: 286, 286, 286, 286, 479: 286, 488: 286, 286, 570: 286, 579: 286, 581: 286, 591: 286, 621: 286, 640: 286, 286, 759: 3781, 782: 4517}, + {346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 47: 346, 49: 346, 470: 346, 346, 474: 346, 346, 346, 346, 480: 346, 489: 346, 346, 571: 346, 580: 346, 584: 346, 636: 346, 640: 346, 346, 346, 737: 346, 739: 346}, + {345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 47: 345, 49: 345, 470: 345, 345, 474: 345, 345, 345, 345, 480: 345, 489: 345, 345, 571: 345, 580: 345, 584: 345, 636: 345, 640: 345, 345, 345, 737: 345, 739: 345}, + {344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 47: 344, 49: 344, 470: 344, 344, 474: 344, 344, 344, 344, 480: 344, 489: 344, 344, 571: 344, 580: 344, 584: 344, 636: 344, 640: 344, 344, 344, 737: 344, 739: 344}, + {343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 47: 343, 49: 343, 470: 343, 343, 474: 343, 343, 343, 343, 480: 343, 489: 343, 343, 571: 343, 580: 343, 584: 343, 636: 343, 640: 343, 343, 343, 737: 343, 739: 343}, + {342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 47: 342, 49: 342, 470: 342, 342, 474: 342, 342, 342, 342, 480: 342, 489: 342, 342, 571: 342, 580: 342, 584: 342, 636: 342, 640: 342, 342, 342, 737: 342, 739: 342, 1270: 4538}, // 1940 - {470: 3780, 759: 4516}, - {331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 47: 331, 469: 331, 473: 331, 331, 331, 331, 479: 331, 488: 331, 331, 570: 331, 579: 331, 581: 331, 591: 331, 621: 331, 640: 331, 331}, - {273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 14: 3790, 47: 273, 101: 4497, 4499, 104: 4498, 469: 273, 473: 273, 273, 273, 273, 479: 273, 488: 273, 273, 503: 3791, 541: 3787, 570: 273, 579: 273, 581: 273, 591: 273, 621: 273, 640: 273, 273, 643: 3789, 769: 3788, 794: 4496, 879: 4515}, - {470: 4511}, - {470: 4501}, + {340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 47: 340, 470: 340, 340, 474: 340, 340, 340, 340, 480: 340, 489: 340, 340, 571: 340, 580: 340, 584: 340, 636: 340, 640: 340, 340, 340}, + {273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 14: 3798, 47: 273, 470: 273, 3788, 474: 273, 273, 273, 273, 480: 273, 489: 273, 273, 504: 3799, 541: 3795, 571: 273, 580: 273, 584: 273, 636: 273, 640: 273, 273, 273, 644: 3797, 760: 4535, 770: 3796, 795: 4536}, + {273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 14: 3798, 47: 273, 470: 273, 3788, 474: 273, 273, 273, 273, 480: 273, 489: 273, 273, 504: 3799, 541: 3795, 571: 273, 580: 273, 584: 273, 636: 273, 640: 273, 273, 273, 644: 3797, 760: 4532, 770: 3796, 795: 4533}, + {471: 3788, 760: 4530}, + {471: 3788, 760: 4528}, // 1945 - {327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 47: 327, 469: 327, 473: 327, 327, 327, 327, 479: 327, 488: 327, 327, 570: 327, 579: 327, 581: 327, 591: 327, 621: 327, 640: 327, 327}, - {273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 14: 3790, 47: 273, 101: 4497, 4499, 104: 4498, 469: 273, 473: 273, 273, 273, 273, 479: 273, 488: 273, 273, 503: 4494, 541: 3787, 570: 273, 579: 273, 581: 273, 591: 273, 621: 273, 640: 273, 273, 643: 4493, 673: 4452, 4451, 684: 4495, 769: 3788, 794: 4496, 879: 4492, 1151: 4491}, - {324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 14: 324, 47: 324, 469: 324, 324, 473: 324, 324, 324, 324, 479: 324, 488: 324, 324, 503: 324, 541: 324, 570: 324, 579: 324, 581: 324, 591: 324, 621: 324, 640: 324, 324, 643: 324, 839: 4490}, - {323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 14: 323, 47: 323, 469: 323, 323, 473: 323, 323, 323, 323, 479: 323, 488: 323, 323, 503: 323, 541: 323, 570: 323, 579: 323, 581: 323, 591: 323, 621: 323, 640: 323, 323, 643: 323, 839: 4489}, - {322, 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, 14: 322, 47: 322, 469: 322, 322, 473: 322, 322, 322, 322, 479: 322, 488: 322, 322, 503: 322, 541: 322, 570: 322, 579: 322, 581: 322, 591: 322, 621: 322, 640: 322, 322, 643: 322, 673: 4487, 4486, 839: 4488}, + {286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 47: 286, 470: 286, 3788, 474: 286, 286, 286, 286, 480: 286, 489: 286, 286, 571: 286, 580: 286, 584: 286, 636: 286, 640: 286, 286, 286, 760: 3789, 783: 4527}, + {471: 3788, 760: 4526}, + {331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 47: 331, 470: 331, 474: 331, 331, 331, 331, 480: 331, 489: 331, 331, 571: 331, 580: 331, 584: 331, 636: 331, 640: 331, 331, 331}, + {273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 14: 3798, 47: 273, 102: 4507, 4509, 106: 4508, 470: 273, 474: 273, 273, 273, 273, 480: 273, 489: 273, 273, 504: 3799, 541: 3795, 571: 273, 580: 273, 584: 273, 636: 273, 640: 273, 273, 273, 644: 3797, 770: 3796, 795: 4506, 880: 4525}, + {471: 4521}, // 1950 - {503: 4481, 643: 4480, 673: 4483, 4482}, - {317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 14: 317, 47: 317, 101: 317, 317, 104: 317, 469: 317, 317, 473: 317, 317, 317, 317, 479: 317, 488: 317, 317, 503: 317, 541: 317, 570: 317, 579: 317, 581: 317, 591: 317, 621: 317, 640: 317, 317, 643: 317}, - {316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 14: 316, 47: 316, 101: 316, 316, 104: 316, 469: 316, 316, 473: 316, 316, 316, 316, 479: 316, 488: 316, 316, 503: 316, 541: 316, 570: 316, 579: 316, 581: 316, 591: 316, 621: 316, 640: 316, 316, 643: 316}, - {470: 313}, - {307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 47: 307, 49: 307, 469: 307, 307, 473: 307, 307, 307, 307, 479: 307, 488: 307, 307, 570: 307, 579: 307, 581: 307, 591: 307, 621: 307, 640: 307, 307, 736: 307, 738: 307}, + {471: 4511}, + {327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 47: 327, 470: 327, 474: 327, 327, 327, 327, 480: 327, 489: 327, 327, 571: 327, 580: 327, 584: 327, 636: 327, 640: 327, 327, 327}, + {273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 14: 3798, 47: 273, 102: 4507, 4509, 106: 4508, 470: 273, 474: 273, 273, 273, 273, 480: 273, 489: 273, 273, 504: 4504, 541: 3795, 571: 273, 580: 273, 584: 273, 636: 273, 640: 273, 273, 273, 644: 4503, 674: 4462, 4461, 685: 4505, 770: 3796, 795: 4506, 880: 4502, 1152: 4501}, + {324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 14: 324, 47: 324, 470: 324, 324, 474: 324, 324, 324, 324, 480: 324, 489: 324, 324, 504: 324, 541: 324, 571: 324, 580: 324, 584: 324, 636: 324, 640: 324, 324, 324, 644: 324, 840: 4500}, + {323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 14: 323, 47: 323, 470: 323, 323, 474: 323, 323, 323, 323, 480: 323, 489: 323, 323, 504: 323, 541: 323, 571: 323, 580: 323, 584: 323, 636: 323, 640: 323, 323, 323, 644: 323, 840: 4499}, // 1955 - {306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 47: 306, 49: 306, 469: 306, 306, 473: 306, 306, 306, 306, 479: 306, 488: 306, 306, 570: 306, 579: 306, 581: 306, 591: 306, 621: 306, 640: 306, 306, 736: 306, 738: 306}, - {305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 47: 305, 469: 305, 473: 305, 305, 305, 305, 479: 305, 488: 305, 305, 570: 305, 579: 305, 581: 305, 591: 305, 621: 305, 640: 305, 305}, - {286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 47: 286, 469: 286, 3780, 473: 286, 286, 286, 286, 479: 286, 488: 286, 286, 570: 286, 579: 286, 581: 286, 591: 286, 621: 286, 640: 286, 286, 759: 3781, 782: 4479}, - {303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 47: 303, 469: 303, 473: 303, 303, 303, 303, 479: 303, 488: 303, 303, 570: 303, 579: 303, 581: 303, 591: 303, 621: 303, 640: 303, 303}, - {302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 47: 302, 469: 302, 473: 302, 302, 302, 302, 479: 302, 488: 302, 302, 570: 302, 579: 302, 581: 302, 591: 302, 621: 302, 640: 302, 302}, + {322, 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, 14: 322, 47: 322, 470: 322, 322, 474: 322, 322, 322, 322, 480: 322, 489: 322, 322, 504: 322, 541: 322, 571: 322, 580: 322, 584: 322, 636: 322, 640: 322, 322, 322, 644: 322, 674: 4497, 4496, 840: 4498}, + {504: 4491, 644: 4490, 674: 4493, 4492}, + {317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 14: 317, 47: 317, 102: 317, 317, 106: 317, 470: 317, 317, 474: 317, 317, 317, 317, 480: 317, 489: 317, 317, 504: 317, 541: 317, 571: 317, 580: 317, 584: 317, 636: 317, 640: 317, 317, 317, 644: 317}, + {316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 14: 316, 47: 316, 102: 316, 316, 106: 316, 470: 316, 316, 474: 316, 316, 316, 316, 480: 316, 489: 316, 316, 504: 316, 541: 316, 571: 316, 580: 316, 584: 316, 636: 316, 640: 316, 316, 316, 644: 316}, + {471: 313}, // 1960 - {300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 14: 300, 47: 300, 101: 300, 300, 104: 300, 469: 300, 473: 300, 300, 300, 300, 479: 300, 488: 300, 300, 503: 300, 541: 300, 570: 300, 579: 300, 581: 300, 591: 300, 621: 300, 640: 300, 300, 643: 300}, - {286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 14: 286, 47: 286, 101: 286, 286, 104: 286, 469: 286, 3780, 473: 286, 286, 286, 286, 479: 286, 488: 286, 286, 503: 286, 541: 286, 570: 286, 579: 286, 581: 286, 591: 286, 621: 286, 640: 286, 286, 643: 286, 759: 3781, 782: 4478}, - {298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 14: 298, 47: 298, 101: 298, 298, 104: 298, 469: 298, 473: 298, 298, 298, 298, 479: 298, 488: 298, 298, 503: 298, 541: 298, 570: 298, 579: 298, 581: 298, 591: 298, 621: 298, 640: 298, 298, 643: 298}, - {297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 14: 297, 47: 297, 101: 297, 297, 104: 297, 469: 297, 473: 297, 297, 297, 297, 479: 297, 488: 297, 297, 503: 297, 541: 297, 570: 297, 579: 297, 581: 297, 591: 297, 621: 297, 640: 297, 297, 643: 297}, - {292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 47: 292, 469: 292, 473: 292, 292, 292, 292, 479: 292, 488: 292, 292, 570: 292, 579: 292, 581: 292, 591: 292, 621: 292, 640: 292, 292}, + {307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 47: 307, 49: 307, 470: 307, 307, 474: 307, 307, 307, 307, 480: 307, 489: 307, 307, 571: 307, 580: 307, 584: 307, 636: 307, 640: 307, 307, 307, 737: 307, 739: 307}, + {306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 47: 306, 49: 306, 470: 306, 306, 474: 306, 306, 306, 306, 480: 306, 489: 306, 306, 571: 306, 580: 306, 584: 306, 636: 306, 640: 306, 306, 306, 737: 306, 739: 306}, + {305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 47: 305, 470: 305, 474: 305, 305, 305, 305, 480: 305, 489: 305, 305, 571: 305, 580: 305, 584: 305, 636: 305, 640: 305, 305, 305}, + {286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 47: 286, 470: 286, 3788, 474: 286, 286, 286, 286, 480: 286, 489: 286, 286, 571: 286, 580: 286, 584: 286, 636: 286, 640: 286, 286, 286, 760: 3789, 783: 4489}, + {303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 47: 303, 470: 303, 474: 303, 303, 303, 303, 480: 303, 489: 303, 303, 571: 303, 580: 303, 584: 303, 636: 303, 640: 303, 303, 303}, // 1965 - {286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 47: 286, 469: 286, 3780, 473: 286, 286, 286, 286, 479: 286, 488: 286, 286, 570: 286, 579: 286, 581: 286, 591: 286, 621: 286, 640: 286, 286, 759: 3781, 782: 4477}, - {286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 47: 286, 469: 286, 3780, 473: 286, 286, 286, 286, 479: 286, 488: 286, 286, 570: 286, 579: 286, 581: 286, 591: 286, 621: 286, 640: 286, 286, 759: 3781, 782: 4476}, - {286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 47: 286, 469: 286, 3780, 473: 286, 286, 286, 286, 479: 286, 488: 286, 286, 570: 286, 579: 286, 581: 286, 591: 286, 621: 286, 640: 286, 286, 759: 3781, 782: 4475}, - {286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 47: 286, 49: 286, 469: 286, 3780, 473: 286, 286, 286, 286, 479: 286, 488: 286, 286, 570: 286, 579: 286, 581: 286, 591: 286, 621: 286, 640: 286, 286, 736: 286, 738: 286, 759: 3781, 782: 4469}, - {281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 47: 281, 49: 281, 469: 281, 473: 281, 281, 281, 281, 479: 281, 488: 281, 281, 570: 281, 579: 281, 581: 281, 591: 281, 621: 281, 640: 281, 281, 736: 281, 738: 281, 871: 4470}, + {302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 47: 302, 470: 302, 474: 302, 302, 302, 302, 480: 302, 489: 302, 302, 571: 302, 580: 302, 584: 302, 636: 302, 640: 302, 302, 302}, + {300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 14: 300, 47: 300, 102: 300, 300, 106: 300, 470: 300, 474: 300, 300, 300, 300, 480: 300, 489: 300, 300, 504: 300, 541: 300, 571: 300, 580: 300, 584: 300, 636: 300, 640: 300, 300, 300, 644: 300}, + {286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 14: 286, 47: 286, 102: 286, 286, 106: 286, 470: 286, 3788, 474: 286, 286, 286, 286, 480: 286, 489: 286, 286, 504: 286, 541: 286, 571: 286, 580: 286, 584: 286, 636: 286, 640: 286, 286, 286, 644: 286, 760: 3789, 783: 4488}, + {298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 14: 298, 47: 298, 102: 298, 298, 106: 298, 470: 298, 474: 298, 298, 298, 298, 480: 298, 489: 298, 298, 504: 298, 541: 298, 571: 298, 580: 298, 584: 298, 636: 298, 640: 298, 298, 298, 644: 298}, + {297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 14: 297, 47: 297, 102: 297, 297, 106: 297, 470: 297, 474: 297, 297, 297, 297, 480: 297, 489: 297, 297, 504: 297, 541: 297, 571: 297, 580: 297, 584: 297, 636: 297, 640: 297, 297, 297, 644: 297}, // 1970 - {288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 47: 288, 49: 4472, 469: 288, 473: 288, 288, 288, 288, 479: 288, 488: 288, 288, 570: 288, 579: 288, 581: 288, 591: 288, 621: 288, 640: 288, 288, 736: 4471, 738: 4473, 870: 4474}, - {284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 47: 284, 49: 284, 469: 284, 473: 284, 284, 284, 284, 479: 284, 488: 284, 284, 570: 284, 579: 284, 581: 284, 591: 284, 621: 284, 640: 284, 284, 736: 284, 738: 284}, - {283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 47: 283, 49: 283, 469: 283, 473: 283, 283, 283, 283, 479: 283, 488: 283, 283, 570: 283, 579: 283, 581: 283, 591: 283, 621: 283, 640: 283, 283, 736: 283, 738: 283}, - {282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 47: 282, 49: 282, 469: 282, 473: 282, 282, 282, 282, 479: 282, 488: 282, 282, 570: 282, 579: 282, 581: 282, 591: 282, 621: 282, 640: 282, 282, 736: 282, 738: 282}, - {280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 47: 280, 49: 280, 469: 280, 473: 280, 280, 280, 280, 479: 280, 488: 280, 280, 570: 280, 579: 280, 581: 280, 591: 280, 621: 280, 640: 280, 280, 736: 280, 738: 280}, + {292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 47: 292, 470: 292, 474: 292, 292, 292, 292, 480: 292, 489: 292, 292, 571: 292, 580: 292, 584: 292, 636: 292, 640: 292, 292, 292}, + {286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 47: 286, 470: 286, 3788, 474: 286, 286, 286, 286, 480: 286, 489: 286, 286, 571: 286, 580: 286, 584: 286, 636: 286, 640: 286, 286, 286, 760: 3789, 783: 4487}, + {286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 47: 286, 470: 286, 3788, 474: 286, 286, 286, 286, 480: 286, 489: 286, 286, 571: 286, 580: 286, 584: 286, 636: 286, 640: 286, 286, 286, 760: 3789, 783: 4486}, + {286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 47: 286, 470: 286, 3788, 474: 286, 286, 286, 286, 480: 286, 489: 286, 286, 571: 286, 580: 286, 584: 286, 636: 286, 640: 286, 286, 286, 760: 3789, 783: 4485}, + {286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 47: 286, 49: 286, 470: 286, 3788, 474: 286, 286, 286, 286, 480: 286, 489: 286, 286, 571: 286, 580: 286, 584: 286, 636: 286, 640: 286, 286, 286, 737: 286, 739: 286, 760: 3789, 783: 4479}, // 1975 - {289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 47: 289, 469: 289, 473: 289, 289, 289, 289, 479: 289, 488: 289, 289, 570: 289, 579: 289, 581: 289, 591: 289, 621: 289, 640: 289, 289}, - {290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 47: 290, 469: 290, 473: 290, 290, 290, 290, 479: 290, 488: 290, 290, 570: 290, 579: 290, 581: 290, 591: 290, 621: 290, 640: 290, 290}, - {291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 47: 291, 469: 291, 473: 291, 291, 291, 291, 479: 291, 488: 291, 291, 570: 291, 579: 291, 581: 291, 591: 291, 621: 291, 640: 291, 291}, - {299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 14: 299, 47: 299, 101: 299, 299, 104: 299, 469: 299, 473: 299, 299, 299, 299, 479: 299, 488: 299, 299, 503: 299, 541: 299, 570: 299, 579: 299, 581: 299, 591: 299, 621: 299, 640: 299, 299, 643: 299}, - {304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 47: 304, 469: 304, 473: 304, 304, 304, 304, 479: 304, 488: 304, 304, 570: 304, 579: 304, 581: 304, 591: 304, 621: 304, 640: 304, 304}, + {281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 47: 281, 49: 281, 470: 281, 474: 281, 281, 281, 281, 480: 281, 489: 281, 281, 571: 281, 580: 281, 584: 281, 636: 281, 640: 281, 281, 281, 737: 281, 739: 281, 872: 4480}, + {288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 47: 288, 49: 4482, 470: 288, 474: 288, 288, 288, 288, 480: 288, 489: 288, 288, 571: 288, 580: 288, 584: 288, 636: 288, 640: 288, 288, 288, 737: 4481, 739: 4483, 871: 4484}, + {284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 47: 284, 49: 284, 470: 284, 474: 284, 284, 284, 284, 480: 284, 489: 284, 284, 571: 284, 580: 284, 584: 284, 636: 284, 640: 284, 284, 284, 737: 284, 739: 284}, + {283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 47: 283, 49: 283, 470: 283, 474: 283, 283, 283, 283, 480: 283, 489: 283, 283, 571: 283, 580: 283, 584: 283, 636: 283, 640: 283, 283, 283, 737: 283, 739: 283}, + {282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 47: 282, 49: 282, 470: 282, 474: 282, 282, 282, 282, 480: 282, 489: 282, 282, 571: 282, 580: 282, 584: 282, 636: 282, 640: 282, 282, 282, 737: 282, 739: 282}, // 1980 - {321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 14: 321, 47: 321, 469: 321, 321, 473: 321, 321, 321, 321, 479: 321, 488: 321, 321, 503: 321, 541: 321, 570: 321, 579: 321, 581: 321, 591: 321, 621: 321, 640: 321, 321, 643: 321, 839: 4485}, - {320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 14: 320, 47: 320, 469: 320, 320, 473: 320, 320, 320, 320, 479: 320, 488: 320, 320, 503: 320, 541: 320, 570: 320, 579: 320, 581: 320, 591: 320, 621: 320, 640: 320, 320, 643: 320, 839: 4484}, - {470: 315}, - {470: 314}, - {470: 309}, + {280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 47: 280, 49: 280, 470: 280, 474: 280, 280, 280, 280, 480: 280, 489: 280, 280, 571: 280, 580: 280, 584: 280, 636: 280, 640: 280, 280, 280, 737: 280, 739: 280}, + {289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 47: 289, 470: 289, 474: 289, 289, 289, 289, 480: 289, 489: 289, 289, 571: 289, 580: 289, 584: 289, 636: 289, 640: 289, 289, 289}, + {290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 47: 290, 470: 290, 474: 290, 290, 290, 290, 480: 290, 489: 290, 290, 571: 290, 580: 290, 584: 290, 636: 290, 640: 290, 290, 290}, + {291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 47: 291, 470: 291, 474: 291, 291, 291, 291, 480: 291, 489: 291, 291, 571: 291, 580: 291, 584: 291, 636: 291, 640: 291, 291, 291}, + {299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 14: 299, 47: 299, 102: 299, 299, 106: 299, 470: 299, 474: 299, 299, 299, 299, 480: 299, 489: 299, 299, 504: 299, 541: 299, 571: 299, 580: 299, 584: 299, 636: 299, 640: 299, 299, 299, 644: 299}, // 1985 - {470: 310}, - {470: 312}, - {470: 311}, - {470: 308}, - {318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 14: 318, 47: 318, 101: 318, 318, 104: 318, 469: 318, 318, 473: 318, 318, 318, 318, 479: 318, 488: 318, 318, 503: 318, 541: 318, 570: 318, 579: 318, 581: 318, 591: 318, 621: 318, 640: 318, 318, 643: 318}, + {304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 47: 304, 470: 304, 474: 304, 304, 304, 304, 480: 304, 489: 304, 304, 571: 304, 580: 304, 584: 304, 636: 304, 640: 304, 304, 304}, + {321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 14: 321, 47: 321, 470: 321, 321, 474: 321, 321, 321, 321, 480: 321, 489: 321, 321, 504: 321, 541: 321, 571: 321, 580: 321, 584: 321, 636: 321, 640: 321, 321, 321, 644: 321, 840: 4495}, + {320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 14: 320, 47: 320, 470: 320, 320, 474: 320, 320, 320, 320, 480: 320, 489: 320, 320, 504: 320, 541: 320, 571: 320, 580: 320, 584: 320, 636: 320, 640: 320, 320, 320, 644: 320, 840: 4494}, + {471: 315}, + {471: 314}, // 1990 - {319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 14: 319, 47: 319, 101: 319, 319, 104: 319, 469: 319, 319, 473: 319, 319, 319, 319, 479: 319, 488: 319, 319, 503: 319, 541: 319, 570: 319, 579: 319, 581: 319, 591: 319, 621: 319, 640: 319, 319, 643: 319}, - {273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 14: 3790, 47: 273, 101: 4497, 4499, 104: 4498, 469: 273, 473: 273, 273, 273, 273, 479: 273, 488: 273, 273, 503: 3791, 541: 3787, 570: 273, 579: 273, 581: 273, 591: 273, 621: 273, 640: 273, 273, 643: 3789, 769: 3788, 794: 4496, 879: 4500}, - {325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 47: 325, 469: 325, 473: 325, 325, 325, 325, 479: 325, 488: 325, 325, 570: 325, 579: 325, 581: 325, 591: 325, 621: 325, 640: 325, 325}, - {501: 3793, 839: 4490}, - {501: 3792, 839: 4489}, + {471: 309}, + {471: 310}, + {471: 312}, + {471: 311}, + {471: 308}, // 1995 - {301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 47: 301, 469: 301, 473: 301, 301, 301, 301, 479: 301, 488: 301, 301, 570: 301, 579: 301, 581: 301, 591: 301, 621: 301, 640: 301, 301}, - {296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 47: 296, 469: 296, 473: 296, 296, 296, 296, 479: 296, 488: 296, 296, 570: 296, 579: 296, 581: 296, 591: 296, 621: 296, 640: 296, 296}, - {295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 47: 295, 469: 295, 473: 295, 295, 295, 295, 479: 295, 488: 295, 295, 570: 295, 579: 295, 581: 295, 591: 295, 621: 295, 640: 295, 295}, - {294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 47: 294, 469: 294, 473: 294, 294, 294, 294, 479: 294, 488: 294, 294, 570: 294, 579: 294, 581: 294, 591: 294, 621: 294, 640: 294, 294}, - {293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 47: 293, 469: 293, 473: 293, 293, 293, 293, 479: 293, 488: 293, 293, 570: 293, 579: 293, 581: 293, 591: 293, 621: 293, 640: 293, 293}, + {318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 14: 318, 47: 318, 102: 318, 318, 106: 318, 470: 318, 318, 474: 318, 318, 318, 318, 480: 318, 489: 318, 318, 504: 318, 541: 318, 571: 318, 580: 318, 584: 318, 636: 318, 640: 318, 318, 318, 644: 318}, + {319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 14: 319, 47: 319, 102: 319, 319, 106: 319, 470: 319, 319, 474: 319, 319, 319, 319, 480: 319, 489: 319, 319, 504: 319, 541: 319, 571: 319, 580: 319, 584: 319, 636: 319, 640: 319, 319, 319, 644: 319}, + {273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 14: 3798, 47: 273, 102: 4507, 4509, 106: 4508, 470: 273, 474: 273, 273, 273, 273, 480: 273, 489: 273, 273, 504: 3799, 541: 3795, 571: 273, 580: 273, 584: 273, 636: 273, 640: 273, 273, 273, 644: 3797, 770: 3796, 795: 4506, 880: 4510}, + {325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 47: 325, 470: 325, 474: 325, 325, 325, 325, 480: 325, 489: 325, 325, 571: 325, 580: 325, 584: 325, 636: 325, 640: 325, 325, 325}, + {502: 3801, 840: 4500}, // 2000 - {326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 47: 326, 469: 326, 473: 326, 326, 326, 326, 479: 326, 488: 326, 326, 570: 326, 579: 326, 581: 326, 591: 326, 621: 326, 640: 326, 326}, - {472: 4503, 574: 4504, 577: 4505, 965: 4506, 1145: 4502}, - {7: 4508, 47: 4507}, + {502: 3800, 840: 4499}, + {301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 47: 301, 470: 301, 474: 301, 301, 301, 301, 480: 301, 489: 301, 301, 571: 301, 580: 301, 584: 301, 636: 301, 640: 301, 301, 301}, + {296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 47: 296, 470: 296, 474: 296, 296, 296, 296, 480: 296, 489: 296, 296, 571: 296, 580: 296, 584: 296, 636: 296, 640: 296, 296, 296}, + {295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 47: 295, 470: 295, 474: 295, 295, 295, 295, 480: 295, 489: 295, 295, 571: 295, 580: 295, 584: 295, 636: 295, 640: 295, 295, 295}, + {294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 47: 294, 470: 294, 474: 294, 294, 294, 294, 480: 294, 489: 294, 294, 571: 294, 580: 294, 584: 294, 636: 294, 640: 294, 294, 294}, + // 2005 + {293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 47: 293, 470: 293, 474: 293, 293, 293, 293, 480: 293, 489: 293, 293, 571: 293, 580: 293, 584: 293, 636: 293, 640: 293, 293, 293}, + {326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 47: 326, 470: 326, 474: 326, 326, 326, 326, 480: 326, 489: 326, 326, 571: 326, 580: 326, 584: 326, 636: 326, 640: 326, 326, 326}, + {473: 4513, 575: 4514, 578: 4515, 966: 4516, 1146: 4512}, + {7: 4518, 47: 4517}, {7: 261, 47: 261}, + // 2010 {7: 260, 47: 260}, - // 2005 {7: 259, 47: 259}, {7: 258, 47: 258}, - {273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 14: 3790, 47: 273, 101: 4497, 4499, 104: 4498, 469: 273, 473: 273, 273, 273, 273, 479: 273, 488: 273, 273, 503: 3791, 541: 3787, 570: 273, 579: 273, 581: 273, 591: 273, 621: 273, 640: 273, 273, 643: 3789, 769: 3788, 794: 4496, 879: 4510}, - {472: 4503, 574: 4504, 577: 4505, 965: 4509}, - {7: 257, 47: 257}, - // 2010 - {328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 47: 328, 469: 328, 473: 328, 328, 328, 328, 479: 328, 488: 328, 328, 570: 328, 579: 328, 581: 328, 591: 328, 621: 328, 640: 328, 328}, - {472: 4503, 574: 4504, 577: 4505, 965: 4506, 1145: 4512}, - {7: 4508, 47: 4513}, - {273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 14: 3790, 47: 273, 101: 4497, 4499, 104: 4498, 469: 273, 473: 273, 273, 273, 273, 479: 273, 488: 273, 273, 503: 3791, 541: 3787, 570: 273, 579: 273, 581: 273, 591: 273, 621: 273, 640: 273, 273, 643: 3789, 769: 3788, 794: 4496, 879: 4514}, - {329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 47: 329, 469: 329, 473: 329, 329, 329, 329, 479: 329, 488: 329, 329, 570: 329, 579: 329, 581: 329, 591: 329, 621: 329, 640: 329, 329}, + {273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 14: 3798, 47: 273, 102: 4507, 4509, 106: 4508, 470: 273, 474: 273, 273, 273, 273, 480: 273, 489: 273, 273, 504: 3799, 541: 3795, 571: 273, 580: 273, 584: 273, 636: 273, 640: 273, 273, 273, 644: 3797, 770: 3796, 795: 4506, 880: 4520}, + {473: 4513, 575: 4514, 578: 4515, 966: 4519}, // 2015 - {330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 47: 330, 469: 330, 473: 330, 330, 330, 330, 479: 330, 488: 330, 330, 570: 330, 579: 330, 581: 330, 591: 330, 621: 330, 640: 330, 330}, - {332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 47: 332, 469: 332, 473: 332, 332, 332, 332, 479: 332, 488: 332, 332, 570: 332, 579: 332, 581: 332, 591: 332, 621: 332, 640: 332, 332}, - {333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 47: 333, 469: 333, 473: 333, 333, 333, 333, 479: 333, 488: 333, 333, 570: 333, 579: 333, 581: 333, 591: 333, 621: 333, 640: 333, 333}, - {273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 14: 3790, 47: 273, 469: 273, 473: 273, 273, 273, 273, 479: 273, 488: 273, 273, 503: 3791, 541: 3787, 570: 273, 579: 273, 581: 273, 591: 273, 621: 273, 640: 273, 273, 643: 3789, 769: 3788, 794: 4519}, - {334, 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, 47: 334, 469: 334, 473: 334, 334, 334, 334, 479: 334, 488: 334, 334, 570: 334, 579: 334, 581: 334, 591: 334, 621: 334, 640: 334, 334}, + {7: 257, 47: 257}, + {328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 47: 328, 470: 328, 474: 328, 328, 328, 328, 480: 328, 489: 328, 328, 571: 328, 580: 328, 584: 328, 636: 328, 640: 328, 328, 328}, + {473: 4513, 575: 4514, 578: 4515, 966: 4516, 1146: 4522}, + {7: 4518, 47: 4523}, + {273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 14: 3798, 47: 273, 102: 4507, 4509, 106: 4508, 470: 273, 474: 273, 273, 273, 273, 480: 273, 489: 273, 273, 504: 3799, 541: 3795, 571: 273, 580: 273, 584: 273, 636: 273, 640: 273, 273, 273, 644: 3797, 770: 3796, 795: 4506, 880: 4524}, // 2020 - {273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 14: 3790, 47: 273, 469: 273, 473: 273, 273, 273, 273, 479: 273, 488: 273, 273, 503: 3791, 541: 3787, 570: 273, 579: 273, 581: 273, 591: 273, 621: 273, 640: 273, 273, 643: 3789, 769: 3788, 794: 4521}, - {335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 47: 335, 469: 335, 473: 335, 335, 335, 335, 479: 335, 488: 335, 335, 570: 335, 579: 335, 581: 335, 591: 335, 621: 335, 640: 335, 335}, - {273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 14: 3790, 47: 273, 469: 273, 473: 273, 273, 273, 273, 479: 273, 488: 273, 273, 503: 3791, 541: 3787, 570: 273, 579: 273, 581: 273, 591: 273, 621: 273, 640: 273, 273, 643: 3789, 769: 3788, 794: 4524}, - {336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 47: 336, 469: 336, 473: 336, 336, 336, 336, 479: 336, 488: 336, 336, 570: 336, 579: 336, 581: 336, 591: 336, 621: 336, 640: 336, 336}, - {337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 47: 337, 469: 337, 473: 337, 337, 337, 337, 479: 337, 488: 337, 337, 570: 337, 579: 337, 581: 337, 591: 337, 621: 337, 640: 337, 337}, + {329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 47: 329, 470: 329, 474: 329, 329, 329, 329, 480: 329, 489: 329, 329, 571: 329, 580: 329, 584: 329, 636: 329, 640: 329, 329, 329}, + {330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 47: 330, 470: 330, 474: 330, 330, 330, 330, 480: 330, 489: 330, 330, 571: 330, 580: 330, 584: 330, 636: 330, 640: 330, 330, 330}, + {332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 47: 332, 470: 332, 474: 332, 332, 332, 332, 480: 332, 489: 332, 332, 571: 332, 580: 332, 584: 332, 636: 332, 640: 332, 332, 332}, + {333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 47: 333, 470: 333, 474: 333, 333, 333, 333, 480: 333, 489: 333, 333, 571: 333, 580: 333, 584: 333, 636: 333, 640: 333, 333, 333}, + {273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 14: 3798, 47: 273, 470: 273, 474: 273, 273, 273, 273, 480: 273, 489: 273, 273, 504: 3799, 541: 3795, 571: 273, 580: 273, 584: 273, 636: 273, 640: 273, 273, 273, 644: 3797, 770: 3796, 795: 4529}, // 2025 - {273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 14: 3790, 47: 273, 469: 273, 473: 273, 273, 273, 273, 479: 273, 488: 273, 273, 503: 3791, 541: 3787, 570: 273, 579: 273, 581: 273, 591: 273, 621: 273, 640: 273, 273, 643: 3789, 769: 3788, 794: 4527}, - {338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 47: 338, 469: 338, 473: 338, 338, 338, 338, 479: 338, 488: 338, 338, 570: 338, 579: 338, 581: 338, 591: 338, 621: 338, 640: 338, 338}, - {339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 47: 339, 469: 339, 473: 339, 339, 339, 339, 479: 339, 488: 339, 339, 570: 339, 579: 339, 581: 339, 591: 339, 621: 339, 640: 339, 339}, - {341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 47: 341, 49: 341, 469: 341, 341, 473: 341, 341, 341, 341, 479: 341, 488: 341, 341, 570: 341, 579: 341, 581: 341, 591: 341, 621: 341, 640: 341, 341, 736: 341, 738: 341}, - {364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 47: 364, 469: 364, 473: 364, 364, 364, 364, 479: 364, 488: 364, 364, 570: 364, 579: 364, 581: 364, 591: 364, 621: 364, 640: 364, 364}, + {334, 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, 47: 334, 470: 334, 474: 334, 334, 334, 334, 480: 334, 489: 334, 334, 571: 334, 580: 334, 584: 334, 636: 334, 640: 334, 334, 334}, + {273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 14: 3798, 47: 273, 470: 273, 474: 273, 273, 273, 273, 480: 273, 489: 273, 273, 504: 3799, 541: 3795, 571: 273, 580: 273, 584: 273, 636: 273, 640: 273, 273, 273, 644: 3797, 770: 3796, 795: 4531}, + {335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 47: 335, 470: 335, 474: 335, 335, 335, 335, 480: 335, 489: 335, 335, 571: 335, 580: 335, 584: 335, 636: 335, 640: 335, 335, 335}, + {273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 14: 3798, 47: 273, 470: 273, 474: 273, 273, 273, 273, 480: 273, 489: 273, 273, 504: 3799, 541: 3795, 571: 273, 580: 273, 584: 273, 636: 273, 640: 273, 273, 273, 644: 3797, 770: 3796, 795: 4534}, + {336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 47: 336, 470: 336, 474: 336, 336, 336, 336, 480: 336, 489: 336, 336, 571: 336, 580: 336, 584: 336, 636: 336, 640: 336, 336, 336}, // 2030 - {281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 47: 281, 49: 281, 469: 281, 473: 281, 281, 281, 281, 479: 281, 488: 281, 281, 570: 281, 579: 281, 581: 281, 591: 281, 621: 281, 640: 281, 281, 736: 281, 738: 281, 871: 4531}, - {365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 47: 365, 49: 4472, 469: 365, 473: 365, 365, 365, 365, 479: 365, 488: 365, 365, 570: 365, 579: 365, 581: 365, 591: 365, 621: 365, 640: 365, 365, 736: 4471, 738: 4473, 870: 4474}, - {281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 47: 281, 49: 281, 469: 281, 473: 281, 281, 281, 281, 479: 281, 488: 281, 281, 570: 281, 579: 281, 581: 281, 591: 281, 621: 281, 640: 281, 281, 736: 281, 738: 281, 871: 4533}, - {366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 47: 366, 49: 4472, 469: 366, 473: 366, 366, 366, 366, 479: 366, 488: 366, 366, 570: 366, 579: 366, 581: 366, 591: 366, 621: 366, 640: 366, 366, 736: 4471, 738: 4473, 870: 4474}, - {367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 47: 367, 49: 4472, 469: 367, 473: 367, 367, 367, 367, 479: 367, 488: 367, 367, 570: 367, 579: 367, 581: 367, 591: 367, 621: 367, 640: 367, 367, 736: 4471, 738: 4473, 870: 4474}, + {337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 47: 337, 470: 337, 474: 337, 337, 337, 337, 480: 337, 489: 337, 337, 571: 337, 580: 337, 584: 337, 636: 337, 640: 337, 337, 337}, + {273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 14: 3798, 47: 273, 470: 273, 474: 273, 273, 273, 273, 480: 273, 489: 273, 273, 504: 3799, 541: 3795, 571: 273, 580: 273, 584: 273, 636: 273, 640: 273, 273, 273, 644: 3797, 770: 3796, 795: 4537}, + {338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 47: 338, 470: 338, 474: 338, 338, 338, 338, 480: 338, 489: 338, 338, 571: 338, 580: 338, 584: 338, 636: 338, 640: 338, 338, 338}, + {339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 47: 339, 470: 339, 474: 339, 339, 339, 339, 480: 339, 489: 339, 339, 571: 339, 580: 339, 584: 339, 636: 339, 640: 339, 339, 339}, + {341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 47: 341, 49: 341, 470: 341, 341, 474: 341, 341, 341, 341, 480: 341, 489: 341, 341, 571: 341, 580: 341, 584: 341, 636: 341, 640: 341, 341, 341, 737: 341, 739: 341}, // 2035 - {281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 47: 281, 49: 281, 469: 281, 473: 281, 281, 281, 281, 479: 281, 488: 281, 281, 570: 281, 579: 281, 581: 281, 591: 281, 621: 281, 640: 281, 281, 736: 281, 738: 281, 871: 4536}, - {368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 47: 368, 49: 4472, 469: 368, 473: 368, 368, 368, 368, 479: 368, 488: 368, 368, 570: 368, 579: 368, 581: 368, 591: 368, 621: 368, 640: 368, 368, 736: 4471, 738: 4473, 870: 4474}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 570: 2375, 579: 2375, 581: 2375, 591: 2375, 645: 2375, 659: 4670, 2723, 2724, 2722, 671: 2375, 2375, 1138: 4669}, - {2309, 2309, 2309, 2309, 7: 2309, 2309, 2309, 47: 2309, 488: 2309}, - {570: 2286}, + {364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 47: 364, 470: 364, 474: 364, 364, 364, 364, 480: 364, 489: 364, 364, 571: 364, 580: 364, 584: 364, 636: 364, 640: 364, 364, 364}, + {281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 47: 281, 49: 281, 470: 281, 474: 281, 281, 281, 281, 480: 281, 489: 281, 281, 571: 281, 580: 281, 584: 281, 636: 281, 640: 281, 281, 281, 737: 281, 739: 281, 872: 4541}, + {365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 47: 365, 49: 4482, 470: 365, 474: 365, 365, 365, 365, 480: 365, 489: 365, 365, 571: 365, 580: 365, 584: 365, 636: 365, 640: 365, 365, 365, 737: 4481, 739: 4483, 871: 4484}, + {281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 47: 281, 49: 281, 470: 281, 474: 281, 281, 281, 281, 480: 281, 489: 281, 281, 571: 281, 580: 281, 584: 281, 636: 281, 640: 281, 281, 281, 737: 281, 739: 281, 872: 4543}, + {366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 47: 366, 49: 4482, 470: 366, 474: 366, 366, 366, 366, 480: 366, 489: 366, 366, 571: 366, 580: 366, 584: 366, 636: 366, 640: 366, 366, 366, 737: 4481, 739: 4483, 871: 4484}, // 2040 - {489: 4668}, - {2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 47: 2276, 469: 2276, 473: 2276, 2276, 2276, 2276, 479: 2276, 488: 2276, 2276, 570: 2276, 579: 2276, 581: 2276, 591: 2276, 621: 2276, 640: 2276, 2276}, - {2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 47: 2275, 469: 2275, 473: 2275, 2275, 2275, 2275, 479: 2275, 488: 2275, 2275, 570: 2275, 579: 2275, 581: 2275, 591: 2275, 621: 2275, 640: 2275, 2275}, - {570: 4664}, - {2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 47: 2272, 469: 2272, 473: 2272, 2272, 2272, 2272, 479: 2272, 488: 2272, 2272, 570: 4663, 579: 2272, 581: 2272, 591: 2272, 621: 2272, 640: 2272, 2272}, + {367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 47: 367, 49: 4482, 470: 367, 474: 367, 367, 367, 367, 480: 367, 489: 367, 367, 571: 367, 580: 367, 584: 367, 636: 367, 640: 367, 367, 367, 737: 4481, 739: 4483, 871: 4484}, + {281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 47: 281, 49: 281, 470: 281, 474: 281, 281, 281, 281, 480: 281, 489: 281, 281, 571: 281, 580: 281, 584: 281, 636: 281, 640: 281, 281, 281, 737: 281, 739: 281, 872: 4546}, + {368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 47: 368, 49: 4482, 470: 368, 474: 368, 368, 368, 368, 480: 368, 489: 368, 368, 571: 368, 580: 368, 584: 368, 636: 368, 640: 368, 368, 368, 737: 4481, 739: 4483, 871: 4484}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 571: 2379, 580: 2379, 584: 2379, 636: 2379, 646: 2379, 660: 4680, 2727, 2728, 2726, 672: 2379, 2379, 1139: 4679}, + {2313, 2313, 2313, 2313, 7: 2313, 2313, 2313, 47: 2313, 489: 2313}, // 2045 - {149: 4651, 265: 4653, 359: 4654, 470: 4650, 472: 3197, 482: 4393, 4392, 489: 3188, 505: 3192, 568: 3187, 3189, 571: 3191, 3190, 574: 3195, 577: 3196, 585: 4638, 4635, 588: 4636, 4637, 3194, 708: 4391, 3193, 4648, 941: 4633, 4634, 4652, 991: 4649, 1076: 4646, 1128: 4647, 1196: 4645}, - {476: 4643}, - {650: 4631}, - {472: 4630}, - {579: 4621}, + {571: 2290}, + {490: 4678}, + {2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 47: 2280, 470: 2280, 474: 2280, 2280, 2280, 2280, 480: 2280, 489: 2280, 2280, 571: 2280, 580: 2280, 584: 2280, 636: 2280, 640: 2280, 2280, 2280}, + {2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 47: 2279, 470: 2279, 474: 2279, 2279, 2279, 2279, 480: 2279, 489: 2279, 2279, 571: 2279, 580: 2279, 584: 2279, 636: 2279, 640: 2279, 2279, 2279}, + {571: 4674}, // 2050 - {475: 4614}, - {2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 47: 2264, 469: 2264, 473: 2264, 2264, 2264, 2264, 479: 2264, 488: 2264, 2264, 570: 2264, 579: 2264, 581: 2264, 591: 2264, 621: 2264, 640: 2264, 2264}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 3446, 541: 3445, 659: 3447, 2723, 2724, 2722, 734: 3444, 867: 4613}, - {175: 4611, 199: 4612, 476: 4610, 1181: 4609}, - {180: 4608, 242: 4607, 476: 4606, 1299: 4605}, + {2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 47: 2276, 470: 2276, 474: 2276, 2276, 2276, 2276, 480: 2276, 489: 2276, 2276, 571: 4673, 580: 2276, 584: 2276, 636: 2276, 640: 2276, 2276, 2276}, + {149: 4661, 265: 4663, 359: 4664, 471: 4660, 473: 3202, 483: 4402, 4403, 490: 3193, 506: 3197, 569: 3192, 3194, 572: 3196, 3195, 575: 3200, 578: 3201, 586: 4648, 4645, 589: 4646, 4647, 3199, 709: 4401, 3198, 4658, 942: 4643, 4644, 4662, 992: 4659, 1077: 4656, 1129: 4657, 1197: 4655}, + {477: 4653}, + {651: 4641}, + {473: 4640}, // 2055 - {286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 47: 286, 469: 286, 3780, 473: 286, 286, 286, 286, 479: 286, 488: 286, 286, 570: 286, 579: 286, 581: 286, 591: 286, 621: 286, 640: 286, 286, 759: 3781, 782: 4604}, - {307: 4603}, - {2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 47: 2248, 469: 2248, 473: 2248, 2248, 2248, 2248, 479: 2248, 488: 2248, 2248, 570: 2248, 579: 2248, 581: 2248, 591: 2248, 621: 2248, 640: 2248, 2248}, - {2245, 2245, 2245, 2245, 4548, 4554, 4542, 2245, 2245, 2245, 4546, 4555, 4553, 47: 2245, 469: 4547, 473: 4041, 4040, 2253, 4545, 479: 4552, 488: 2245, 4541, 570: 2287, 579: 2376, 581: 4539, 591: 4544, 621: 4537, 640: 4559, 4556, 806: 4540, 828: 4549, 905: 4551, 923: 4602, 932: 4550, 951: 4543}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3875, 2723, 2724, 2722, 733: 4560}, + {580: 4631}, + {476: 4624}, + {2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 47: 2268, 470: 2268, 474: 2268, 2268, 2268, 2268, 480: 2268, 489: 2268, 2268, 571: 2268, 580: 2268, 584: 2268, 636: 2268, 640: 2268, 2268, 2268}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 3452, 541: 3451, 660: 3453, 2727, 2728, 2726, 735: 3450, 868: 4623}, + {175: 4621, 199: 4622, 477: 4620, 1182: 4619}, // 2060 - {2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 47: 2185, 469: 2185, 4562, 473: 2185, 2185, 2185, 2185, 479: 2185, 488: 2185, 2185, 570: 2185, 579: 2185, 581: 2185, 591: 2185, 621: 2185, 640: 2185, 2185, 644: 2185, 1224: 4561}, - {2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 47: 2235, 469: 2235, 473: 2235, 2235, 2235, 2235, 479: 2235, 488: 2235, 2235, 570: 2235, 579: 2235, 581: 2235, 591: 2235, 621: 2235, 640: 2235, 2235, 644: 4577, 1240: 4578, 4579}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 470: 4566, 659: 4095, 2723, 2724, 2722, 739: 4565, 822: 4564, 831: 4563}, - {7: 4575, 47: 4574}, - {7: 2183, 47: 2183}, + {180: 4618, 242: 4617, 477: 4616, 1300: 4615}, + {286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 47: 286, 470: 286, 3788, 474: 286, 286, 286, 286, 480: 286, 489: 286, 286, 571: 286, 580: 286, 584: 286, 636: 286, 640: 286, 286, 286, 760: 3789, 783: 4614}, + {307: 4613}, + {2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 47: 2252, 470: 2252, 474: 2252, 2252, 2252, 2252, 480: 2252, 489: 2252, 2252, 571: 2252, 580: 2252, 584: 2252, 636: 2252, 640: 2252, 2252, 2252}, + {2249, 2249, 2249, 2249, 4558, 4564, 4552, 2249, 2249, 2249, 4556, 4565, 4563, 47: 2249, 470: 4557, 474: 4051, 4050, 2257, 4555, 480: 4562, 489: 2249, 4551, 571: 2291, 580: 2380, 584: 4549, 636: 4554, 640: 4547, 4569, 4566, 807: 4550, 829: 4559, 906: 4561, 924: 4612, 933: 4560, 952: 4553}, // 2065 - {7: 286, 47: 286, 470: 3780, 526: 286, 286, 759: 3781, 782: 4572}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 4567}, - {47: 4568, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, - {7: 1287, 47: 1287, 526: 4571, 4570, 944: 4569}, - {7: 2180, 47: 2180}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3883, 2727, 2728, 2726, 734: 4570}, + {2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 47: 2189, 470: 2189, 4572, 474: 2189, 2189, 2189, 2189, 480: 2189, 489: 2189, 2189, 571: 2189, 580: 2189, 584: 2189, 636: 2189, 640: 2189, 2189, 2189, 645: 2189, 1225: 4571}, + {2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 47: 2239, 470: 2239, 474: 2239, 2239, 2239, 2239, 480: 2239, 489: 2239, 2239, 571: 2239, 580: 2239, 584: 2239, 636: 2239, 640: 2239, 2239, 2239, 645: 4587, 1241: 4588, 4589}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 471: 4576, 660: 4105, 2727, 2728, 2726, 740: 4575, 824: 4574, 832: 4573}, + {7: 4585, 47: 4584}, // 2070 - {1286, 1286, 1286, 1286, 7: 1286, 47: 1286, 488: 1286}, - {1285, 1285, 1285, 1285, 7: 1285, 47: 1285, 488: 1285}, - {7: 1287, 47: 1287, 526: 4571, 4570, 944: 4573}, - {7: 2181, 47: 2181}, - {2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 47: 2184, 469: 2184, 473: 2184, 2184, 2184, 2184, 479: 2184, 488: 2184, 2184, 570: 2184, 579: 2184, 581: 2184, 591: 2184, 621: 2184, 640: 2184, 2184, 644: 2184}, + {7: 2187, 47: 2187}, + {7: 286, 47: 286, 471: 3788, 527: 286, 286, 760: 3789, 783: 4582}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 4577}, + {47: 4578, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {7: 1290, 47: 1290, 527: 4581, 4580, 945: 4579}, // 2075 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 470: 4566, 659: 4095, 2723, 2724, 2722, 739: 4565, 822: 4576}, - {7: 2182, 47: 2182}, - {203: 4599, 366: 4600, 383: 4601}, - {2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 47: 2234, 469: 2234, 473: 2234, 2234, 2234, 2234, 479: 2234, 488: 2234, 2234, 570: 2234, 579: 2234, 581: 2234, 591: 2234, 621: 2234, 640: 2234, 2234}, - {2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 47: 2230, 469: 4581, 473: 2230, 2230, 2230, 2230, 479: 2230, 488: 2230, 2230, 570: 2230, 579: 2230, 581: 2230, 591: 2230, 621: 2230, 640: 2230, 2230, 1082: 4582, 4583, 1247: 4580}, + {7: 2184, 47: 2184}, + {1289, 1289, 1289, 1289, 7: 1289, 47: 1289, 489: 1289}, + {1288, 1288, 1288, 1288, 7: 1288, 47: 1288, 489: 1288}, + {7: 1290, 47: 1290, 527: 4581, 4580, 945: 4583}, + {7: 2185, 47: 2185}, // 2080 - {2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 47: 2233, 469: 2233, 473: 2233, 2233, 2233, 2233, 479: 2233, 488: 2233, 2233, 570: 2233, 579: 2233, 581: 2233, 591: 2233, 621: 2233, 640: 2233, 2233}, - {650: 4597, 735: 4586}, - {2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 47: 2229, 469: 4595, 473: 2229, 2229, 2229, 2229, 479: 2229, 488: 2229, 2229, 570: 2229, 579: 2229, 581: 2229, 591: 2229, 621: 2229, 640: 2229, 2229, 1083: 4596}, - {2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 47: 2228, 469: 4584, 473: 2228, 2228, 2228, 2228, 479: 2228, 488: 2228, 2228, 570: 2228, 579: 2228, 581: 2228, 591: 2228, 621: 2228, 640: 2228, 2228, 1082: 4585}, - {735: 4586}, + {2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 47: 2188, 470: 2188, 474: 2188, 2188, 2188, 2188, 480: 2188, 489: 2188, 2188, 571: 2188, 580: 2188, 584: 2188, 636: 2188, 640: 2188, 2188, 2188, 645: 2188}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 471: 4576, 660: 4105, 2727, 2728, 2726, 740: 4575, 824: 4586}, + {7: 2186, 47: 2186}, + {203: 4609, 366: 4610, 384: 4611}, + {2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 47: 2238, 470: 2238, 474: 2238, 2238, 2238, 2238, 480: 2238, 489: 2238, 2238, 571: 2238, 580: 2238, 584: 2238, 636: 2238, 640: 2238, 2238, 2238}, // 2085 - {2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 47: 2226, 469: 2226, 473: 2226, 2226, 2226, 2226, 479: 2226, 488: 2226, 2226, 570: 2226, 579: 2226, 581: 2226, 591: 2226, 621: 2226, 640: 2226, 2226}, - {70: 4591, 501: 4590, 666: 4589, 668: 4588, 1105: 4587}, - {2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 47: 2232, 469: 2232, 473: 2232, 2232, 2232, 2232, 479: 2232, 488: 2232, 2232, 570: 2232, 579: 2232, 581: 2232, 591: 2232, 621: 2232, 640: 2232, 2232}, - {2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 47: 2225, 469: 2225, 473: 2225, 2225, 2225, 2225, 479: 2225, 488: 2225, 2225, 570: 2225, 579: 2225, 581: 2225, 591: 2225, 621: 2225, 640: 2225, 2225}, - {2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 47: 2224, 469: 2224, 473: 2224, 2224, 2224, 2224, 479: 2224, 488: 2224, 2224, 570: 2224, 579: 2224, 581: 2224, 591: 2224, 621: 2224, 640: 2224, 2224}, + {2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 47: 2234, 470: 4591, 474: 2234, 2234, 2234, 2234, 480: 2234, 489: 2234, 2234, 571: 2234, 580: 2234, 584: 2234, 636: 2234, 640: 2234, 2234, 2234, 1083: 4592, 4593, 1248: 4590}, + {2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 47: 2237, 470: 2237, 474: 2237, 2237, 2237, 2237, 480: 2237, 489: 2237, 2237, 571: 2237, 580: 2237, 584: 2237, 636: 2237, 640: 2237, 2237, 2237}, + {651: 4607, 736: 4596}, + {2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, 47: 2233, 470: 4605, 474: 2233, 2233, 2233, 2233, 480: 2233, 489: 2233, 2233, 571: 2233, 580: 2233, 584: 2233, 636: 2233, 640: 2233, 2233, 2233, 1084: 4606}, + {2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 47: 2232, 470: 4594, 474: 2232, 2232, 2232, 2232, 480: 2232, 489: 2232, 2232, 571: 2232, 580: 2232, 584: 2232, 636: 2232, 640: 2232, 2232, 2232, 1083: 4595}, // 2090 - {476: 4594, 489: 4593}, - {303: 4592}, - {2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 47: 2222, 469: 2222, 473: 2222, 2222, 2222, 2222, 479: 2222, 488: 2222, 2222, 570: 2222, 579: 2222, 581: 2222, 591: 2222, 621: 2222, 640: 2222, 2222}, - {2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 47: 2223, 469: 2223, 473: 2223, 2223, 2223, 2223, 479: 2223, 488: 2223, 2223, 570: 2223, 579: 2223, 581: 2223, 591: 2223, 621: 2223, 640: 2223, 2223}, - {2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 47: 2221, 469: 2221, 473: 2221, 2221, 2221, 2221, 479: 2221, 488: 2221, 2221, 570: 2221, 579: 2221, 581: 2221, 591: 2221, 621: 2221, 640: 2221, 2221}, + {736: 4596}, + {2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 47: 2230, 470: 2230, 474: 2230, 2230, 2230, 2230, 480: 2230, 489: 2230, 2230, 571: 2230, 580: 2230, 584: 2230, 636: 2230, 640: 2230, 2230, 2230}, + {70: 4601, 502: 4600, 667: 4599, 669: 4598, 1106: 4597}, + {2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 47: 2236, 470: 2236, 474: 2236, 2236, 2236, 2236, 480: 2236, 489: 2236, 2236, 571: 2236, 580: 2236, 584: 2236, 636: 2236, 640: 2236, 2236, 2236}, + {2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 47: 2229, 470: 2229, 474: 2229, 2229, 2229, 2229, 480: 2229, 489: 2229, 2229, 571: 2229, 580: 2229, 584: 2229, 636: 2229, 640: 2229, 2229, 2229}, // 2095 - {650: 4597}, - {2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 47: 2227, 469: 2227, 473: 2227, 2227, 2227, 2227, 479: 2227, 488: 2227, 2227, 570: 2227, 579: 2227, 581: 2227, 591: 2227, 621: 2227, 640: 2227, 2227}, - {70: 4591, 501: 4590, 666: 4589, 668: 4588, 1105: 4598}, - {2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 47: 2231, 469: 2231, 473: 2231, 2231, 2231, 2231, 479: 2231, 488: 2231, 2231, 570: 2231, 579: 2231, 581: 2231, 591: 2231, 621: 2231, 640: 2231, 2231}, - {2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 47: 2238, 469: 2238, 473: 2238, 2238, 2238, 2238, 479: 2238, 488: 2238, 2238, 570: 2238, 579: 2238, 581: 2238, 591: 2238, 621: 2238, 640: 2238, 2238}, + {2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 47: 2228, 470: 2228, 474: 2228, 2228, 2228, 2228, 480: 2228, 489: 2228, 2228, 571: 2228, 580: 2228, 584: 2228, 636: 2228, 640: 2228, 2228, 2228}, + {477: 4604, 490: 4603}, + {303: 4602}, + {2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 47: 2226, 470: 2226, 474: 2226, 2226, 2226, 2226, 480: 2226, 489: 2226, 2226, 571: 2226, 580: 2226, 584: 2226, 636: 2226, 640: 2226, 2226, 2226}, + {2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 47: 2227, 470: 2227, 474: 2227, 2227, 2227, 2227, 480: 2227, 489: 2227, 2227, 571: 2227, 580: 2227, 584: 2227, 636: 2227, 640: 2227, 2227, 2227}, // 2100 - {2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 47: 2237, 469: 2237, 473: 2237, 2237, 2237, 2237, 479: 2237, 488: 2237, 2237, 570: 2237, 579: 2237, 581: 2237, 591: 2237, 621: 2237, 640: 2237, 2237}, - {2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 47: 2236, 469: 2236, 473: 2236, 2236, 2236, 2236, 479: 2236, 488: 2236, 2236, 570: 2236, 579: 2236, 581: 2236, 591: 2236, 621: 2236, 640: 2236, 2236}, - {2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 47: 2247, 469: 2247, 473: 2247, 2247, 2247, 2247, 479: 2247, 488: 2247, 2247, 570: 2247, 579: 2247, 581: 2247, 591: 2247, 621: 2247, 640: 2247, 2247}, - {475: 2252}, - {2260, 2260, 2260, 2260, 2260, 2260, 2260, 2260, 2260, 2260, 2260, 2260, 2260, 47: 2260, 469: 2260, 473: 2260, 2260, 2260, 2260, 479: 2260, 488: 2260, 2260, 570: 2260, 579: 2260, 581: 2260, 591: 2260, 621: 2260, 640: 2260, 2260}, + {2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 47: 2225, 470: 2225, 474: 2225, 2225, 2225, 2225, 480: 2225, 489: 2225, 2225, 571: 2225, 580: 2225, 584: 2225, 636: 2225, 640: 2225, 2225, 2225}, + {651: 4607}, + {2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 47: 2231, 470: 2231, 474: 2231, 2231, 2231, 2231, 480: 2231, 489: 2231, 2231, 571: 2231, 580: 2231, 584: 2231, 636: 2231, 640: 2231, 2231, 2231}, + {70: 4601, 502: 4600, 667: 4599, 669: 4598, 1106: 4608}, + {2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 47: 2235, 470: 2235, 474: 2235, 2235, 2235, 2235, 480: 2235, 489: 2235, 2235, 571: 2235, 580: 2235, 584: 2235, 636: 2235, 640: 2235, 2235, 2235}, // 2105 - {2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 47: 2261, 469: 2261, 473: 2261, 2261, 2261, 2261, 479: 2261, 488: 2261, 2261, 570: 2261, 579: 2261, 581: 2261, 591: 2261, 621: 2261, 640: 2261, 2261}, - {2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 47: 2259, 469: 2259, 473: 2259, 2259, 2259, 2259, 479: 2259, 488: 2259, 2259, 570: 2259, 579: 2259, 581: 2259, 591: 2259, 621: 2259, 640: 2259, 2259}, - {2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 47: 2258, 469: 2258, 473: 2258, 2258, 2258, 2258, 479: 2258, 488: 2258, 2258, 570: 2258, 579: 2258, 581: 2258, 591: 2258, 621: 2258, 640: 2258, 2258}, - {2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 47: 2257, 469: 2257, 473: 2257, 2257, 2257, 2257, 479: 2257, 488: 2257, 2257, 570: 2257, 579: 2257, 581: 2257, 591: 2257, 621: 2257, 640: 2257, 2257}, - {2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 47: 2262, 469: 2262, 473: 2262, 2262, 2262, 2262, 479: 2262, 488: 2262, 2262, 570: 2262, 579: 2262, 581: 2262, 591: 2262, 621: 2262, 640: 2262, 2262}, + {2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 47: 2242, 470: 2242, 474: 2242, 2242, 2242, 2242, 480: 2242, 489: 2242, 2242, 571: 2242, 580: 2242, 584: 2242, 636: 2242, 640: 2242, 2242, 2242}, + {2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 47: 2241, 470: 2241, 474: 2241, 2241, 2241, 2241, 480: 2241, 489: 2241, 2241, 571: 2241, 580: 2241, 584: 2241, 636: 2241, 640: 2241, 2241, 2241}, + {2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 47: 2240, 470: 2240, 474: 2240, 2240, 2240, 2240, 480: 2240, 489: 2240, 2240, 571: 2240, 580: 2240, 584: 2240, 636: 2240, 640: 2240, 2240, 2240}, + {2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 47: 2251, 470: 2251, 474: 2251, 2251, 2251, 2251, 480: 2251, 489: 2251, 2251, 571: 2251, 580: 2251, 584: 2251, 636: 2251, 640: 2251, 2251, 2251}, + {476: 2256}, // 2110 - {2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 47: 2256, 469: 2256, 473: 2256, 2256, 2256, 2256, 479: 2256, 488: 2256, 2256, 570: 2256, 579: 2256, 581: 2256, 591: 2256, 621: 2256, 640: 2256, 2256}, - {2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 47: 2255, 469: 2255, 473: 2255, 2255, 2255, 2255, 479: 2255, 488: 2255, 2255, 570: 2255, 579: 2255, 581: 2255, 591: 2255, 621: 2255, 640: 2255, 2255}, - {2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 47: 2254, 469: 2254, 473: 2254, 2254, 2254, 2254, 479: 2254, 488: 2254, 2254, 570: 2254, 579: 2254, 581: 2254, 591: 2254, 621: 2254, 640: 2254, 2254}, - {2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 47: 2263, 469: 2263, 473: 2263, 2263, 2263, 2263, 479: 2263, 488: 2263, 2263, 570: 2263, 579: 2263, 581: 2263, 591: 2263, 621: 2263, 640: 2263, 2263}, - {470: 4615}, + {2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 47: 2264, 470: 2264, 474: 2264, 2264, 2264, 2264, 480: 2264, 489: 2264, 2264, 571: 2264, 580: 2264, 584: 2264, 636: 2264, 640: 2264, 2264, 2264}, + {2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 47: 2265, 470: 2265, 474: 2265, 2265, 2265, 2265, 480: 2265, 489: 2265, 2265, 571: 2265, 580: 2265, 584: 2265, 636: 2265, 640: 2265, 2265, 2265}, + {2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 47: 2263, 470: 2263, 474: 2263, 2263, 2263, 2263, 480: 2263, 489: 2263, 2263, 571: 2263, 580: 2263, 584: 2263, 636: 2263, 640: 2263, 2263, 2263}, + {2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 47: 2262, 470: 2262, 474: 2262, 2262, 2262, 2262, 480: 2262, 489: 2262, 2262, 571: 2262, 580: 2262, 584: 2262, 636: 2262, 640: 2262, 2262, 2262}, + {2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 47: 2261, 470: 2261, 474: 2261, 2261, 2261, 2261, 480: 2261, 489: 2261, 2261, 571: 2261, 580: 2261, 584: 2261, 636: 2261, 640: 2261, 2261, 2261}, // 2115 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 4616}, - {47: 4617, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, - {2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 47: 2251, 469: 2251, 473: 2251, 2251, 2251, 2251, 479: 2251, 488: 2251, 2251, 570: 2251, 579: 2251, 581: 2251, 591: 2251, 621: 2251, 640: 2251, 2251, 1300: 4620, 1330: 4619, 4618}, - {2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 47: 2265, 469: 2265, 473: 2265, 2265, 2265, 2265, 479: 2265, 488: 2265, 2265, 570: 2265, 579: 2265, 581: 2265, 591: 2265, 621: 2265, 640: 2265, 2265}, - {2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 47: 2250, 469: 2250, 473: 2250, 2250, 2250, 2250, 479: 2250, 488: 2250, 2250, 570: 2250, 579: 2250, 581: 2250, 591: 2250, 621: 2250, 640: 2250, 2250}, + {2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 47: 2266, 470: 2266, 474: 2266, 2266, 2266, 2266, 480: 2266, 489: 2266, 2266, 571: 2266, 580: 2266, 584: 2266, 636: 2266, 640: 2266, 2266, 2266}, + {2260, 2260, 2260, 2260, 2260, 2260, 2260, 2260, 2260, 2260, 2260, 2260, 2260, 47: 2260, 470: 2260, 474: 2260, 2260, 2260, 2260, 480: 2260, 489: 2260, 2260, 571: 2260, 580: 2260, 584: 2260, 636: 2260, 640: 2260, 2260, 2260}, + {2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 47: 2259, 470: 2259, 474: 2259, 2259, 2259, 2259, 480: 2259, 489: 2259, 2259, 571: 2259, 580: 2259, 584: 2259, 636: 2259, 640: 2259, 2259, 2259}, + {2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 47: 2258, 470: 2258, 474: 2258, 2258, 2258, 2258, 480: 2258, 489: 2258, 2258, 571: 2258, 580: 2258, 584: 2258, 636: 2258, 640: 2258, 2258, 2258}, + {2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 47: 2267, 470: 2267, 474: 2267, 2267, 2267, 2267, 480: 2267, 489: 2267, 2267, 571: 2267, 580: 2267, 584: 2267, 636: 2267, 640: 2267, 2267, 2267}, // 2120 - {2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 47: 2249, 469: 2249, 473: 2249, 2249, 2249, 2249, 479: 2249, 488: 2249, 2249, 570: 2249, 579: 2249, 581: 2249, 591: 2249, 621: 2249, 640: 2249, 2249}, - {470: 4622}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 4623}, - {47: 4624, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, - {2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 47: 2281, 147: 4381, 469: 2281, 473: 4041, 4040, 2281, 2281, 479: 2281, 488: 2281, 2281, 570: 2281, 579: 2281, 581: 2281, 591: 2281, 621: 2281, 640: 2281, 2281, 806: 4625, 929: 4626, 1036: 4627, 1200: 4628}, + {471: 4625}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 4626}, + {47: 4627, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 47: 2255, 470: 2255, 474: 2255, 2255, 2255, 2255, 480: 2255, 489: 2255, 2255, 571: 2255, 580: 2255, 584: 2255, 636: 2255, 640: 2255, 2255, 2255, 1301: 4630, 1331: 4629, 4628}, + {2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 47: 2269, 470: 2269, 474: 2269, 2269, 2269, 2269, 480: 2269, 489: 2269, 2269, 571: 2269, 580: 2269, 584: 2269, 636: 2269, 640: 2269, 2269, 2269}, // 2125 - {147: 4383, 489: 4629}, - {2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 47: 2280, 469: 2280, 473: 2280, 2280, 2280, 2280, 479: 2280, 488: 2280, 2280, 570: 2280, 579: 2280, 581: 2280, 591: 2280, 621: 2280, 640: 2280, 2280}, - {2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 47: 2278, 469: 2278, 473: 2278, 2278, 2278, 2278, 479: 2278, 488: 2278, 2278, 570: 2278, 579: 2278, 581: 2278, 591: 2278, 621: 2278, 640: 2278, 2278}, - {2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 47: 2266, 469: 2266, 473: 2266, 2266, 2266, 2266, 479: 2266, 488: 2266, 2266, 570: 2266, 579: 2266, 581: 2266, 591: 2266, 621: 2266, 640: 2266, 2266}, - {2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 47: 2279, 469: 2279, 473: 2279, 2279, 2279, 2279, 479: 2279, 488: 2279, 2279, 570: 2279, 579: 2279, 581: 2279, 591: 2279, 621: 2279, 640: 2279, 2279}, + {2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 47: 2254, 470: 2254, 474: 2254, 2254, 2254, 2254, 480: 2254, 489: 2254, 2254, 571: 2254, 580: 2254, 584: 2254, 636: 2254, 640: 2254, 2254, 2254}, + {2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 47: 2253, 470: 2253, 474: 2253, 2253, 2253, 2253, 480: 2253, 489: 2253, 2253, 571: 2253, 580: 2253, 584: 2253, 636: 2253, 640: 2253, 2253, 2253}, + {471: 4632}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 4633}, + {47: 4634, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, // 2130 - {2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 47: 2267, 469: 2267, 473: 2267, 2267, 2267, 2267, 479: 2267, 488: 2267, 2267, 570: 2267, 579: 2267, 581: 2267, 591: 2267, 621: 2267, 640: 2267, 2267}, - {585: 4638, 4635, 588: 4636, 4637, 941: 4633, 4634, 4632}, - {2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 47: 2268, 469: 2268, 473: 2268, 2268, 2268, 2268, 479: 2268, 488: 2268, 2268, 570: 2268, 579: 2268, 581: 2268, 591: 2268, 621: 2268, 640: 2268, 2268}, - {2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 47: 2211, 469: 2211, 473: 2211, 2211, 2211, 2211, 479: 2211, 488: 2211, 2211, 570: 2211, 579: 2211, 581: 2211, 591: 2211, 621: 2211, 640: 2211, 2211}, - {470: 4639}, + {2285, 2285, 2285, 2285, 2285, 2285, 2285, 2285, 2285, 2285, 2285, 2285, 2285, 47: 2285, 147: 4391, 470: 2285, 474: 4051, 4050, 2285, 2285, 480: 2285, 489: 2285, 2285, 571: 2285, 580: 2285, 584: 2285, 636: 2285, 640: 2285, 2285, 2285, 807: 4635, 930: 4636, 1037: 4637, 1201: 4638}, + {147: 4393, 490: 4639}, + {2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 47: 2284, 470: 2284, 474: 2284, 2284, 2284, 2284, 480: 2284, 489: 2284, 2284, 571: 2284, 580: 2284, 584: 2284, 636: 2284, 640: 2284, 2284, 2284}, + {2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 47: 2282, 470: 2282, 474: 2282, 2282, 2282, 2282, 480: 2282, 489: 2282, 2282, 571: 2282, 580: 2282, 584: 2282, 636: 2282, 640: 2282, 2282, 2282}, + {2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 47: 2270, 470: 2270, 474: 2270, 2270, 2270, 2270, 480: 2270, 489: 2270, 2270, 571: 2270, 580: 2270, 584: 2270, 636: 2270, 640: 2270, 2270, 2270}, // 2135 - {2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 47: 2202, 469: 2202, 2206, 473: 2202, 2202, 2202, 2202, 479: 2202, 488: 2202, 2202, 570: 2202, 579: 2202, 581: 2202, 591: 2202, 621: 2202, 640: 2202, 2202}, - {2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 47: 2201, 469: 2201, 2205, 473: 2201, 2201, 2201, 2201, 479: 2201, 488: 2201, 2201, 570: 2201, 579: 2201, 581: 2201, 591: 2201, 621: 2201, 640: 2201, 2201}, - {2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 47: 2200, 469: 2200, 2204, 473: 2200, 2200, 2200, 2200, 479: 2200, 488: 2200, 2200, 570: 2200, 579: 2200, 581: 2200, 591: 2200, 621: 2200, 640: 2200, 2200}, - {470: 2203}, - {47: 4640, 505: 2697, 729: 4641}, + {2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 47: 2283, 470: 2283, 474: 2283, 2283, 2283, 2283, 480: 2283, 489: 2283, 2283, 571: 2283, 580: 2283, 584: 2283, 636: 2283, 640: 2283, 2283, 2283}, + {2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 47: 2271, 470: 2271, 474: 2271, 2271, 2271, 2271, 480: 2271, 489: 2271, 2271, 571: 2271, 580: 2271, 584: 2271, 636: 2271, 640: 2271, 2271, 2271}, + {586: 4648, 4645, 589: 4646, 4647, 942: 4643, 4644, 4642}, + {2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 47: 2272, 470: 2272, 474: 2272, 2272, 2272, 2272, 480: 2272, 489: 2272, 2272, 571: 2272, 580: 2272, 584: 2272, 636: 2272, 640: 2272, 2272, 2272}, + {2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 47: 2215, 470: 2215, 474: 2215, 2215, 2215, 2215, 480: 2215, 489: 2215, 2215, 571: 2215, 580: 2215, 584: 2215, 636: 2215, 640: 2215, 2215, 2215}, // 2140 - {2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 47: 2210, 469: 2210, 473: 2210, 2210, 2210, 2210, 479: 2210, 488: 2210, 2210, 570: 2210, 579: 2210, 581: 2210, 591: 2210, 621: 2210, 640: 2210, 2210}, - {47: 4642}, - {2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 47: 2209, 469: 2209, 473: 2209, 2209, 2209, 2209, 479: 2209, 488: 2209, 2209, 570: 2209, 579: 2209, 581: 2209, 591: 2209, 621: 2209, 640: 2209, 2209}, - {154: 4644}, - {2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 47: 2269, 469: 2269, 473: 2269, 2269, 2269, 2269, 479: 2269, 488: 2269, 2269, 570: 2269, 579: 2269, 581: 2269, 591: 2269, 621: 2269, 640: 2269, 2269}, + {471: 4649}, + {2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 47: 2206, 470: 2206, 2210, 474: 2206, 2206, 2206, 2206, 480: 2206, 489: 2206, 2206, 571: 2206, 580: 2206, 584: 2206, 636: 2206, 640: 2206, 2206, 2206}, + {2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 47: 2205, 470: 2205, 2209, 474: 2205, 2205, 2205, 2205, 480: 2205, 489: 2205, 2205, 571: 2205, 580: 2205, 584: 2205, 636: 2205, 640: 2205, 2205, 2205}, + {2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 47: 2204, 470: 2204, 2208, 474: 2204, 2204, 2204, 2204, 480: 2204, 489: 2204, 2204, 571: 2204, 580: 2204, 584: 2204, 636: 2204, 640: 2204, 2204, 2204}, + {471: 2207}, // 2145 - {2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 47: 2270, 469: 2270, 473: 2270, 2270, 2270, 2270, 479: 2270, 488: 2270, 2270, 570: 2270, 579: 2270, 581: 2270, 591: 2270, 621: 2270, 640: 2270, 2270}, - {2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 47: 2220, 469: 2220, 473: 2220, 2220, 2220, 2220, 479: 2220, 488: 2220, 2220, 570: 2220, 579: 2220, 581: 2220, 591: 2220, 621: 2220, 640: 2220, 2220}, - {2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 47: 2219, 469: 2219, 473: 2219, 2219, 2219, 2219, 479: 2219, 488: 2219, 2219, 570: 2219, 579: 2219, 581: 2219, 591: 2219, 621: 2219, 640: 2219, 2219}, - {2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 47: 2218, 469: 2218, 473: 2218, 2218, 2218, 2218, 479: 2218, 488: 2218, 2218, 570: 2218, 579: 2218, 581: 2218, 591: 2218, 621: 2218, 640: 2218, 2218}, - {2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 47: 2217, 469: 2217, 473: 2217, 2217, 2217, 2217, 479: 2217, 488: 2217, 2217, 570: 2217, 579: 2217, 581: 2217, 591: 2217, 621: 2217, 640: 2217, 2217}, + {47: 4650, 506: 2701, 730: 4651}, + {2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 47: 2214, 470: 2214, 474: 2214, 2214, 2214, 2214, 480: 2214, 489: 2214, 2214, 571: 2214, 580: 2214, 584: 2214, 636: 2214, 640: 2214, 2214, 2214}, + {47: 4652}, + {2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 47: 2213, 470: 2213, 474: 2213, 2213, 2213, 2213, 480: 2213, 489: 2213, 2213, 571: 2213, 580: 2213, 584: 2213, 636: 2213, 640: 2213, 2213, 2213}, + {154: 4654}, // 2150 - {149: 4651, 470: 4650, 585: 4638, 4635, 588: 4636, 4637, 941: 4633, 4634, 4652, 991: 4659, 1076: 4660}, - {470: 4655}, - {2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 47: 2212, 469: 2212, 473: 2212, 2212, 2212, 2212, 479: 2212, 488: 2212, 2212, 570: 2212, 579: 2212, 581: 2212, 591: 2212, 621: 2212, 640: 2212, 2212}, - {154: 4131}, - {470: 4128}, + {2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 47: 2273, 470: 2273, 474: 2273, 2273, 2273, 2273, 480: 2273, 489: 2273, 2273, 571: 2273, 580: 2273, 584: 2273, 636: 2273, 640: 2273, 2273, 2273}, + {2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 47: 2274, 470: 2274, 474: 2274, 2274, 2274, 2274, 480: 2274, 489: 2274, 2274, 571: 2274, 580: 2274, 584: 2274, 636: 2274, 640: 2274, 2274, 2274}, + {2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 47: 2224, 470: 2224, 474: 2224, 2224, 2224, 2224, 480: 2224, 489: 2224, 2224, 571: 2224, 580: 2224, 584: 2224, 636: 2224, 640: 2224, 2224, 2224}, + {2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 47: 2223, 470: 2223, 474: 2223, 2223, 2223, 2223, 480: 2223, 489: 2223, 2223, 571: 2223, 580: 2223, 584: 2223, 636: 2223, 640: 2223, 2223, 2223}, + {2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 47: 2222, 470: 2222, 474: 2222, 2222, 2222, 2222, 480: 2222, 489: 2222, 2222, 571: 2222, 580: 2222, 584: 2222, 636: 2222, 640: 2222, 2222, 2222}, // 2155 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 4656, 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3544, 774: 4657}, - {2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 47: 2215, 469: 2215, 473: 2215, 2215, 2215, 2215, 479: 2215, 488: 2215, 2215, 570: 2215, 579: 2215, 581: 2215, 591: 2215, 621: 2215, 640: 2215, 2215}, - {7: 3546, 47: 4658}, - {2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 47: 2214, 469: 2214, 473: 2214, 2214, 2214, 2214, 479: 2214, 488: 2214, 2214, 570: 2214, 579: 2214, 581: 2214, 591: 2214, 621: 2214, 640: 2214, 2214}, - {47: 4662}, + {2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 47: 2221, 470: 2221, 474: 2221, 2221, 2221, 2221, 480: 2221, 489: 2221, 2221, 571: 2221, 580: 2221, 584: 2221, 636: 2221, 640: 2221, 2221, 2221}, + {149: 4661, 471: 4660, 586: 4648, 4645, 589: 4646, 4647, 942: 4643, 4644, 4662, 992: 4669, 1077: 4670}, + {471: 4665}, + {2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 47: 2216, 470: 2216, 474: 2216, 2216, 2216, 2216, 480: 2216, 489: 2216, 2216, 571: 2216, 580: 2216, 584: 2216, 636: 2216, 640: 2216, 2216, 2216}, + {154: 4141}, // 2160 - {47: 4661}, - {2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 47: 2213, 469: 2213, 473: 2213, 2213, 2213, 2213, 479: 2213, 488: 2213, 2213, 570: 2213, 579: 2213, 581: 2213, 591: 2213, 621: 2213, 640: 2213, 2213}, - {2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 47: 2216, 469: 2216, 473: 2216, 2216, 2216, 2216, 479: 2216, 488: 2216, 2216, 570: 2216, 579: 2216, 581: 2216, 591: 2216, 621: 2216, 640: 2216, 2216}, - {2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 47: 2271, 469: 2271, 473: 2271, 2271, 2271, 2271, 479: 2271, 488: 2271, 2271, 570: 2271, 579: 2271, 581: 2271, 591: 2271, 621: 2271, 640: 2271, 2271}, - {2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 47: 2274, 83: 4665, 85: 4666, 469: 2274, 473: 2274, 2274, 2274, 2274, 479: 2274, 488: 2274, 2274, 570: 2274, 579: 2274, 581: 2274, 591: 2274, 621: 2274, 640: 2274, 2274, 864: 4667}, + {471: 4138}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 4666, 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3550, 775: 4667}, + {2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 47: 2219, 470: 2219, 474: 2219, 2219, 2219, 2219, 480: 2219, 489: 2219, 2219, 571: 2219, 580: 2219, 584: 2219, 636: 2219, 640: 2219, 2219, 2219}, + {7: 3552, 47: 4668}, + {2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 47: 2218, 470: 2218, 474: 2218, 2218, 2218, 2218, 480: 2218, 489: 2218, 2218, 571: 2218, 580: 2218, 584: 2218, 636: 2218, 640: 2218, 2218, 2218}, // 2165 - {2402, 2402, 2402, 2402, 2402, 2402, 2402, 2402, 2402, 2402, 2402, 2402, 2402, 17: 2402, 47: 2402, 81: 2402, 2402, 2402, 2402, 2402, 87: 2402, 469: 2402, 471: 2402, 473: 2402, 2402, 2402, 2402, 478: 2402, 2402, 488: 2402, 2402, 493: 2402, 570: 2402, 579: 2402, 581: 2402, 591: 2402, 621: 2402, 640: 2402, 2402}, - {2401, 2401, 2401, 2401, 2401, 2401, 2401, 2401, 2401, 2401, 2401, 2401, 2401, 17: 2401, 47: 2401, 81: 2401, 2401, 2401, 2401, 2401, 87: 2401, 469: 2401, 471: 2401, 473: 2401, 2401, 2401, 2401, 478: 2401, 2401, 488: 2401, 2401, 493: 2401, 570: 2401, 579: 2401, 581: 2401, 591: 2401, 621: 2401, 640: 2401, 2401}, - {2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 47: 2273, 469: 2273, 473: 2273, 2273, 2273, 2273, 479: 2273, 488: 2273, 2273, 570: 2273, 579: 2273, 581: 2273, 591: 2273, 621: 2273, 640: 2273, 2273}, - {2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 47: 2277, 469: 2277, 473: 2277, 2277, 2277, 2277, 479: 2277, 488: 2277, 2277, 570: 2277, 579: 2277, 581: 2277, 591: 2277, 621: 2277, 640: 2277, 2277}, - {570: 2374, 579: 2374, 581: 2374, 591: 2374, 645: 2374, 671: 2374, 2374}, + {47: 4672}, + {47: 4671}, + {2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 47: 2217, 470: 2217, 474: 2217, 2217, 2217, 2217, 480: 2217, 489: 2217, 2217, 571: 2217, 580: 2217, 584: 2217, 636: 2217, 640: 2217, 2217, 2217}, + {2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 47: 2220, 470: 2220, 474: 2220, 2220, 2220, 2220, 480: 2220, 489: 2220, 2220, 571: 2220, 580: 2220, 584: 2220, 636: 2220, 640: 2220, 2220, 2220}, + {2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 47: 2275, 470: 2275, 474: 2275, 2275, 2275, 2275, 480: 2275, 489: 2275, 2275, 571: 2275, 580: 2275, 584: 2275, 636: 2275, 640: 2275, 2275, 2275}, // 2170 - {2373, 2373, 2373, 2373, 7: 2373, 488: 2373, 570: 2373, 579: 2373, 581: 2373, 591: 2373, 645: 2373, 671: 2373, 2373}, - {2310, 2310, 2310, 2310, 7: 2310, 2310, 2310, 47: 2310, 488: 2310}, - {2432, 2432, 2432, 2432, 7: 2432, 488: 2432}, - {2384, 2384, 2384, 2384, 7: 2384, 488: 2384}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 4095, 2723, 2724, 2722, 739: 4675}, + {2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 47: 2278, 83: 4675, 85: 4676, 470: 2278, 474: 2278, 2278, 2278, 2278, 480: 2278, 489: 2278, 2278, 571: 2278, 580: 2278, 584: 2278, 636: 2278, 640: 2278, 2278, 2278, 865: 4677}, + {2406, 2406, 2406, 2406, 2406, 2406, 2406, 2406, 2406, 2406, 2406, 2406, 2406, 17: 2406, 47: 2406, 81: 2406, 2406, 2406, 2406, 2406, 87: 2406, 470: 2406, 472: 2406, 474: 2406, 2406, 2406, 2406, 479: 2406, 2406, 489: 2406, 2406, 494: 2406, 571: 2406, 580: 2406, 584: 2406, 636: 2406, 640: 2406, 2406, 2406}, + {2405, 2405, 2405, 2405, 2405, 2405, 2405, 2405, 2405, 2405, 2405, 2405, 2405, 17: 2405, 47: 2405, 81: 2405, 2405, 2405, 2405, 2405, 87: 2405, 470: 2405, 472: 2405, 474: 2405, 2405, 2405, 2405, 479: 2405, 2405, 489: 2405, 2405, 494: 2405, 571: 2405, 580: 2405, 584: 2405, 636: 2405, 640: 2405, 2405, 2405}, + {2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 47: 2277, 470: 2277, 474: 2277, 2277, 2277, 2277, 480: 2277, 489: 2277, 2277, 571: 2277, 580: 2277, 584: 2277, 636: 2277, 640: 2277, 2277, 2277}, + {2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 47: 2281, 470: 2281, 474: 2281, 2281, 2281, 2281, 480: 2281, 489: 2281, 2281, 571: 2281, 580: 2281, 584: 2281, 636: 2281, 640: 2281, 2281, 2281}, // 2175 - {2383, 2383, 2383, 2383, 7: 2383, 488: 2383}, - {2: 1844, 1844, 1844, 1844, 1844, 8: 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 48: 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 563: 4400, 777: 4677}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 4095, 2723, 2724, 2722, 739: 4404, 843: 4678}, - {2385, 2385, 2385, 2385, 7: 2385, 4673, 4674, 488: 2385, 924: 4679}, - {2433, 2433, 2433, 2433, 7: 2433, 488: 2433}, + {571: 2378, 580: 2378, 584: 2378, 636: 2378, 646: 2378, 672: 2378, 2378}, + {2377, 2377, 2377, 2377, 7: 2377, 489: 2377, 571: 2377, 580: 2377, 584: 2377, 636: 2377, 646: 2377, 672: 2377, 2377}, + {2314, 2314, 2314, 2314, 7: 2314, 2314, 2314, 47: 2314, 489: 2314}, + {2436, 2436, 2436, 2436, 7: 2436, 489: 2436}, + {2388, 2388, 2388, 2388, 7: 2388, 489: 2388}, // 2180 - {2434, 2434, 2434, 2434, 7: 2434, 488: 2434}, - {2435, 2435, 2435, 2435, 7: 2435, 488: 2435}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 4095, 2723, 2724, 2722, 739: 4685, 980: 4684, 1161: 4683}, - {2436, 2436, 2436, 2436, 7: 4687, 488: 2436}, - {1297, 1297, 1297, 1297, 7: 1297, 488: 1297}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 4105, 2727, 2728, 2726, 740: 4685}, + {2387, 2387, 2387, 2387, 7: 2387, 489: 2387}, + {2: 1848, 1848, 1848, 1848, 1848, 8: 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 48: 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 564: 4410, 778: 4687}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 4105, 2727, 2728, 2726, 740: 4414, 844: 4688}, + {2389, 2389, 2389, 2389, 7: 2389, 4683, 4684, 489: 2389, 925: 4689}, // 2185 - {1287, 1287, 1287, 1287, 7: 1287, 488: 1287, 526: 4571, 4570, 944: 4686}, - {1295, 1295, 1295, 1295, 7: 1295, 488: 1295}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 4095, 2723, 2724, 2722, 739: 4685, 980: 4688}, - {1296, 1296, 1296, 1296, 7: 1296, 488: 1296}, - {2: 564, 564, 564, 564, 564, 8: 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, 564, 564, 564, 48: 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, 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, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 4692, 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, 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, 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, 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, 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, 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, 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, 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, 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, 564, 564, 564, 564, 564, 564, 564, 564, 647: 564, 814: 4691, 832: 4690}, + {2437, 2437, 2437, 2437, 7: 2437, 489: 2437}, + {2438, 2438, 2438, 2438, 7: 2438, 489: 2438}, + {2439, 2439, 2439, 2439, 7: 2439, 489: 2439}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 4105, 2727, 2728, 2726, 740: 4695, 981: 4694, 1162: 4693}, + {2440, 2440, 2440, 2440, 7: 4697, 489: 2440}, // 2190 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 647: 4694, 659: 4696, 2723, 2724, 2722, 785: 4695, 827: 4693}, - {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, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 48: 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 470: 563, 488: 563, 505: 563, 541: 563, 566: 563, 647: 563}, - {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, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 48: 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 470: 562, 488: 562, 505: 562, 541: 562, 566: 562, 647: 562}, - {2439, 2439, 2439, 2439, 7: 2439, 488: 2439}, - {2408, 2408, 2408, 2408, 7: 2408, 18: 2408, 488: 2408}, + {1300, 1300, 1300, 1300, 7: 1300, 489: 1300}, + {1290, 1290, 1290, 1290, 7: 1290, 489: 1290, 527: 4581, 4580, 945: 4696}, + {1298, 1298, 1298, 1298, 7: 1298, 489: 1298}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 4105, 2727, 2728, 2726, 740: 4695, 981: 4698}, + {1299, 1299, 1299, 1299, 7: 1299, 489: 1299}, // 2195 - {2407, 2407, 2407, 2407, 7: 4697, 18: 2407, 488: 2407}, - {2378, 2378, 2378, 2378, 7: 2378, 18: 2378, 47: 2378, 98: 2378, 161: 2378, 471: 2378, 488: 2378, 492: 2378, 645: 2378, 647: 2378}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 4698, 2723, 2724, 2722}, - {2377, 2377, 2377, 2377, 7: 2377, 18: 2377, 47: 2377, 98: 2377, 161: 2377, 471: 2377, 488: 2377, 492: 2377, 645: 2377, 647: 2377}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 647: 4694, 659: 4696, 2723, 2724, 2722, 785: 4695, 827: 4701}, + {2: 564, 564, 564, 564, 564, 8: 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, 564, 564, 564, 48: 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, 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, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 4702, 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, 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, 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, 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, 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, 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, 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, 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, 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, 564, 564, 564, 564, 564, 564, 564, 564, 564, 648: 564, 815: 4701, 833: 4700}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 648: 4704, 660: 4706, 2727, 2728, 2726, 786: 4705, 828: 4703}, + {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, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 48: 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 471: 563, 489: 563, 506: 563, 541: 563, 567: 563, 648: 563}, + {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, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 48: 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 471: 562, 489: 562, 506: 562, 541: 562, 567: 562, 648: 562}, + {2443, 2443, 2443, 2443, 7: 2443, 489: 2443}, // 2200 - {2440, 2440, 2440, 2440, 7: 2440, 488: 2440}, - {18: 4702}, - {2442, 2442, 2442, 2442, 7: 2442, 488: 2442}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 647: 4694, 659: 4696, 2723, 2724, 2722, 785: 4695, 827: 4705}, - {2441, 2441, 2441, 2441, 7: 2441, 488: 2441}, + {2412, 2412, 2412, 2412, 7: 2412, 18: 2412, 489: 2412}, + {2411, 2411, 2411, 2411, 7: 4707, 18: 2411, 489: 2411}, + {2382, 2382, 2382, 2382, 7: 2382, 18: 2382, 47: 2382, 98: 2382, 161: 2382, 472: 2382, 489: 2382, 493: 2382, 646: 2382, 648: 2382}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 4708, 2727, 2728, 2726}, + {2381, 2381, 2381, 2381, 7: 2381, 18: 2381, 47: 2381, 98: 2381, 161: 2381, 472: 2381, 489: 2381, 493: 2381, 646: 2381, 648: 2381}, // 2205 - {18: 4706}, - {2443, 2443, 2443, 2443, 7: 2443, 488: 2443}, - {2: 564, 564, 564, 564, 564, 8: 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, 564, 564, 564, 48: 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, 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, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 4692, 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, 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, 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, 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, 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, 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, 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, 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, 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, 564, 564, 564, 564, 564, 564, 564, 564, 647: 564, 814: 4691, 832: 4708}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 647: 4694, 659: 4696, 2723, 2724, 2722, 785: 4695, 827: 4709}, - {2444, 2444, 2444, 2444, 7: 2444, 488: 2444}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 648: 4704, 660: 4706, 2727, 2728, 2726, 786: 4705, 828: 4711}, + {2444, 2444, 2444, 2444, 7: 2444, 489: 2444}, + {18: 4712}, + {2446, 2446, 2446, 2446, 7: 2446, 489: 2446}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 648: 4704, 660: 4706, 2727, 2728, 2726, 786: 4705, 828: 4715}, // 2210 - {2: 564, 564, 564, 564, 564, 8: 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, 564, 564, 564, 48: 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, 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, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 4692, 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, 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, 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, 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, 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, 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, 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, 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, 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, 564, 564, 564, 564, 564, 564, 564, 564, 647: 564, 814: 4691, 832: 4711}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 647: 4694, 659: 4696, 2723, 2724, 2722, 785: 4695, 827: 4712}, - {2445, 2445, 2445, 2445, 7: 2445, 488: 2445}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 647: 4694, 659: 4696, 2723, 2724, 2722, 785: 4695, 827: 4714}, - {2446, 2446, 2446, 2446, 7: 2446, 488: 2446}, + {2445, 2445, 2445, 2445, 7: 2445, 489: 2445}, + {18: 4716}, + {2447, 2447, 2447, 2447, 7: 2447, 489: 2447}, + {2: 564, 564, 564, 564, 564, 8: 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, 564, 564, 564, 48: 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, 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, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 4702, 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, 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, 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, 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, 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, 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, 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, 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, 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, 564, 564, 564, 564, 564, 564, 564, 564, 564, 648: 564, 815: 4701, 833: 4718}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 648: 4704, 660: 4706, 2727, 2728, 2726, 786: 4705, 828: 4719}, // 2215 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 4716, 2723, 2724, 2722}, - {471: 4717}, - {566: 4718}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3875, 2723, 2724, 2722, 733: 4719}, - {2406, 2406, 2406, 2406, 7: 2406, 219: 4723, 471: 4722, 488: 2406, 1341: 4721, 4720}, + {2448, 2448, 2448, 2448, 7: 2448, 489: 2448}, + {2: 564, 564, 564, 564, 564, 8: 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, 564, 564, 564, 48: 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, 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, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 4702, 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, 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, 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, 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, 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, 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, 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, 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, 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, 564, 564, 564, 564, 564, 564, 564, 564, 564, 648: 564, 815: 4701, 833: 4721}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 648: 4704, 660: 4706, 2727, 2728, 2726, 786: 4705, 828: 4722}, + {2449, 2449, 2449, 2449, 7: 2449, 489: 2449}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 648: 4704, 660: 4706, 2727, 2728, 2726, 786: 4705, 828: 4724}, // 2220 - {2447, 2447, 2447, 2447, 7: 2447, 488: 2447}, - {2405, 2405, 2405, 2405, 7: 2405, 488: 2405}, - {193: 4725}, - {193: 4724}, - {2403, 2403, 2403, 2403, 7: 2403, 488: 2403}, + {2450, 2450, 2450, 2450, 7: 2450, 489: 2450}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 4726, 2727, 2728, 2726}, + {472: 4727}, + {567: 4728}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3883, 2727, 2728, 2726, 734: 4729}, // 2225 - {2404, 2404, 2404, 2404, 7: 2404, 488: 2404}, - {2: 1844, 1844, 1844, 1844, 1844, 8: 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 48: 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 563: 4400, 777: 4744}, - {570: 4743}, - {2: 1844, 1844, 1844, 1844, 1844, 8: 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 48: 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 563: 4400, 777: 4741}, - {2: 1844, 1844, 1844, 1844, 1844, 8: 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 48: 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 563: 4400, 777: 4739}, + {2410, 2410, 2410, 2410, 7: 2410, 219: 4733, 472: 4732, 489: 2410, 1342: 4731, 4730}, + {2451, 2451, 2451, 2451, 7: 2451, 489: 2451}, + {2409, 2409, 2409, 2409, 7: 2409, 489: 2409}, + {193: 4735}, + {193: 4734}, // 2230 - {2: 1844, 1844, 1844, 1844, 1844, 8: 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 48: 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 563: 4400, 777: 4737}, - {570: 4734}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 4733, 2723, 2724, 2722}, - {2414, 2414, 2414, 2414, 7: 2414, 488: 2414}, - {2: 1844, 1844, 1844, 1844, 1844, 8: 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 48: 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 563: 4400, 777: 4735}, + {2407, 2407, 2407, 2407, 7: 2407, 489: 2407}, + {2408, 2408, 2408, 2408, 7: 2408, 489: 2408}, + {2: 1848, 1848, 1848, 1848, 1848, 8: 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 48: 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 564: 4410, 778: 4754}, + {571: 4753}, + {2: 1848, 1848, 1848, 1848, 1848, 8: 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 48: 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 564: 4410, 778: 4751}, // 2235 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 4670, 2723, 2724, 2722, 1138: 4736}, - {2437, 2437, 2437, 2437, 7: 2437, 488: 2437}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 4738, 2723, 2724, 2722}, - {2438, 2438, 2438, 2438, 7: 2438, 488: 2438}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 4740, 2723, 2724, 2722}, + {2: 1848, 1848, 1848, 1848, 1848, 8: 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 48: 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 564: 4410, 778: 4749}, + {2: 1848, 1848, 1848, 1848, 1848, 8: 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 48: 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 564: 4410, 778: 4747}, + {571: 4744}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 4743, 2727, 2728, 2726}, + {2418, 2418, 2418, 2418, 7: 2418, 489: 2418}, // 2240 - {2448, 2448, 2448, 2448, 7: 2448, 488: 2448}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 4696, 2723, 2724, 2722, 785: 4742}, - {2449, 2449, 2449, 2449, 7: 4697, 488: 2449}, - {2450, 2450, 2450, 2450, 7: 2450, 488: 2450}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 4095, 2723, 2724, 2722, 739: 4745}, + {2: 1848, 1848, 1848, 1848, 1848, 8: 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 48: 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 564: 4410, 778: 4745}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 4680, 2727, 2728, 2726, 1139: 4746}, + {2441, 2441, 2441, 2441, 7: 2441, 489: 2441}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 4748, 2727, 2728, 2726}, + {2442, 2442, 2442, 2442, 7: 2442, 489: 2442}, // 2245 - {2036, 2036, 2036, 2036, 7: 2036, 488: 2036, 666: 4748, 668: 4747, 906: 4746}, - {2451, 2451, 2451, 2451, 7: 2451, 488: 2451}, - {2035, 2035, 2035, 2035, 7: 2035, 488: 2035}, - {2034, 2034, 2034, 2034, 7: 2034, 488: 2034}, - {136: 4692, 505: 564, 814: 4691, 832: 4750}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 4750, 2727, 2728, 2726}, + {2452, 2452, 2452, 2452, 7: 2452, 489: 2452}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 4706, 2727, 2728, 2726, 786: 4752}, + {2453, 2453, 2453, 2453, 7: 4707, 489: 2453}, + {2454, 2454, 2454, 2454, 7: 2454, 489: 2454}, // 2250 - {505: 2697, 729: 4751}, - {2452, 2452, 2452, 2452, 7: 2452, 488: 2452}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 647: 4694, 659: 4696, 2723, 2724, 2722, 785: 4695, 827: 4753}, - {2453, 2453, 2453, 2453, 7: 2453, 488: 2453}, - {2: 1842, 1842, 1842, 1842, 1842, 8: 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 48: 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 470: 1842, 563: 4772, 781: 4886}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 4105, 2727, 2728, 2726, 740: 4755}, + {2040, 2040, 2040, 2040, 7: 2040, 489: 2040, 667: 4758, 669: 4757, 907: 4756}, + {2455, 2455, 2455, 2455, 7: 2455, 489: 2455}, + {2039, 2039, 2039, 2039, 7: 2039, 489: 2039}, + {2038, 2038, 2038, 2038, 7: 2038, 489: 2038}, // 2255 - {2459, 2459, 2459, 2459, 7: 2459, 488: 2459}, - {1842, 1842, 1842, 1842, 7: 1842, 103: 1842, 136: 1842, 470: 1842, 488: 1842, 563: 4772, 781: 4840, 814: 1842}, - {2: 1842, 1842, 1842, 1842, 1842, 8: 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 48: 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 563: 4772, 781: 4831}, - {570: 4358, 579: 4764, 581: 4759, 591: 4762, 645: 4359, 671: 4763, 4760, 823: 4761, 1189: 4765}, - {570: 4825}, + {136: 4702, 506: 564, 815: 4701, 833: 4760}, + {506: 2701, 730: 4761}, + {2456, 2456, 2456, 2456, 7: 2456, 489: 2456}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 648: 4704, 660: 4706, 2727, 2728, 2726, 786: 4705, 828: 4763}, + {2457, 2457, 2457, 2457, 7: 2457, 489: 2457}, // 2260 - {2: 2389, 2389, 2389, 2389, 2389, 8: 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 48: 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 470: 2389, 570: 4358, 645: 4359, 823: 4781, 1062: 4819}, - {2: 1842, 1842, 1842, 1842, 1842, 8: 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 48: 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 470: 1842, 478: 1842, 563: 4772, 781: 4813}, - {2: 2389, 2389, 2389, 2389, 2389, 8: 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 48: 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 470: 2389, 478: 2389, 570: 4358, 645: 4359, 823: 4781, 1062: 4782}, - {570: 4770}, - {470: 4766}, + {2: 1846, 1846, 1846, 1846, 1846, 8: 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 48: 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 471: 1846, 564: 4782, 782: 4896}, + {2463, 2463, 2463, 2463, 7: 2463, 489: 2463}, + {1846, 1846, 1846, 1846, 7: 1846, 105: 1846, 136: 1846, 471: 1846, 489: 1846, 564: 4782, 782: 4850, 815: 1846}, + {2: 1846, 1846, 1846, 1846, 1846, 8: 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 48: 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 564: 4782, 782: 4841}, + {571: 4368, 580: 4774, 584: 4769, 636: 4772, 646: 4369, 672: 4773, 4770, 825: 4771, 1190: 4775}, // 2265 - {440, 440, 440, 440, 7: 440, 47: 440, 488: 440}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 4767}, - {47: 4768, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, - {2281, 2281, 2281, 2281, 7: 2281, 47: 2281, 147: 4381, 473: 4041, 4040, 488: 2281, 806: 4382, 929: 4626, 1036: 4769}, - {2239, 2239, 2239, 2239, 7: 2239, 47: 2239, 488: 2239}, + {571: 4835}, + {2: 2393, 2393, 2393, 2393, 2393, 8: 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 48: 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 471: 2393, 571: 4368, 646: 4369, 825: 4791, 1063: 4829}, + {2: 1846, 1846, 1846, 1846, 1846, 8: 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 48: 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 471: 1846, 479: 1846, 564: 4782, 782: 4823}, + {2: 2393, 2393, 2393, 2393, 2393, 8: 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 48: 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 471: 2393, 479: 2393, 571: 4368, 646: 4369, 825: 4791, 1063: 4792}, + {571: 4780}, // 2270 - {2: 1842, 1842, 1842, 1842, 1842, 8: 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 48: 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 470: 1842, 563: 4772, 781: 4771}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 470: 1838, 659: 4776, 2723, 2724, 2722, 873: 4775}, - {473: 4041, 4040, 806: 4773}, - {583: 4774}, - {1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 48: 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 470: 1841, 472: 1841, 478: 1841, 488: 1841, 567: 1841, 814: 1841}, + {471: 4776}, + {440, 440, 440, 440, 7: 440, 47: 440, 489: 440}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 4777}, + {47: 4778, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {2285, 2285, 2285, 2285, 7: 2285, 47: 2285, 147: 4391, 474: 4051, 4050, 489: 2285, 807: 4392, 930: 4636, 1037: 4779}, // 2275 - {470: 4777}, - {470: 1837}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 470: 4566, 659: 4095, 2723, 2724, 2722, 739: 4565, 822: 4564, 831: 4778}, - {7: 4575, 47: 4779}, - {640: 4559, 905: 4780}, + {2243, 2243, 2243, 2243, 7: 2243, 47: 2243, 489: 2243}, + {2: 1846, 1846, 1846, 1846, 1846, 8: 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 48: 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 471: 1846, 564: 4782, 782: 4781}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 471: 1842, 660: 4786, 2727, 2728, 2726, 874: 4785}, + {474: 4051, 4050, 807: 4783}, + {582: 4784}, // 2280 - {2240, 2240, 2240, 2240, 7: 2240, 47: 2240, 488: 2240}, - {2: 2388, 2388, 2388, 2388, 2388, 8: 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 48: 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 470: 2388, 478: 2388}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 470: 1838, 478: 1838, 659: 4784, 2723, 2724, 2722, 873: 4785, 937: 4783}, - {470: 4793}, - {82: 4791, 470: 1837, 478: 1837}, + {1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 48: 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 471: 1845, 473: 1845, 479: 1845, 489: 1845, 568: 1845, 815: 1845}, + {471: 4787}, + {471: 1841}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 471: 4576, 660: 4105, 2727, 2728, 2726, 740: 4575, 824: 4574, 832: 4788}, + {7: 4585, 47: 4789}, // 2285 - {470: 1828, 478: 4786}, - {141: 4789, 172: 4788, 186: 4790, 900: 4787}, - {470: 1827}, - {1821, 1821, 1821, 1821, 1821, 7: 1821, 17: 1821, 47: 1821, 81: 1821, 1821, 1821, 1821, 1821, 87: 1821, 469: 1821, 1821, 1821, 478: 1821, 488: 1821, 493: 1821}, - {1820, 1820, 1820, 1820, 1820, 7: 1820, 17: 1820, 47: 1820, 81: 1820, 1820, 1820, 1820, 1820, 87: 1820, 469: 1820, 1820, 1820, 478: 1820, 488: 1820, 493: 1820}, + {641: 4569, 906: 4790}, + {2244, 2244, 2244, 2244, 7: 2244, 47: 2244, 489: 2244}, + {2: 2392, 2392, 2392, 2392, 2392, 8: 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, 2392, 2392, 2392, 48: 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 471: 2392, 479: 2392}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 471: 1842, 479: 1842, 660: 4794, 2727, 2728, 2726, 874: 4795, 938: 4793}, + {471: 4803}, // 2290 - {1819, 1819, 1819, 1819, 1819, 7: 1819, 17: 1819, 47: 1819, 81: 1819, 1819, 1819, 1819, 1819, 87: 1819, 469: 1819, 1819, 1819, 478: 1819, 488: 1819, 493: 1819}, - {141: 4789, 172: 4788, 186: 4790, 900: 4792}, - {470: 1826}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 470: 4566, 659: 4095, 2723, 2724, 2722, 739: 4565, 822: 4564, 831: 4794}, - {7: 4575, 47: 4795}, + {82: 4801, 471: 1841, 479: 1841}, + {471: 1832, 479: 4796}, + {141: 4799, 172: 4798, 186: 4800, 901: 4797}, + {471: 1831}, + {1825, 1825, 1825, 1825, 1825, 7: 1825, 17: 1825, 47: 1825, 81: 1825, 1825, 1825, 1825, 1825, 87: 1825, 470: 1825, 1825, 1825, 479: 1825, 489: 1825, 494: 1825}, // 2295 - {1836, 1836, 1836, 1836, 1836, 7: 1836, 17: 1836, 47: 1836, 82: 1836, 1836, 1836, 1836, 87: 1836, 471: 1836, 478: 1836, 488: 1836, 875: 4796}, - {2241, 2241, 2241, 2241, 4801, 7: 2241, 17: 4798, 47: 2241, 82: 4805, 4665, 4378, 4666, 87: 4377, 471: 4800, 478: 4804, 488: 2241, 851: 4802, 853: 4799, 864: 4803, 874: 4797}, - {1835, 1835, 1835, 1835, 1835, 7: 1835, 17: 1835, 47: 1835, 81: 1835, 1835, 1835, 1835, 1835, 87: 1835, 471: 1835, 478: 1835, 488: 1835, 493: 1835}, - {496: 4230, 505: 2031, 732: 4811}, - {1833, 1833, 1833, 1833, 1833, 7: 1833, 17: 1833, 47: 1833, 81: 1833, 1833, 1833, 1833, 1833, 87: 1833, 471: 1833, 478: 1833, 488: 1833, 493: 1833}, + {1824, 1824, 1824, 1824, 1824, 7: 1824, 17: 1824, 47: 1824, 81: 1824, 1824, 1824, 1824, 1824, 87: 1824, 470: 1824, 1824, 1824, 479: 1824, 489: 1824, 494: 1824}, + {1823, 1823, 1823, 1823, 1823, 7: 1823, 17: 1823, 47: 1823, 81: 1823, 1823, 1823, 1823, 1823, 87: 1823, 470: 1823, 1823, 1823, 479: 1823, 489: 1823, 494: 1823}, + {141: 4799, 172: 4798, 186: 4800, 901: 4802}, + {471: 1830}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 471: 4576, 660: 4105, 2727, 2728, 2726, 740: 4575, 824: 4574, 832: 4804}, // 2300 - {365: 4809}, - {472: 4808}, - {1830, 1830, 1830, 1830, 1830, 7: 1830, 17: 1830, 47: 1830, 81: 1830, 1830, 1830, 1830, 1830, 87: 1830, 471: 1830, 478: 1830, 488: 1830, 493: 1830}, - {1829, 1829, 1829, 1829, 1829, 7: 1829, 17: 1829, 47: 1829, 81: 1829, 1829, 1829, 1829, 1829, 87: 1829, 471: 1829, 478: 1829, 488: 1829, 493: 1829}, - {141: 4789, 172: 4788, 186: 4790, 900: 4807}, + {7: 4585, 47: 4805}, + {1840, 1840, 1840, 1840, 1840, 7: 1840, 17: 1840, 47: 1840, 82: 1840, 1840, 1840, 1840, 87: 1840, 472: 1840, 479: 1840, 489: 1840, 876: 4806}, + {2245, 2245, 2245, 2245, 4811, 7: 2245, 17: 4808, 47: 2245, 82: 4815, 4675, 4388, 4676, 87: 4387, 472: 4810, 479: 4814, 489: 2245, 852: 4812, 854: 4809, 865: 4813, 875: 4807}, + {1839, 1839, 1839, 1839, 1839, 7: 1839, 17: 1839, 47: 1839, 81: 1839, 1839, 1839, 1839, 1839, 87: 1839, 472: 1839, 479: 1839, 489: 1839, 494: 1839}, + {496: 4240, 506: 2035, 733: 4821}, // 2305 - {141: 4789, 172: 4788, 186: 4790, 900: 4806}, - {1822, 1822, 1822, 1822, 1822, 7: 1822, 17: 1822, 47: 1822, 81: 1822, 1822, 1822, 1822, 1822, 87: 1822, 469: 1822, 471: 1822, 478: 1822, 488: 1822, 493: 1822}, - {1823, 1823, 1823, 1823, 1823, 7: 1823, 17: 1823, 47: 1823, 81: 1823, 1823, 1823, 1823, 1823, 87: 1823, 469: 1823, 471: 1823, 478: 1823, 488: 1823, 493: 1823}, - {1831, 1831, 1831, 1831, 1831, 7: 1831, 17: 1831, 47: 1831, 81: 1831, 1831, 1831, 1831, 1831, 87: 1831, 471: 1831, 478: 1831, 488: 1831, 493: 1831}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 4810, 2723, 2724, 2722}, + {1837, 1837, 1837, 1837, 1837, 7: 1837, 17: 1837, 47: 1837, 81: 1837, 1837, 1837, 1837, 1837, 87: 1837, 472: 1837, 479: 1837, 489: 1837, 494: 1837}, + {365: 4819}, + {473: 4818}, + {1834, 1834, 1834, 1834, 1834, 7: 1834, 17: 1834, 47: 1834, 81: 1834, 1834, 1834, 1834, 1834, 87: 1834, 472: 1834, 479: 1834, 489: 1834, 494: 1834}, + {1833, 1833, 1833, 1833, 1833, 7: 1833, 17: 1833, 47: 1833, 81: 1833, 1833, 1833, 1833, 1833, 87: 1833, 472: 1833, 479: 1833, 489: 1833, 494: 1833}, // 2310 - {1832, 1832, 1832, 1832, 1832, 7: 1832, 17: 1832, 47: 1832, 81: 1832, 1832, 1832, 1832, 1832, 87: 1832, 471: 1832, 478: 1832, 488: 1832, 493: 1832}, - {505: 2697, 729: 2696, 740: 4812}, - {1834, 1834, 1834, 1834, 1834, 7: 1834, 17: 1834, 47: 1834, 81: 1834, 1834, 1834, 1834, 1834, 87: 1834, 471: 1834, 478: 1834, 488: 1834, 493: 1834}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 470: 1838, 478: 1838, 659: 4784, 2723, 2724, 2722, 873: 4785, 937: 4814}, - {470: 4815}, + {141: 4799, 172: 4798, 186: 4800, 901: 4817}, + {141: 4799, 172: 4798, 186: 4800, 901: 4816}, + {1826, 1826, 1826, 1826, 1826, 7: 1826, 17: 1826, 47: 1826, 81: 1826, 1826, 1826, 1826, 1826, 87: 1826, 470: 1826, 472: 1826, 479: 1826, 489: 1826, 494: 1826}, + {1827, 1827, 1827, 1827, 1827, 7: 1827, 17: 1827, 47: 1827, 81: 1827, 1827, 1827, 1827, 1827, 87: 1827, 470: 1827, 472: 1827, 479: 1827, 489: 1827, 494: 1827}, + {1835, 1835, 1835, 1835, 1835, 7: 1835, 17: 1835, 47: 1835, 81: 1835, 1835, 1835, 1835, 1835, 87: 1835, 472: 1835, 479: 1835, 489: 1835, 494: 1835}, // 2315 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 470: 4566, 659: 4095, 2723, 2724, 2722, 739: 4565, 822: 4564, 831: 4816}, - {7: 4575, 47: 4817}, - {1836, 1836, 1836, 1836, 1836, 7: 1836, 17: 1836, 47: 1836, 82: 1836, 1836, 1836, 1836, 87: 1836, 471: 1836, 478: 1836, 488: 1836, 875: 4818}, - {2242, 2242, 2242, 2242, 4801, 7: 2242, 17: 4798, 47: 2242, 82: 4805, 4665, 4378, 4666, 87: 4377, 471: 4800, 478: 4804, 488: 2242, 851: 4802, 853: 4799, 864: 4803, 874: 4797}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 470: 1838, 659: 4776, 2723, 2724, 2722, 873: 4820}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 4820, 2727, 2728, 2726}, + {1836, 1836, 1836, 1836, 1836, 7: 1836, 17: 1836, 47: 1836, 81: 1836, 1836, 1836, 1836, 1836, 87: 1836, 472: 1836, 479: 1836, 489: 1836, 494: 1836}, + {506: 2701, 730: 2700, 741: 4822}, + {1838, 1838, 1838, 1838, 1838, 7: 1838, 17: 1838, 47: 1838, 81: 1838, 1838, 1838, 1838, 1838, 87: 1838, 472: 1838, 479: 1838, 489: 1838, 494: 1838}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 471: 1842, 479: 1842, 660: 4794, 2727, 2728, 2726, 874: 4795, 938: 4824}, // 2320 - {470: 4821}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 470: 4566, 659: 4095, 2723, 2724, 2722, 739: 4565, 822: 4564, 831: 4822}, - {7: 4575, 47: 4823}, - {1836, 1836, 1836, 1836, 1836, 7: 1836, 17: 1836, 47: 1836, 82: 1836, 1836, 1836, 1836, 87: 1836, 471: 1836, 478: 1836, 488: 1836, 875: 4824}, - {2243, 2243, 2243, 2243, 4801, 7: 2243, 17: 4798, 47: 2243, 82: 4805, 4665, 4378, 4666, 87: 4377, 471: 4800, 478: 4804, 488: 2243, 851: 4802, 853: 4799, 864: 4803, 874: 4797}, + {471: 4825}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 471: 4576, 660: 4105, 2727, 2728, 2726, 740: 4575, 824: 4574, 832: 4826}, + {7: 4585, 47: 4827}, + {1840, 1840, 1840, 1840, 1840, 7: 1840, 17: 1840, 47: 1840, 82: 1840, 1840, 1840, 1840, 87: 1840, 472: 1840, 479: 1840, 489: 1840, 876: 4828}, + {2246, 2246, 2246, 2246, 4811, 7: 2246, 17: 4808, 47: 2246, 82: 4815, 4675, 4388, 4676, 87: 4387, 472: 4810, 479: 4814, 489: 2246, 852: 4812, 854: 4809, 865: 4813, 875: 4807}, // 2325 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 470: 1838, 478: 1838, 659: 4784, 2723, 2724, 2722, 873: 4785, 937: 4826}, - {470: 4827}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 470: 4566, 659: 4095, 2723, 2724, 2722, 739: 4565, 822: 4564, 831: 4828}, - {7: 4575, 47: 4829}, - {1836, 1836, 1836, 1836, 1836, 7: 1836, 17: 1836, 47: 1836, 82: 1836, 1836, 1836, 1836, 87: 1836, 471: 1836, 478: 1836, 488: 1836, 875: 4830}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 471: 1842, 660: 4786, 2727, 2728, 2726, 874: 4830}, + {471: 4831}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 471: 4576, 660: 4105, 2727, 2728, 2726, 740: 4575, 824: 4574, 832: 4832}, + {7: 4585, 47: 4833}, + {1840, 1840, 1840, 1840, 1840, 7: 1840, 17: 1840, 47: 1840, 82: 1840, 1840, 1840, 1840, 87: 1840, 472: 1840, 479: 1840, 489: 1840, 876: 4834}, // 2330 - {2244, 2244, 2244, 2244, 4801, 7: 2244, 17: 4798, 47: 2244, 82: 4805, 4665, 4378, 4666, 87: 4377, 471: 4800, 478: 4804, 488: 2244, 851: 4802, 853: 4799, 864: 4803, 874: 4797}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 4832, 2723, 2724, 2722}, - {228: 4834, 236: 4836, 239: 4835, 1134: 4833}, - {470: 4837}, - {47: 2193, 470: 2193}, + {2247, 2247, 2247, 2247, 4811, 7: 2247, 17: 4808, 47: 2247, 82: 4815, 4675, 4388, 4676, 87: 4387, 472: 4810, 479: 4814, 489: 2247, 852: 4812, 854: 4809, 865: 4813, 875: 4807}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 471: 1842, 479: 1842, 660: 4794, 2727, 2728, 2726, 874: 4795, 938: 4836}, + {471: 4837}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 471: 4576, 660: 4105, 2727, 2728, 2726, 740: 4575, 824: 4574, 832: 4838}, + {7: 4585, 47: 4839}, // 2335 - {47: 2192, 470: 2192}, - {47: 2191, 470: 2191}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 4095, 2723, 2724, 2722, 739: 4096, 804: 4838}, - {7: 4098, 47: 4839}, - {2456, 2456, 2456, 2456, 7: 2456, 488: 2456}, + {1840, 1840, 1840, 1840, 1840, 7: 1840, 17: 1840, 47: 1840, 82: 1840, 1840, 1840, 1840, 87: 1840, 472: 1840, 479: 1840, 489: 1840, 876: 4840}, + {2248, 2248, 2248, 2248, 4811, 7: 2248, 17: 4808, 47: 2248, 82: 4815, 4675, 4388, 4676, 87: 4387, 472: 4810, 479: 4814, 489: 2248, 852: 4812, 854: 4809, 865: 4813, 875: 4807}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 4842, 2727, 2728, 2726}, + {228: 4844, 236: 4846, 239: 4845, 1135: 4843}, + {471: 4847}, // 2340 - {564, 564, 564, 564, 7: 564, 103: 564, 136: 4692, 470: 564, 488: 564, 814: 4691, 832: 4841}, - {2126, 2126, 2126, 2126, 7: 2126, 103: 4843, 470: 4844, 488: 2126, 1093: 4842}, - {2458, 2458, 2458, 2458, 7: 2458, 488: 2458}, - {505: 2697, 729: 4885}, - {488: 4847, 947: 4846, 1092: 4845}, + {47: 2197, 471: 2197}, + {47: 2196, 471: 2196}, + {47: 2195, 471: 2195}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 4105, 2727, 2728, 2726, 740: 4106, 805: 4848}, + {7: 4108, 47: 4849}, // 2345 - {7: 4883, 47: 4882}, - {7: 2124, 47: 2124}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 4848, 2723, 2724, 2722}, - {4: 2103, 2103, 7: 2103, 16: 2103, 18: 2103, 20: 2103, 2103, 2103, 2103, 2103, 2103, 47: 2103, 146: 4853, 342: 4852, 470: 2103, 476: 4851, 498: 4850, 645: 2103, 1263: 4849}, - {4: 2116, 2116, 7: 2116, 16: 2116, 18: 2116, 20: 2116, 2116, 2116, 2116, 2116, 2116, 47: 2116, 470: 2116, 645: 2116, 946: 4869}, + {2460, 2460, 2460, 2460, 7: 2460, 489: 2460}, + {564, 564, 564, 564, 7: 564, 105: 564, 136: 4702, 471: 564, 489: 564, 815: 4701, 833: 4851}, + {2130, 2130, 2130, 2130, 7: 2130, 105: 4853, 471: 4854, 489: 2130, 1094: 4852}, + {2462, 2462, 2462, 2462, 7: 2462, 489: 2462}, + {506: 2701, 730: 4895}, // 2350 - {351: 4854, 540: 4855}, - {4: 2100, 2100, 7: 2100, 16: 2100, 18: 2100, 20: 2100, 2100, 2100, 2100, 2100, 2100, 47: 2100, 470: 2100, 645: 2100}, - {4: 2098, 2098, 7: 2098, 16: 2098, 18: 2098, 20: 2098, 2098, 2098, 2098, 2098, 2098, 47: 2098, 470: 2098, 645: 2098}, - {4: 2097, 2097, 7: 2097, 16: 2097, 18: 2097, 20: 2097, 2097, 2097, 2097, 2097, 2097, 47: 2097, 470: 2097, 645: 2097}, - {396: 4864}, + {489: 4857, 948: 4856, 1093: 4855}, + {7: 4893, 47: 4892}, + {7: 2128, 47: 2128}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 4858, 2727, 2728, 2726}, + {4: 2107, 2107, 7: 2107, 16: 2107, 18: 2107, 20: 2107, 2107, 2107, 2107, 2107, 2107, 47: 2107, 146: 4863, 342: 4862, 471: 2107, 477: 4861, 499: 4860, 646: 2107, 1264: 4859}, // 2355 - {470: 4856}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 3305, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 653: 4858, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 4859, 940: 4860, 1074: 4857}, - {7: 4862, 47: 4861}, - {7: 1918, 47: 1918}, - {7: 1917, 47: 1917, 482: 3643, 3642, 3648, 520: 3644, 553: 3645, 3646, 3639, 3649, 3638, 3647, 3640, 3641}, + {4: 2120, 2120, 7: 2120, 16: 2120, 18: 2120, 20: 2120, 2120, 2120, 2120, 2120, 2120, 47: 2120, 471: 2120, 646: 2120, 947: 4879}, + {351: 4864, 542: 4865}, + {4: 2104, 2104, 7: 2104, 16: 2104, 18: 2104, 20: 2104, 2104, 2104, 2104, 2104, 2104, 47: 2104, 471: 2104, 646: 2104}, + {4: 2102, 2102, 7: 2102, 16: 2102, 18: 2102, 20: 2102, 2102, 2102, 2102, 2102, 2102, 47: 2102, 471: 2102, 646: 2102}, + {4: 2101, 2101, 7: 2101, 16: 2101, 18: 2101, 20: 2101, 2101, 2101, 2101, 2101, 2101, 47: 2101, 471: 2101, 646: 2101}, // 2360 - {7: 1905, 47: 1905}, - {4: 2099, 2099, 7: 2099, 16: 2099, 18: 2099, 20: 2099, 2099, 2099, 2099, 2099, 2099, 47: 2099, 470: 2099, 645: 2099}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 3305, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 653: 4858, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 4859, 940: 4863}, - {7: 1904, 47: 1904}, - {470: 4866, 653: 4865}, + {397: 4874}, + {471: 4866}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 3311, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 654: 4868, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 4869, 941: 4870, 1075: 4867}, + {7: 4872, 47: 4871}, + {7: 1922, 47: 1922}, // 2365 - {4: 2102, 2102, 7: 2102, 16: 2102, 18: 2102, 20: 2102, 2102, 2102, 2102, 2102, 2102, 47: 2102, 470: 2102, 645: 2102}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 3305, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 653: 4858, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 4859, 940: 4860, 1074: 4867}, - {7: 4862, 47: 4868}, - {4: 2101, 2101, 7: 2101, 16: 2101, 18: 2101, 20: 2101, 2101, 2101, 2101, 2101, 2101, 47: 2101, 470: 2101, 645: 2101}, - {4: 4190, 4873, 7: 2121, 16: 4148, 18: 4198, 20: 4191, 4194, 4193, 4196, 4197, 4199, 47: 2121, 470: 4871, 645: 4195, 776: 4200, 808: 4872, 1305: 4870}, + {7: 1921, 47: 1921, 483: 3648, 3649, 3654, 521: 3650, 554: 3651, 3652, 3645, 3655, 3644, 3653, 3646, 3647}, + {7: 1909, 47: 1909}, + {4: 2103, 2103, 7: 2103, 16: 2103, 18: 2103, 20: 2103, 2103, 2103, 2103, 2103, 2103, 47: 2103, 471: 2103, 646: 2103}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 3311, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 654: 4868, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 4869, 941: 4873}, + {7: 1908, 47: 1908}, // 2370 - {7: 2122, 47: 2122}, - {100: 4876, 1136: 4875, 1304: 4874}, - {2115, 2115, 4: 2115, 2115, 7: 2115, 16: 2115, 18: 2115, 20: 2115, 2115, 2115, 2115, 2115, 2115, 47: 2115, 470: 2115, 645: 2115}, - {20: 4329}, - {7: 4880, 47: 4879}, + {471: 4876, 654: 4875}, + {4: 2106, 2106, 7: 2106, 16: 2106, 18: 2106, 20: 2106, 2106, 2106, 2106, 2106, 2106, 47: 2106, 471: 2106, 646: 2106}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 3311, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 654: 4868, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 4869, 941: 4870, 1075: 4877}, + {7: 4872, 47: 4878}, + {4: 2105, 2105, 7: 2105, 16: 2105, 18: 2105, 20: 2105, 2105, 2105, 2105, 2105, 2105, 47: 2105, 471: 2105, 646: 2105}, // 2375 - {7: 2119, 47: 2119}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 4877, 2723, 2724, 2722}, - {4: 2116, 2116, 7: 2116, 16: 2116, 18: 2116, 20: 2116, 2116, 2116, 2116, 2116, 2116, 47: 2116, 645: 2116, 946: 4878}, - {4: 4190, 4873, 7: 2117, 16: 4148, 18: 4198, 20: 4191, 4194, 4193, 4196, 4197, 4199, 47: 2117, 645: 4195, 776: 4200, 808: 4872}, - {7: 2120, 47: 2120}, + {4: 4200, 4883, 7: 2125, 16: 4158, 18: 4208, 20: 4201, 4204, 4203, 4206, 4207, 4209, 47: 2125, 471: 4881, 646: 4205, 777: 4210, 809: 4882, 1306: 4880}, + {7: 2126, 47: 2126}, + {100: 4886, 1137: 4885, 1305: 4884}, + {2119, 2119, 4: 2119, 2119, 7: 2119, 16: 2119, 18: 2119, 20: 2119, 2119, 2119, 2119, 2119, 2119, 47: 2119, 471: 2119, 646: 2119}, + {20: 4339}, // 2380 - {100: 4876, 1136: 4881}, - {7: 2118, 47: 2118}, - {2125, 2125, 2125, 2125, 7: 2125, 469: 2125, 2125, 2125, 475: 2125, 487: 2125, 2125, 498: 2125, 504: 2125, 566: 2125, 642: 2125}, - {488: 4847, 947: 4884}, + {7: 4890, 47: 4889}, {7: 2123, 47: 2123}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 4887, 2727, 2728, 2726}, + {4: 2120, 2120, 7: 2120, 16: 2120, 18: 2120, 20: 2120, 2120, 2120, 2120, 2120, 2120, 47: 2120, 646: 2120, 947: 4888}, + {4: 4200, 4883, 7: 2121, 16: 4158, 18: 4208, 20: 4201, 4204, 4203, 4206, 4207, 4209, 47: 2121, 646: 4205, 777: 4210, 809: 4882}, // 2385 - {2457, 2457, 2457, 2457, 7: 2457, 488: 2457}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 470: 4888, 659: 4095, 2723, 2724, 2722, 739: 4404, 843: 4887}, - {2385, 2385, 2385, 2385, 7: 2385, 4673, 4674, 488: 2385, 924: 4896}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 570: 2376, 579: 2376, 581: 2376, 591: 2376, 621: 4537, 645: 2376, 659: 4095, 2723, 2724, 2722, 671: 2376, 2376, 739: 4404, 828: 4758, 843: 4890, 898: 4891, 963: 4892, 1139: 4889}, - {7: 4894, 47: 4893}, + {7: 2124, 47: 2124}, + {100: 4886, 1137: 4891}, + {7: 2122, 47: 2122}, + {2129, 2129, 2129, 2129, 7: 2129, 470: 2129, 2129, 2129, 476: 2129, 488: 2129, 2129, 499: 2129, 505: 2129, 567: 2129, 643: 2129}, + {489: 4857, 948: 4894}, // 2390 + {7: 2127, 47: 2127}, + {2461, 2461, 2461, 2461, 7: 2461, 489: 2461}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 471: 4898, 660: 4105, 2727, 2728, 2726, 740: 4414, 844: 4897}, + {2389, 2389, 2389, 2389, 7: 2389, 4683, 4684, 489: 2389, 925: 4906}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 571: 2380, 580: 2380, 584: 2380, 636: 2380, 640: 4547, 646: 2380, 660: 4105, 2727, 2728, 2726, 672: 2380, 2380, 740: 4414, 829: 4768, 844: 4900, 899: 4901, 964: 4902, 1140: 4899}, + // 2395 + {7: 4904, 47: 4903}, {7: 437, 47: 437}, {7: 436, 47: 436}, {7: 435, 47: 435}, - {2460, 2460, 2460, 2460, 7: 2460, 488: 2460}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 570: 2376, 579: 2376, 581: 2376, 591: 2376, 621: 4537, 645: 2376, 659: 4095, 2723, 2724, 2722, 671: 2376, 2376, 739: 4404, 828: 4758, 843: 4890, 898: 4891, 963: 4895}, - // 2395 - {7: 434, 47: 434}, - {2461, 2461, 2461, 2461, 7: 2461, 488: 2461}, - {14: 3790, 503: 3791, 643: 3789, 769: 4898}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 3446, 476: 4900, 541: 3715, 659: 3447, 2723, 2724, 2722, 734: 3714, 803: 4899}, - {265, 265, 265, 265, 7: 265, 479: 4902, 488: 265, 1084: 4904}, + {2464, 2464, 2464, 2464, 7: 2464, 489: 2464}, // 2400 - {265, 265, 265, 265, 7: 265, 479: 4902, 488: 265, 1084: 4901}, - {2462, 2462, 2462, 2462, 7: 2462, 488: 2462}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 3446, 541: 3445, 659: 3447, 2723, 2724, 2722, 734: 3444, 867: 4903}, - {264, 264, 264, 264, 7: 264, 488: 264}, - {2463, 2463, 2463, 2463, 7: 2463, 488: 2463}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 571: 2380, 580: 2380, 584: 2380, 636: 2380, 640: 4547, 646: 2380, 660: 4105, 2727, 2728, 2726, 672: 2380, 2380, 740: 4414, 829: 4768, 844: 4900, 899: 4901, 964: 4905}, + {7: 434, 47: 434}, + {2465, 2465, 2465, 2465, 7: 2465, 489: 2465}, + {14: 3798, 504: 3799, 644: 3797, 770: 4908}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 3452, 477: 4910, 541: 3723, 660: 3453, 2727, 2728, 2726, 735: 3722, 804: 4909}, // 2405 - {213: 4906}, - {505: 2697, 729: 2696, 740: 4907}, - {2467, 2467, 2467, 2467, 7: 2467, 178: 4908, 488: 2467, 1072: 4909}, - {262: 4910}, - {2464, 2464, 2464, 2464, 7: 2464, 488: 2464}, + {265, 265, 265, 265, 7: 265, 480: 4912, 489: 265, 1085: 4914}, + {265, 265, 265, 265, 7: 265, 480: 4912, 489: 265, 1085: 4911}, + {2466, 2466, 2466, 2466, 7: 2466, 489: 2466}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 3452, 541: 3451, 660: 3453, 2727, 2728, 2726, 735: 3450, 868: 4913}, + {264, 264, 264, 264, 7: 264, 489: 264}, // 2410 - {472: 4912, 1301: 4911}, - {2466, 2466, 2466, 2466, 7: 4913, 14: 2466, 16: 2466, 19: 2466, 476: 2466, 479: 2466, 488: 2466, 501: 2466, 503: 2466, 643: 2466}, - {263, 263, 263, 263, 7: 263, 14: 263, 16: 263, 19: 263, 476: 263, 479: 263, 488: 263, 501: 263, 503: 263, 643: 263}, - {472: 4914}, - {262, 262, 262, 262, 7: 262, 14: 262, 16: 262, 19: 262, 476: 262, 479: 262, 488: 262, 501: 262, 503: 262, 643: 262}, + {2467, 2467, 2467, 2467, 7: 2467, 489: 2467}, + {213: 4916}, + {506: 2701, 730: 2700, 741: 4917}, + {2471, 2471, 2471, 2471, 7: 2471, 178: 4918, 489: 2471, 1073: 4919}, + {262: 4920}, // 2415 - {6: 396, 27: 396}, - {390, 390, 390, 390, 390, 390, 390, 390, 13: 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 469: 390, 390, 390, 475: 390, 390, 390, 479: 390, 487: 390, 390, 498: 390, 500: 390, 503: 390, 390, 566: 390, 642: 390, 390, 645: 390}, - {4: 4190, 4192, 397, 13: 4209, 2150, 4207, 4148, 4211, 4198, 4227, 4191, 4194, 4193, 4196, 4197, 4199, 4206, 397, 4217, 4218, 4204, 4205, 4210, 4212, 4224, 4223, 4229, 4225, 4222, 4215, 4220, 4221, 4214, 4216, 4219, 4208, 476: 4189, 4226, 479: 2150, 500: 4915, 503: 2150, 643: 2150, 645: 4195, 776: 4200, 788: 4202, 808: 4201, 830: 4203, 834: 4213, 838: 4918}, - {389, 389, 389, 389, 389, 389, 389, 389, 13: 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 469: 389, 389, 389, 475: 389, 389, 389, 479: 389, 487: 389, 389, 498: 389, 500: 389, 503: 389, 389, 566: 389, 642: 389, 389, 645: 389}, - {472: 4921, 476: 4920}, + {2468, 2468, 2468, 2468, 7: 2468, 489: 2468}, + {473: 4922, 1302: 4921}, + {2470, 2470, 2470, 2470, 7: 4923, 14: 2470, 16: 2470, 19: 2470, 477: 2470, 480: 2470, 489: 2470, 502: 2470, 504: 2470, 644: 2470}, + {263, 263, 263, 263, 7: 263, 14: 263, 16: 263, 19: 263, 477: 263, 480: 263, 489: 263, 502: 263, 504: 263, 644: 263}, + {473: 4924}, // 2420 - {2474, 2474, 2474, 2474, 7: 2474, 488: 2474}, - {2473, 2473, 2473, 2473, 7: 2473, 488: 2473}, - {472: 4924, 476: 4923}, - {2476, 2476, 2476, 2476, 7: 2476, 488: 2476}, - {2475, 2475, 2475, 2475, 7: 2475, 488: 2475}, + {262, 262, 262, 262, 7: 262, 14: 262, 16: 262, 19: 262, 477: 262, 480: 262, 489: 262, 502: 262, 504: 262, 644: 262}, + {6: 396, 27: 396}, + {390, 390, 390, 390, 390, 390, 390, 390, 13: 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 470: 390, 390, 390, 476: 390, 390, 390, 480: 390, 488: 390, 390, 499: 390, 501: 390, 504: 390, 390, 567: 390, 643: 390, 390, 646: 390}, + {4: 4200, 4202, 397, 13: 4219, 2154, 4217, 4158, 4221, 4208, 4237, 4201, 4204, 4203, 4206, 4207, 4209, 4216, 397, 4227, 4228, 4214, 4215, 4220, 4222, 4234, 4233, 4239, 4235, 4232, 4225, 4230, 4231, 4224, 4226, 4229, 4218, 477: 4199, 4236, 480: 2154, 501: 4925, 504: 2154, 644: 2154, 646: 4205, 777: 4210, 789: 4212, 809: 4211, 831: 4213, 835: 4223, 839: 4928}, + {389, 389, 389, 389, 389, 389, 389, 389, 13: 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 470: 389, 389, 389, 476: 389, 389, 389, 480: 389, 488: 389, 389, 499: 389, 501: 389, 504: 389, 389, 567: 389, 643: 389, 389, 646: 389}, // 2425 - {2: 2031, 2031, 2031, 2031, 2031, 8: 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 48: 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 472: 2031, 476: 2031, 496: 4230, 501: 4927, 732: 4926}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 4929, 476: 4931, 659: 4932, 2723, 2724, 2722, 881: 4930}, - {476: 4928}, - {2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 13: 2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 47: 2477, 469: 2477, 2477, 2477, 475: 2477, 2477, 2477, 479: 2477, 487: 2477, 2477, 498: 2477, 500: 2477, 2477, 503: 2477, 2477, 566: 2477, 642: 2477, 2477, 645: 2477}, - {2480, 2480, 2480, 2480, 2480, 2480, 2480, 2480, 13: 2480, 2480, 2480, 2480, 2480, 2480, 2480, 2480, 2480, 2480, 2480, 2480, 2480, 2480, 2480, 2480, 2480, 2480, 2480, 2480, 2480, 2480, 2480, 2480, 2480, 2480, 2480, 2480, 2480, 2480, 2480, 2480, 2480, 47: 2480, 469: 2480, 2480, 2480, 475: 2480, 2480, 2480, 479: 2480, 487: 2480, 2480, 498: 2480, 500: 2480, 2480, 503: 2480, 2480, 566: 2480, 642: 2480, 2480, 645: 2480}, + {473: 4931, 477: 4930}, + {2478, 2478, 2478, 2478, 7: 2478, 489: 2478}, + {2477, 2477, 2477, 2477, 7: 2477, 489: 2477}, + {473: 4934, 477: 4933}, + {2480, 2480, 2480, 2480, 7: 2480, 489: 2480}, // 2430 - {2479, 2479, 2479, 2479, 2479, 2479, 2479, 2479, 13: 2479, 2479, 2479, 2479, 2479, 2479, 2479, 2479, 2479, 2479, 2479, 2479, 2479, 2479, 2479, 2479, 2479, 2479, 2479, 2479, 2479, 2479, 2479, 2479, 2479, 2479, 2479, 2479, 2479, 2479, 2479, 2479, 2479, 47: 2479, 469: 2479, 2479, 2479, 475: 2479, 2479, 2479, 479: 2479, 487: 2479, 2479, 498: 2479, 500: 2479, 2479, 503: 2479, 2479, 566: 2479, 642: 2479, 2479, 645: 2479}, - {2478, 2478, 2478, 2478, 2478, 2478, 2478, 2478, 13: 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, 47: 2478, 469: 2478, 2478, 2478, 475: 2478, 2478, 2478, 479: 2478, 487: 2478, 2478, 498: 2478, 500: 2478, 2478, 503: 2478, 2478, 566: 2478, 642: 2478, 2478, 645: 2478}, - {2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 13: 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 47: 2166, 86: 2166, 88: 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 469: 2166, 2166, 2166, 475: 2166, 2166, 2166, 479: 2166, 487: 2166, 2166, 498: 2166, 500: 2166, 2166, 503: 2166, 2166, 566: 2166, 642: 2166, 2166, 645: 2166}, - {213: 4934}, - {2495, 2495}, + {2479, 2479, 2479, 2479, 7: 2479, 489: 2479}, + {2: 2035, 2035, 2035, 2035, 2035, 8: 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 48: 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 473: 2035, 477: 2035, 496: 4240, 502: 4937, 733: 4936}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 4939, 477: 4941, 660: 4942, 2727, 2728, 2726, 882: 4940}, + {477: 4938}, + {2481, 2481, 2481, 2481, 2481, 2481, 2481, 2481, 13: 2481, 2481, 2481, 2481, 2481, 2481, 2481, 2481, 2481, 2481, 2481, 2481, 2481, 2481, 2481, 2481, 2481, 2481, 2481, 2481, 2481, 2481, 2481, 2481, 2481, 2481, 2481, 2481, 2481, 2481, 2481, 2481, 2481, 47: 2481, 470: 2481, 2481, 2481, 476: 2481, 2481, 2481, 480: 2481, 488: 2481, 2481, 499: 2481, 501: 2481, 2481, 504: 2481, 2481, 567: 2481, 643: 2481, 2481, 646: 2481}, // 2435 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 4696, 2723, 2724, 2722, 785: 4936}, - {2337, 2337, 7: 4697, 471: 4939, 645: 4938, 799: 4937}, - {2497, 2497}, - {897, 897, 2963, 2808, 2844, 2965, 2735, 897, 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 471: 897, 581: 4956, 659: 4955, 2723, 2724, 2722, 852: 4954}, - {505: 4944, 571: 3381, 3380, 729: 4942, 815: 4943, 986: 4941, 1166: 4940}, + {2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 13: 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 47: 2484, 470: 2484, 2484, 2484, 476: 2484, 2484, 2484, 480: 2484, 488: 2484, 2484, 499: 2484, 501: 2484, 2484, 504: 2484, 2484, 567: 2484, 643: 2484, 2484, 646: 2484}, + {2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 13: 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 47: 2483, 470: 2483, 2483, 2483, 476: 2483, 2483, 2483, 480: 2483, 488: 2483, 2483, 499: 2483, 501: 2483, 2483, 504: 2483, 2483, 567: 2483, 643: 2483, 2483, 646: 2483}, + {2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482, 13: 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482, 47: 2482, 470: 2482, 2482, 2482, 476: 2482, 2482, 2482, 480: 2482, 488: 2482, 2482, 499: 2482, 501: 2482, 2482, 504: 2482, 2482, 567: 2482, 643: 2482, 2482, 646: 2482}, + {2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 13: 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 47: 2170, 86: 2170, 88: 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 470: 2170, 2170, 2170, 476: 2170, 2170, 2170, 480: 2170, 488: 2170, 2170, 499: 2170, 501: 2170, 2170, 504: 2170, 2170, 567: 2170, 643: 2170, 2170, 646: 2170}, + {213: 4944}, // 2440 - {2336, 2336, 7: 4952}, - {2335, 2335, 7: 2335}, - {227: 4946, 231: 4948, 278: 4949, 297: 4947}, - {188: 4945}, - {188: 2196, 227: 1957, 231: 1957, 278: 1957, 297: 1957}, + {2499, 2499}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 4706, 2727, 2728, 2726, 786: 4946}, + {2341, 2341, 7: 4707, 472: 4949, 646: 4948, 801: 4947}, + {2501, 2501}, + {899, 899, 2967, 2812, 2848, 2969, 2739, 899, 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 472: 899, 584: 4966, 660: 4965, 2727, 2728, 2726, 853: 4964}, // 2445 - {2328, 2328, 7: 2328}, - {2333, 2333, 7: 2333}, - {2332, 2332, 7: 2332}, - {327: 4950, 403: 4951}, - {2329, 2329, 7: 2329}, + {506: 4954, 572: 3387, 3386, 730: 4952, 816: 4953, 987: 4951, 1167: 4950}, + {2340, 2340, 7: 4962}, + {2339, 2339, 7: 2339}, + {227: 4956, 231: 4958, 278: 4959, 297: 4957}, + {188: 4955}, // 2450 - {2331, 2331, 7: 2331}, - {2330, 2330, 7: 2330}, - {505: 4944, 571: 3381, 3380, 729: 4942, 815: 4943, 986: 4953}, - {2334, 2334, 7: 2334}, - {2337, 2337, 7: 4958, 471: 4939, 799: 4957}, + {188: 2200, 227: 1961, 231: 1961, 278: 1961, 297: 1961}, + {2332, 2332, 7: 2332}, + {2337, 2337, 7: 2337}, + {2336, 2336, 7: 2336}, + {327: 4960, 404: 4961}, // 2455 - {896, 896, 7: 896, 47: 896, 471: 896}, - {894, 894, 7: 894, 47: 894, 471: 894}, - {2496, 2496}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 581: 4960, 659: 4959, 2723, 2724, 2722}, - {895, 895, 7: 895, 47: 895, 471: 895}, + {2333, 2333, 7: 2333}, + {2335, 2335, 7: 2335}, + {2334, 2334, 7: 2334}, + {506: 4954, 572: 3387, 3386, 730: 4952, 816: 4953, 987: 4963}, + {2338, 2338, 7: 2338}, // 2460 - {893, 893, 7: 893, 47: 893, 471: 893}, - {2498, 2498}, - {2472, 2472}, - {367: 5028}, - {488: 5020}, + {2341, 2341, 7: 4968, 472: 4949, 801: 4967}, + {898, 898, 7: 898, 47: 898, 472: 898}, + {896, 896, 7: 896, 47: 896, 472: 896}, + {2500, 2500}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 584: 4970, 660: 4969, 2727, 2728, 2726}, // 2465 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 655: 4967, 659: 4966, 2723, 2724, 2722}, - {2116, 2116, 4: 2116, 2116, 16: 2116, 18: 2116, 20: 2116, 2116, 2116, 2116, 2116, 2116, 195: 4149, 645: 2116, 921: 5018, 946: 5019}, - {141: 2134, 353: 4972, 391: 4973, 524: 4971, 570: 2134, 1067: 4974, 4969, 1137: 4970, 1265: 4968}, - {2128, 2128, 100: 2128, 103: 5008, 469: 2128, 2128, 2128, 475: 2128, 487: 2128, 498: 2128, 504: 2128, 566: 2128, 642: 2128, 1266: 5007}, - {141: 4995, 570: 4994}, + {897, 897, 7: 897, 47: 897, 472: 897}, + {895, 895, 7: 895, 47: 895, 472: 895}, + {2502, 2502}, + {2476, 2476}, + {367: 5038}, // 2470 - {2142, 2142, 100: 2142, 103: 2142, 469: 2142, 2142, 2142, 475: 2142, 487: 2142, 498: 2142, 504: 2142, 566: 2142, 642: 2142}, - {98: 3898, 107: 3897, 470: 4987, 829: 4988}, - {98: 3898, 107: 3897, 470: 4980, 829: 4981}, - {2135, 2135, 100: 2135, 103: 2135, 469: 2135, 2135, 2135, 475: 2135, 487: 2135, 490: 4976, 498: 2135, 504: 2135, 566: 2135, 578: 4975, 642: 2135}, - {141: 2133, 570: 2133}, + {489: 5030}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 657: 4977, 660: 4976, 2727, 2728, 2726}, + {2120, 2120, 4: 2120, 2120, 16: 2120, 18: 2120, 20: 2120, 2120, 2120, 2120, 2120, 2120, 195: 4159, 646: 2120, 922: 5028, 947: 5029}, + {141: 2138, 353: 4982, 392: 4983, 525: 4981, 571: 2138, 1068: 4984, 4979, 1138: 4980, 1266: 4978}, + {2132, 2132, 100: 2132, 105: 5018, 470: 2132, 2132, 2132, 476: 2132, 488: 2132, 499: 2132, 505: 2132, 567: 2132, 643: 2132, 1267: 5017}, // 2475 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 4978}, - {505: 2697, 729: 2696, 740: 4977}, - {2136, 2136, 100: 2136, 103: 2136, 469: 2136, 2136, 2136, 475: 2136, 487: 2136, 498: 2136, 504: 2136, 566: 2136, 642: 2136}, - {105: 3420, 3416, 108: 3413, 3428, 111: 3415, 3412, 3414, 3418, 3419, 3424, 3423, 3422, 3426, 3427, 3421, 3425, 124: 3417, 502: 3302, 506: 3300, 3301, 3299, 3297, 528: 3410, 3407, 3409, 3408, 3404, 3406, 3405, 3402, 3403, 3401, 3411, 730: 3298, 3296, 801: 3400, 825: 4979}, - {2137, 2137, 100: 2137, 103: 2137, 469: 2137, 2137, 2137, 475: 2137, 487: 2137, 498: 2137, 504: 2137, 566: 2137, 642: 2137}, + {141: 5005, 571: 5004}, + {2146, 2146, 100: 2146, 105: 2146, 470: 2146, 2146, 2146, 476: 2146, 488: 2146, 499: 2146, 505: 2146, 567: 2146, 643: 2146}, + {98: 3906, 107: 3905, 471: 4997, 830: 4998}, + {98: 3906, 107: 3905, 471: 4990, 830: 4991}, + {2139, 2139, 100: 2139, 105: 2139, 470: 2139, 2139, 2139, 476: 2139, 488: 2139, 491: 4986, 499: 2139, 505: 2139, 567: 2139, 579: 4985, 643: 2139}, // 2480 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 3305, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 4985}, - {470: 4982}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 4095, 2723, 2724, 2722, 739: 4096, 804: 4983}, - {7: 4098, 47: 4984}, - {2138, 2138, 100: 2138, 103: 2138, 469: 2138, 2138, 2138, 475: 2138, 487: 2138, 498: 2138, 504: 2138, 566: 2138, 642: 2138}, + {141: 2137, 571: 2137}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 4988}, + {506: 2701, 730: 2700, 741: 4987}, + {2140, 2140, 100: 2140, 105: 2140, 470: 2140, 2140, 2140, 476: 2140, 488: 2140, 499: 2140, 505: 2140, 567: 2140, 643: 2140}, + {101: 3426, 104: 3422, 108: 3419, 3434, 3421, 3418, 3420, 3424, 3425, 3430, 3429, 3428, 3432, 3433, 3427, 3431, 123: 3423, 503: 3307, 507: 3305, 3306, 3304, 3302, 529: 3416, 3413, 3415, 3414, 3410, 3412, 3411, 3408, 3409, 3407, 3417, 731: 3303, 3301, 800: 3406, 819: 4989}, // 2485 - {47: 4986, 482: 3643, 3642, 3648, 520: 3644, 553: 3645, 3646, 3639, 3649, 3638, 3647, 3640, 3641}, - {2139, 2139, 100: 2139, 103: 2139, 469: 2139, 2139, 2139, 475: 2139, 487: 2139, 498: 2139, 504: 2139, 566: 2139, 642: 2139}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 3305, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 4992}, - {470: 4989}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 4095, 2723, 2724, 2722, 739: 4096, 804: 4990}, + {2141, 2141, 100: 2141, 105: 2141, 470: 2141, 2141, 2141, 476: 2141, 488: 2141, 499: 2141, 505: 2141, 567: 2141, 643: 2141}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 3311, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 4995}, + {471: 4992}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 4105, 2727, 2728, 2726, 740: 4106, 805: 4993}, + {7: 4108, 47: 4994}, // 2490 - {7: 4098, 47: 4991}, - {2140, 2140, 100: 2140, 103: 2140, 469: 2140, 2140, 2140, 475: 2140, 487: 2140, 498: 2140, 504: 2140, 566: 2140, 642: 2140}, - {47: 4993, 482: 3643, 3642, 3648, 520: 3644, 553: 3645, 3646, 3639, 3649, 3638, 3647, 3640, 3641}, - {2141, 2141, 100: 2141, 103: 2141, 469: 2141, 2141, 2141, 475: 2141, 487: 2141, 498: 2141, 504: 2141, 566: 2141, 642: 2141}, - {81: 5000, 470: 2144, 1264: 4999}, + {2142, 2142, 100: 2142, 105: 2142, 470: 2142, 2142, 2142, 476: 2142, 488: 2142, 499: 2142, 505: 2142, 567: 2142, 643: 2142}, + {47: 4996, 483: 3648, 3649, 3654, 521: 3650, 554: 3651, 3652, 3645, 3655, 3644, 3653, 3646, 3647}, + {2143, 2143, 100: 2143, 105: 2143, 470: 2143, 2143, 2143, 476: 2143, 488: 2143, 499: 2143, 505: 2143, 567: 2143, 643: 2143}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 3311, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 5002}, + {471: 4999}, // 2495 - {470: 4996}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 3305, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 4997}, - {47: 4998, 482: 3643, 3642, 3648, 520: 3644, 553: 3645, 3646, 3639, 3649, 3638, 3647, 3640, 3641}, - {2145, 2145, 100: 2145, 103: 2145, 215: 2145, 469: 2145, 2145, 2145, 475: 2145, 487: 2145, 498: 2145, 504: 2145, 566: 2145, 642: 2145}, - {470: 5003}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 4105, 2727, 2728, 2726, 740: 4106, 805: 5000}, + {7: 4108, 47: 5001}, + {2144, 2144, 100: 2144, 105: 2144, 470: 2144, 2144, 2144, 476: 2144, 488: 2144, 499: 2144, 505: 2144, 567: 2144, 643: 2144}, + {47: 5003, 483: 3648, 3649, 3654, 521: 3650, 554: 3651, 3652, 3645, 3655, 3644, 3653, 3646, 3647}, + {2145, 2145, 100: 2145, 105: 2145, 470: 2145, 2145, 2145, 476: 2145, 488: 2145, 499: 2145, 505: 2145, 567: 2145, 643: 2145}, // 2500 - {496: 5001}, - {505: 2697, 729: 5002}, - {470: 2143}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 2303, 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 4095, 2723, 2724, 2722, 739: 4096, 804: 5004, 997: 5005}, - {7: 4098, 47: 2302}, + {81: 5010, 471: 2148, 1265: 5009}, + {471: 5006}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 3311, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 5007}, + {47: 5008, 483: 3648, 3649, 3654, 521: 3650, 554: 3651, 3652, 3645, 3655, 3644, 3653, 3646, 3647}, + {2149, 2149, 100: 2149, 105: 2149, 215: 2149, 470: 2149, 2149, 2149, 476: 2149, 488: 2149, 499: 2149, 505: 2149, 567: 2149, 643: 2149}, // 2505 - {47: 5006}, - {2146, 2146, 100: 2146, 103: 2146, 215: 2146, 469: 2146, 2146, 2146, 475: 2146, 487: 2146, 498: 2146, 504: 2146, 566: 2146, 642: 2146}, - {2132, 2132, 100: 5011, 469: 2132, 2132, 2132, 475: 2132, 487: 2132, 498: 2132, 504: 2132, 566: 2132, 642: 2132, 1307: 5010}, - {505: 2697, 729: 2696, 740: 5009}, - {2127, 2127, 100: 2127, 469: 2127, 2127, 2127, 475: 2127, 487: 2127, 498: 2127, 504: 2127, 566: 2127, 642: 2127}, + {471: 5013}, + {496: 5011}, + {506: 2701, 730: 5012}, + {471: 2147}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 2307, 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 4105, 2727, 2728, 2726, 740: 4106, 805: 5014, 998: 5015}, // 2510 - {2126, 2126, 469: 2126, 4844, 2126, 475: 2126, 487: 2126, 498: 2126, 504: 2126, 566: 2126, 642: 2126, 1093: 5017}, - {655: 5012}, - {141: 2134, 570: 2134, 1067: 4974, 4969, 1137: 5013}, - {2130, 2130, 215: 5015, 469: 2130, 2130, 2130, 475: 2130, 487: 2130, 498: 2130, 504: 2130, 566: 2130, 642: 2130, 1306: 5014}, - {2131, 2131, 469: 2131, 2131, 2131, 475: 2131, 487: 2131, 498: 2131, 504: 2131, 566: 2131, 642: 2131}, + {7: 4108, 47: 2306}, + {47: 5016}, + {2150, 2150, 100: 2150, 105: 2150, 215: 2150, 470: 2150, 2150, 2150, 476: 2150, 488: 2150, 499: 2150, 505: 2150, 567: 2150, 643: 2150}, + {2136, 2136, 100: 5021, 470: 2136, 2136, 2136, 476: 2136, 488: 2136, 499: 2136, 505: 2136, 567: 2136, 643: 2136, 1308: 5020}, + {506: 2701, 730: 2700, 741: 5019}, // 2515 - {505: 2697, 729: 2696, 740: 5016}, - {2129, 2129, 469: 2129, 2129, 2129, 475: 2129, 487: 2129, 498: 2129, 504: 2129, 566: 2129, 642: 2129}, - {2147, 2147, 469: 2147, 2147, 2147, 475: 2147, 487: 2147, 498: 2147, 504: 2147, 566: 2147, 642: 2147}, - {2469, 2469}, - {2468, 2468, 4: 4190, 4873, 16: 4148, 18: 4198, 20: 4191, 4194, 4193, 4196, 4197, 4199, 645: 4195, 776: 4200, 808: 4872}, + {2131, 2131, 100: 2131, 470: 2131, 2131, 2131, 476: 2131, 488: 2131, 499: 2131, 505: 2131, 567: 2131, 643: 2131}, + {2130, 2130, 470: 2130, 4854, 2130, 476: 2130, 488: 2130, 499: 2130, 505: 2130, 567: 2130, 643: 2130, 1094: 5027}, + {657: 5022}, + {141: 2138, 571: 2138, 1068: 4984, 4979, 1138: 5023}, + {2134, 2134, 215: 5025, 470: 2134, 2134, 2134, 476: 2134, 488: 2134, 499: 2134, 505: 2134, 567: 2134, 643: 2134, 1307: 5024}, // 2520 - {564, 564, 564, 564, 564, 564, 564, 8: 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, 564, 564, 564, 48: 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, 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, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 4692, 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, 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, 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, 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, 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, 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, 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, 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, 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, 564, 564, 564, 564, 564, 564, 564, 564, 814: 4691, 832: 5021}, - {2410, 2410, 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 4696, 2723, 2724, 2722, 785: 5023, 1274: 5022}, - {2470, 2470}, - {7: 4697, 492: 5024}, - {470: 5025}, + {2135, 2135, 470: 2135, 2135, 2135, 476: 2135, 488: 2135, 499: 2135, 505: 2135, 567: 2135, 643: 2135}, + {506: 2701, 730: 2700, 741: 5026}, + {2133, 2133, 470: 2133, 2133, 2133, 476: 2133, 488: 2133, 499: 2133, 505: 2133, 567: 2133, 643: 2133}, + {2151, 2151, 470: 2151, 2151, 2151, 476: 2151, 488: 2151, 499: 2151, 505: 2151, 567: 2151, 643: 2151}, + {2473, 2473}, // 2525 - {488: 4847, 947: 4846, 1092: 5026}, - {7: 4883, 47: 5027}, - {2409, 2409}, - {2471, 2471}, - {136: 5030, 876: 102, 1071: 5031}, + {2472, 2472, 4: 4200, 4883, 16: 4158, 18: 4208, 20: 4201, 4204, 4203, 4206, 4207, 4209, 646: 4205, 777: 4210, 809: 4882}, + {564, 564, 564, 564, 564, 564, 564, 8: 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, 564, 564, 564, 48: 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, 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, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 4702, 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, 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, 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, 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, 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, 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, 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, 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, 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, 564, 564, 564, 564, 564, 564, 564, 564, 564, 815: 4701, 833: 5031}, + {2414, 2414, 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 4706, 2727, 2728, 2726, 786: 5033, 1275: 5032}, + {2474, 2474}, + {7: 4707, 493: 5034}, // 2530 - {876: 101}, - {876: 5032}, - {472: 5033}, - {17, 17, 179: 17, 355: 5035, 654: 17, 1243: 5034}, - {15, 15, 179: 5038, 654: 15, 1242: 5037}, + {471: 5035}, + {489: 4857, 948: 4856, 1093: 5036}, + {7: 4893, 47: 5037}, + {2413, 2413}, + {2475, 2475}, // 2535 - {505: 2697, 729: 5036}, - {16, 16, 179: 16, 654: 16}, - {87, 87, 654: 3919, 939: 5045}, - {13, 13, 183: 13, 368: 5040, 654: 13, 1268: 5039}, - {11, 11, 183: 5043, 654: 11, 1267: 5042}, + {136: 5040, 877: 102, 1072: 5041}, + {877: 101}, + {877: 5042}, + {473: 5043}, + {17, 17, 179: 17, 355: 5045, 655: 17, 1244: 5044}, // 2540 - {505: 2697, 729: 5041}, - {12, 12, 183: 12, 654: 12}, - {14, 14, 654: 14}, - {505: 2697, 729: 5044}, - {10, 10, 654: 10}, + {15, 15, 179: 5048, 655: 15, 1243: 5047}, + {506: 2701, 730: 5046}, + {16, 16, 179: 16, 655: 16}, + {87, 87, 655: 3927, 940: 5055}, + {13, 13, 183: 13, 368: 5050, 655: 13, 1269: 5049}, // 2545 + {11, 11, 183: 5053, 655: 11, 1268: 5052}, + {506: 2701, 730: 5051}, + {12, 12, 183: 12, 655: 12}, + {14, 14, 655: 14}, + {506: 2701, 730: 5054}, + // 2550 + {10, 10, 655: 10}, {18, 18}, - {26: 55, 137: 55, 505: 55}, + {26: 55, 137: 55, 506: 55}, {59, 59}, - {505: 2697, 729: 5051}, - {505: 2697, 729: 5050}, - // 2550 + {506: 2701, 730: 5061}, + // 2555 + {506: 2701, 730: 5060}, {57, 57}, {58, 58}, - {490: 5055}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 4095, 2723, 2724, 2722, 739: 5054}, - {490: 60}, - // 2555 - {505: 2697, 729: 5056}, - {246: 5058, 471: 64, 735: 64, 1197: 5057}, - {471: 2550, 735: 2516, 755: 5061, 762: 2517, 775: 2518, 779: 5062}, - {380: 5059}, - {137: 5060, 471: 63, 735: 63}, + {491: 5065}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 4105, 2727, 2728, 2726, 740: 5064}, // 2560 - {471: 62, 735: 62}, - {735: 2516, 762: 5063, 775: 5064}, - {65, 65}, - {2054, 2054}, - {2053, 2053}, + {491: 60}, + {506: 2701, 730: 5066}, + {246: 5068, 472: 64, 736: 64, 1198: 5067}, + {472: 2554, 736: 2520, 756: 5071, 763: 2521, 776: 2522, 780: 5072}, + {380: 5069}, // 2565 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3875, 2723, 2724, 2722, 733: 5069, 1140: 5070, 1309: 5068}, - {74, 74, 74, 74, 74, 74, 74, 8: 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 48: 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74}, - {73, 73, 73, 73, 73, 73, 73, 8: 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 48: 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73}, - {75, 75, 7: 5076}, - {667: 5072, 683: 5073, 1238: 5071}, + {137: 5070, 472: 63, 736: 63}, + {472: 62, 736: 62}, + {736: 2520, 763: 5073, 776: 5074}, + {65, 65}, + {2058, 2058}, // 2570 + {2057, 2057}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3883, 2727, 2728, 2726, 734: 5079, 1141: 5080, 1310: 5078}, + {74, 74, 74, 74, 74, 74, 74, 8: 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 48: 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74}, + {73, 73, 73, 73, 73, 73, 73, 8: 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 48: 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73}, + {75, 75, 7: 5086}, + // 2575 + {668: 5082, 684: 5083, 1239: 5081}, {67, 67, 7: 67}, {72, 72, 7: 72}, - {71, 71, 7: 71, 136: 5075}, - {69, 69, 7: 69, 136: 5074}, + {71, 71, 7: 71, 136: 5085}, + {69, 69, 7: 69, 136: 5084}, + // 2580 {68, 68, 7: 68}, - // 2575 {70, 70, 7: 70}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3875, 2723, 2724, 2722, 733: 5069, 1140: 5077}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3883, 2727, 2728, 2726, 734: 5079, 1141: 5087}, {66, 66, 7: 66}, {76, 76}, - {136: 5030, 876: 102, 1071: 5082}, - // 2580 - {472: 5081}, - {54, 54}, - {876: 5083}, - {472: 5084}, - {487: 5085, 492: 2096, 504: 5086, 1033: 5087}, // 2585 - {2095, 2095, 469: 2095, 2095, 2095, 475: 2095, 492: 2095, 498: 2095, 566: 2095, 642: 2095}, - {2094, 2094, 469: 2094, 2094, 2094, 475: 2094, 492: 2094, 498: 2094, 566: 2094, 642: 2094}, - {492: 5088}, - {566: 5089}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3875, 2723, 2724, 2722, 733: 5090}, + {136: 5040, 877: 102, 1072: 5092}, + {473: 5091}, + {54, 54}, + {877: 5093}, + {473: 5094}, // 2590 - {104, 104, 98: 104, 107: 104, 470: 104, 487: 104, 501: 104, 643: 5092, 654: 104, 1179: 5091}, - {100, 100, 98: 3898, 107: 3897, 470: 100, 487: 100, 501: 100, 654: 100, 829: 3896, 1044: 5095}, - {501: 5093}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 3446, 541: 3715, 659: 3447, 2723, 2724, 2722, 734: 3714, 803: 5094}, - {103, 103, 98: 103, 107: 103, 470: 103, 487: 103, 501: 103, 654: 103}, + {488: 5095, 493: 2100, 505: 5096, 1034: 5097}, + {2099, 2099, 470: 2099, 2099, 2099, 476: 2099, 493: 2099, 499: 2099, 567: 2099, 643: 2099}, + {2098, 2098, 470: 2098, 2098, 2098, 476: 2098, 493: 2098, 499: 2098, 567: 2098, 643: 2098}, + {493: 5098}, + {567: 5099}, // 2595 - {87, 87, 470: 87, 487: 87, 501: 87, 654: 3919, 939: 5096}, - {106, 106, 470: 106, 487: 5098, 501: 106, 1220: 5097}, - {2291, 2291, 470: 5101, 501: 2291, 1185: 5102}, - {505: 2697, 729: 5099}, - {654: 5100}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3883, 2727, 2728, 2726, 734: 5100}, + {104, 104, 98: 104, 107: 104, 471: 104, 488: 104, 502: 104, 644: 5102, 655: 104, 1180: 5101}, + {100, 100, 98: 3906, 107: 3905, 471: 100, 488: 100, 502: 100, 655: 100, 830: 3904, 1045: 5105}, + {502: 5103}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 3452, 541: 3723, 660: 3453, 2727, 2728, 2726, 735: 3722, 804: 5104}, // 2600 - {105, 105, 470: 105, 501: 105}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 2297, 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 565: 3305, 659: 4095, 2723, 2724, 2722, 706: 5115, 739: 5114, 998: 5113, 1183: 5112, 5116}, - {81, 81, 501: 5104, 1237: 5103}, - {107, 107}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3734, 2723, 2724, 2722, 707: 5107, 1069: 5106, 1236: 5105}, + {103, 103, 98: 103, 107: 103, 471: 103, 488: 103, 502: 103, 655: 103}, + {87, 87, 471: 87, 488: 87, 502: 87, 655: 3927, 940: 5106}, + {106, 106, 471: 106, 488: 5108, 502: 106, 1221: 5107}, + {2295, 2295, 471: 5111, 502: 2295, 1186: 5112}, + {506: 2701, 730: 5109}, // 2605 - {80, 80, 7: 5110}, + {655: 5110}, + {105, 105, 471: 105, 502: 105}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 2301, 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 566: 3311, 660: 4105, 2727, 2728, 2726, 707: 5125, 740: 5124, 999: 5123, 1184: 5122, 5126}, + {81, 81, 502: 5114, 1238: 5113}, + {107, 107}, + // 2610 + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3742, 2727, 2728, 2726, 708: 5117, 1070: 5116, 1237: 5115}, + {80, 80, 7: 5120}, {78, 78, 7: 78}, - {496: 5108}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3857, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3853, 792: 5109}, + {496: 5118}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3865, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3861, 793: 5119}, + // 2615 {77, 77, 7: 77}, - // 2610 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3734, 2723, 2724, 2722, 707: 5107, 1069: 5111}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3742, 2727, 2728, 2726, 708: 5117, 1070: 5121}, {79, 79, 7: 79}, - {7: 5118, 47: 2296}, - {7: 2295, 47: 2295}, - {7: 2293, 47: 2293}, - // 2615 - {7: 2292, 47: 2292}, - {47: 5117}, - {2290, 2290, 501: 2290}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 565: 3305, 659: 4095, 2723, 2724, 2722, 706: 5115, 739: 5114, 998: 5119}, - {7: 2294, 47: 2294}, + {7: 5128, 47: 2300}, + {7: 2299, 47: 2299}, // 2620 - {7: 164, 149: 164, 469: 164, 495: 164, 565: 1816, 646: 164, 663: 1816}, - {7: 129, 469: 129, 129, 495: 129, 565: 1786, 646: 129, 663: 1786}, - {7: 143, 469: 143, 143, 495: 143, 565: 1760, 646: 143, 663: 1760}, - {7: 130, 469: 130, 130, 495: 130, 565: 1757, 646: 130, 663: 1757}, - {7: 119, 469: 119, 119, 495: 119, 565: 1722, 646: 119, 663: 1722}, + {7: 2297, 47: 2297}, + {7: 2296, 47: 2296}, + {47: 5127}, + {2294, 2294, 502: 2294}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 566: 3311, 660: 4105, 2727, 2728, 2726, 707: 5125, 740: 5124, 999: 5129}, // 2625 - {7: 139, 469: 139, 139, 495: 139, 565: 1645, 646: 139, 663: 1645}, - {7: 144, 469: 144, 144, 495: 144, 565: 1638, 646: 144, 663: 1638}, - {319: 5229, 384: 5228, 565: 1619, 663: 1619}, - {7: 131, 469: 131, 131, 495: 131, 565: 1616, 646: 131, 663: 1616}, - {7: 120, 469: 120, 120, 495: 120, 565: 1613, 646: 120, 663: 1613}, + {7: 2298, 47: 2298}, + {7: 164, 149: 164, 470: 164, 497: 164, 566: 1820, 647: 164, 664: 1820}, + {7: 129, 470: 129, 129, 497: 129, 566: 1790, 647: 129, 664: 1790}, + {7: 143, 470: 143, 143, 497: 143, 566: 1764, 647: 143, 664: 1764}, + {7: 130, 470: 130, 130, 497: 130, 566: 1761, 647: 130, 664: 1761}, // 2630 - {565: 5226, 663: 5225}, - {7: 724, 469: 724, 495: 724, 565: 256, 646: 724, 663: 256}, - {7: 723, 469: 723, 495: 723, 646: 723}, - {7: 160, 149: 5224, 469: 160, 495: 160, 646: 160}, - {7: 162, 469: 162, 495: 162, 646: 162}, + {7: 119, 470: 119, 119, 497: 119, 566: 1726, 647: 119, 664: 1726}, + {7: 139, 470: 139, 139, 497: 139, 566: 1649, 647: 139, 664: 1649}, + {7: 144, 470: 144, 144, 497: 144, 566: 1642, 647: 144, 664: 1642}, + {319: 5239, 385: 5238, 566: 1623, 664: 1623}, + {7: 131, 470: 131, 131, 497: 131, 566: 1620, 647: 131, 664: 1620}, // 2635 - {7: 161, 469: 161, 495: 161, 646: 161}, - {495: 5222}, - {7: 140, 469: 140, 140, 492: 5220, 495: 140, 646: 140}, - {7: 157, 469: 157, 495: 157, 646: 157}, - {7: 5172, 469: 5173, 495: 5174}, + {7: 120, 470: 120, 120, 497: 120, 566: 1617, 647: 120, 664: 1617}, + {566: 5236, 664: 5235}, + {7: 725, 470: 725, 497: 725, 566: 256, 647: 725, 664: 256}, + {7: 724, 470: 724, 497: 724, 647: 724}, + {7: 160, 149: 5234, 470: 160, 497: 160, 647: 160}, // 2640 - {7: 155, 469: 155, 5169, 495: 155, 646: 155}, - {7: 153, 184: 5168, 469: 153, 153, 495: 153, 646: 153}, - {7: 151, 276: 5167, 469: 151, 151, 495: 151, 646: 151}, - {7: 150, 18: 5161, 99: 5163, 162: 5162, 164: 5160, 169: 5164, 276: 5165, 469: 150, 150, 495: 150, 646: 150}, - {7: 147, 469: 147, 147, 495: 147, 646: 147}, + {7: 162, 470: 162, 497: 162, 647: 162}, + {7: 161, 470: 161, 497: 161, 647: 161}, + {497: 5232}, + {7: 140, 470: 140, 140, 493: 5230, 497: 140, 647: 140}, + {7: 157, 470: 157, 497: 157, 647: 157}, // 2645 - {7: 146, 469: 146, 146, 495: 146, 646: 146}, - {7: 145, 169: 5159, 469: 145, 145, 495: 145, 646: 145}, - {7: 142, 469: 142, 142, 495: 142, 646: 142}, - {7: 141, 469: 141, 141, 495: 141, 646: 141}, - {99: 5158, 1016: 5157}, + {7: 5182, 470: 5183, 497: 5184}, + {7: 155, 470: 155, 5179, 497: 155, 647: 155}, + {7: 153, 184: 5178, 470: 153, 153, 497: 153, 647: 153}, + {7: 151, 276: 5177, 470: 151, 151, 497: 151, 647: 151}, + {7: 150, 18: 5171, 99: 5173, 162: 5172, 164: 5170, 169: 5174, 276: 5175, 470: 150, 150, 497: 150, 647: 150}, // 2650 - {7: 137, 469: 137, 137, 495: 137, 646: 137}, - {901: 5156}, - {7: 135, 469: 135, 135, 495: 135, 646: 135}, - {7: 132, 469: 132, 132, 495: 132, 646: 132}, - {110: 5155}, + {7: 147, 470: 147, 147, 497: 147, 647: 147}, + {7: 146, 470: 146, 146, 497: 146, 647: 146}, + {7: 145, 169: 5169, 470: 145, 145, 497: 145, 647: 145}, + {7: 142, 470: 142, 142, 497: 142, 647: 142}, + {7: 141, 470: 141, 141, 497: 141, 647: 141}, // 2655 - {7: 127, 469: 127, 127, 495: 127, 646: 127}, - {7: 136, 469: 136, 136, 495: 136, 646: 136}, - {7: 138, 469: 138, 138, 495: 138, 646: 138}, - {7: 125, 469: 125, 125, 495: 125, 646: 125}, - {7: 123, 469: 123, 123, 495: 123, 646: 123}, + {99: 5168, 1017: 5167}, + {7: 137, 470: 137, 137, 497: 137, 647: 137}, + {902: 5166}, + {7: 135, 470: 135, 135, 497: 135, 647: 135}, + {7: 132, 470: 132, 132, 497: 132, 647: 132}, // 2660 - {7: 149, 469: 149, 149, 495: 149, 646: 149}, - {7: 148, 469: 148, 148, 495: 148, 646: 148}, - {110: 5166}, - {7: 126, 469: 126, 126, 495: 126, 646: 126}, - {7: 124, 469: 124, 124, 495: 124, 646: 124}, + {122: 5165}, + {7: 127, 470: 127, 127, 497: 127, 647: 127}, + {7: 136, 470: 136, 136, 497: 136, 647: 136}, + {7: 138, 470: 138, 138, 497: 138, 647: 138}, + {7: 125, 470: 125, 125, 497: 125, 647: 125}, // 2665 - {7: 122, 469: 122, 122, 495: 122, 646: 122}, - {7: 128, 469: 128, 128, 495: 128, 646: 128}, - {7: 121, 469: 121, 121, 495: 121, 646: 121}, - {7: 152, 469: 152, 152, 495: 152, 646: 152}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 4095, 2723, 2724, 2722, 739: 4096, 804: 5170}, + {7: 123, 470: 123, 123, 497: 123, 647: 123}, + {7: 149, 470: 149, 149, 497: 149, 647: 149}, + {7: 148, 470: 148, 148, 497: 148, 647: 148}, + {122: 5176}, + {7: 126, 470: 126, 126, 497: 126, 647: 126}, // 2670 - {7: 4098, 47: 5171}, - {7: 154, 469: 154, 495: 154, 646: 154}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 5120, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 5122, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 5128, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 5124, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 5121, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 5129, 3164, 2893, 3117, 5123, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 5126, 2804, 2805, 3044, 5127, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 5125, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 5131, 493: 5154, 564: 5148, 640: 5152, 642: 5137, 645: 5147, 647: 5141, 650: 5150, 657: 5142, 659: 3447, 2723, 2724, 2722, 665: 5146, 670: 5143, 734: 5130, 5145, 796: 5132, 805: 5136, 849: 5151, 861: 5149, 931: 5133, 952: 5134, 5140, 958: 5135, 5219, 967: 5144, 969: 5153}, - {2: 118, 118, 118, 118, 118, 8: 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 48: 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 5186, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 520: 118, 566: 5185, 954: 5187, 1078: 5188}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 3446, 567: 5176, 659: 3447, 2723, 2724, 2722, 734: 5175, 773: 5177, 863: 5178}, + {7: 124, 470: 124, 124, 497: 124, 647: 124}, + {7: 122, 470: 122, 122, 497: 122, 647: 122}, + {7: 128, 470: 128, 128, 497: 128, 647: 128}, + {7: 121, 470: 121, 121, 497: 121, 647: 121}, + {7: 152, 470: 152, 152, 497: 152, 647: 152}, // 2675 - {737, 737, 7: 737, 13: 737, 46: 737, 99: 737, 142: 737, 471: 737, 478: 737, 496: 737, 565: 5183, 646: 737, 658: 737, 663: 5182, 737}, - {1194, 1194, 7: 1194, 13: 1194, 46: 1194, 99: 1194, 142: 1194, 470: 3724, 1194, 478: 1194, 496: 1194, 646: 1194, 658: 1194, 664: 1194, 1087: 5181}, - {733, 733, 7: 733, 471: 733}, - {108, 108, 7: 5179}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 3446, 567: 5176, 659: 3447, 2723, 2724, 2722, 734: 5175, 773: 5180}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 4105, 2727, 2728, 2726, 740: 4106, 805: 5180}, + {7: 4108, 47: 5181}, + {7: 154, 470: 154, 497: 154, 647: 154}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 5130, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 5132, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 5138, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 5134, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 5131, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 5139, 3169, 2897, 3122, 5133, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 5136, 2808, 2809, 3048, 5137, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 5135, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 5141, 494: 5164, 565: 5158, 641: 5162, 643: 5147, 646: 5157, 648: 5151, 651: 5160, 658: 5152, 660: 3453, 2727, 2728, 2726, 666: 5156, 671: 5153, 735: 5140, 5155, 797: 5142, 806: 5146, 850: 5161, 862: 5159, 932: 5143, 953: 5144, 5150, 959: 5145, 5229, 968: 5154, 970: 5163}, + {2: 118, 118, 118, 118, 118, 8: 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 48: 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 5196, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 521: 118, 567: 5195, 955: 5197, 1079: 5198}, // 2680 - {732, 732, 7: 732, 471: 732}, - {734, 734, 7: 734, 13: 734, 46: 734, 99: 734, 142: 734, 471: 734, 478: 734, 496: 734, 646: 734, 658: 734, 664: 734}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 3446, 659: 3447, 2723, 2724, 2722, 734: 5184}, - {735, 735, 7: 735, 13: 735, 46: 735, 99: 735, 142: 735, 471: 735, 478: 735, 496: 735, 646: 735, 658: 735, 664: 735}, - {736, 736, 7: 736, 13: 736, 46: 736, 99: 736, 142: 736, 471: 736, 478: 736, 496: 736, 646: 736, 658: 736, 664: 736}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 3452, 568: 5186, 660: 3453, 2727, 2728, 2726, 735: 5185, 774: 5187, 864: 5188}, + {738, 738, 7: 738, 13: 738, 46: 738, 99: 738, 142: 738, 472: 738, 479: 738, 496: 738, 566: 5193, 647: 738, 659: 738, 664: 5192, 738}, + {1196, 1196, 7: 1196, 13: 1196, 46: 1196, 99: 1196, 142: 1196, 471: 3732, 1196, 479: 1196, 496: 1196, 647: 1196, 659: 1196, 665: 1196, 1088: 5191}, + {734, 734, 7: 734, 472: 734}, + {108, 108, 7: 5189}, // 2685 - {2: 117, 117, 117, 117, 117, 8: 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 48: 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 520: 117}, - {2: 116, 116, 116, 116, 116, 8: 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 48: 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 520: 116}, - {2: 115, 115, 115, 115, 115, 8: 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 48: 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 520: 115}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 520: 5189, 659: 5190, 2723, 2724, 2722, 1101: 5191}, - {495: 114, 646: 114, 648: 5217}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 3452, 568: 5186, 660: 3453, 2727, 2728, 2726, 735: 5185, 774: 5190}, + {733, 733, 7: 733, 472: 733}, + {735, 735, 7: 735, 13: 735, 46: 735, 99: 735, 142: 735, 472: 735, 479: 735, 496: 735, 647: 735, 659: 735, 665: 735}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 3452, 660: 3453, 2727, 2728, 2726, 735: 5194}, + {736, 736, 7: 736, 13: 736, 46: 736, 99: 736, 142: 736, 472: 736, 479: 736, 496: 736, 647: 736, 659: 736, 665: 736}, // 2690 - {495: 110, 646: 110, 648: 5214}, - {495: 5192}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 3446, 567: 5176, 659: 3447, 2723, 2724, 2722, 734: 5175, 773: 5193, 886: 5194, 917: 5195}, - {198, 198, 7: 198, 13: 198, 46: 198, 142: 5199, 471: 198, 658: 198, 1170: 5198}, - {233, 233, 7: 233, 13: 233, 46: 233, 471: 233, 658: 233}, + {737, 737, 7: 737, 13: 737, 46: 737, 99: 737, 142: 737, 472: 737, 479: 737, 496: 737, 647: 737, 659: 737, 665: 737}, + {2: 117, 117, 117, 117, 117, 8: 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 48: 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 521: 117}, + {2: 116, 116, 116, 116, 116, 8: 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 48: 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 521: 116}, + {2: 115, 115, 115, 115, 115, 8: 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 48: 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 521: 115}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 521: 5199, 660: 5200, 2727, 2728, 2726, 1102: 5201}, // 2695 - {109, 109, 7: 5196}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 3446, 567: 5176, 659: 3447, 2723, 2724, 2722, 734: 5175, 773: 5193, 886: 5197}, - {232, 232, 7: 232, 13: 232, 46: 232, 471: 232, 658: 232}, - {234, 234, 7: 234, 13: 234, 46: 234, 471: 234, 658: 234}, - {471: 5201, 655: 5200}, + {497: 114, 647: 114, 649: 5227}, + {497: 110, 647: 110, 649: 5224}, + {497: 5202}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 3452, 568: 5186, 660: 3453, 2727, 2728, 2726, 735: 5185, 774: 5203, 887: 5204, 918: 5205}, + {198, 198, 7: 198, 13: 198, 46: 198, 142: 5209, 472: 198, 659: 198, 1171: 5208}, // 2700 - {13: 5212, 472: 5209, 888: 5211}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 3446, 659: 3447, 2723, 2724, 2722, 734: 5203, 1171: 5202}, - {196, 196, 7: 196, 13: 196, 46: 196, 471: 196, 475: 5205, 655: 5204, 658: 196}, - {192, 192, 7: 192, 13: 192, 46: 192, 471: 192, 475: 192, 655: 192, 658: 192}, - {472: 5209, 888: 5210}, + {233, 233, 7: 233, 13: 233, 46: 233, 472: 233, 659: 233}, + {109, 109, 7: 5206}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 3452, 568: 5186, 660: 3453, 2727, 2728, 2726, 735: 5185, 774: 5203, 887: 5207}, + {232, 232, 7: 232, 13: 232, 46: 232, 472: 232, 659: 232}, + {234, 234, 7: 234, 13: 234, 46: 234, 472: 234, 659: 234}, // 2705 - {472: 5207, 574: 5208, 1053: 5206}, - {194, 194, 7: 194, 13: 194, 46: 194, 471: 194, 658: 194}, - {191, 191, 7: 191, 13: 191, 46: 191, 471: 191, 658: 191}, - {190, 190, 7: 190, 13: 190, 46: 190, 471: 190, 658: 190}, - {729, 729, 7: 729, 13: 729, 46: 729, 729, 471: 729, 658: 729}, + {472: 5211, 657: 5210}, + {13: 5222, 473: 5219, 889: 5221}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 3452, 660: 3453, 2727, 2728, 2726, 735: 5213, 1172: 5212}, + {196, 196, 7: 196, 13: 196, 46: 196, 472: 196, 476: 5215, 657: 5214, 659: 196}, + {192, 192, 7: 192, 13: 192, 46: 192, 472: 192, 476: 192, 657: 192, 659: 192}, // 2710 - {195, 195, 7: 195, 13: 195, 46: 195, 471: 195, 658: 195}, - {197, 197, 7: 197, 13: 197, 46: 197, 471: 197, 658: 197}, - {472: 5207, 574: 5208, 1053: 5213}, - {193, 193, 7: 193, 13: 193, 46: 193, 471: 193, 658: 193}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 520: 5215, 659: 5216, 2723, 2724, 2722}, + {473: 5219, 889: 5220}, + {473: 5217, 575: 5218, 1054: 5216}, + {194, 194, 7: 194, 13: 194, 46: 194, 472: 194, 659: 194}, + {191, 191, 7: 191, 13: 191, 46: 191, 472: 191, 659: 191}, + {190, 190, 7: 190, 13: 190, 46: 190, 472: 190, 659: 190}, // 2715 - {495: 112, 646: 112}, - {495: 111, 646: 111}, - {520: 5218}, - {495: 113, 646: 113}, - {7: 156, 469: 156, 495: 156, 646: 156}, + {730, 730, 7: 730, 13: 730, 46: 730, 730, 472: 730, 659: 730}, + {195, 195, 7: 195, 13: 195, 46: 195, 472: 195, 659: 195}, + {197, 197, 7: 197, 13: 197, 46: 197, 472: 197, 659: 197}, + {473: 5217, 575: 5218, 1054: 5223}, + {193, 193, 7: 193, 13: 193, 46: 193, 472: 193, 659: 193}, // 2720 - {277: 5221}, - {7: 158, 469: 158, 495: 158, 646: 158}, - {277: 5223}, - {7: 159, 469: 159, 495: 159, 646: 159}, - {7: 163, 149: 163, 469: 163, 495: 163, 646: 163}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 521: 5225, 660: 5226, 2727, 2728, 2726}, + {497: 112, 647: 112}, + {497: 111, 647: 111}, + {521: 5228}, + {497: 113, 647: 113}, // 2725 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 3446, 659: 3447, 2723, 2724, 2722, 734: 5227}, - {725, 725, 7: 725, 469: 725, 495: 725, 646: 725}, - {726, 726, 7: 726, 469: 726, 495: 726, 646: 726}, - {7: 134, 469: 134, 134, 495: 134, 646: 134}, - {7: 133, 469: 133, 133, 495: 133, 646: 133}, + {7: 156, 470: 156, 497: 156, 647: 156}, + {277: 5231}, + {7: 158, 470: 158, 497: 158, 647: 158}, + {277: 5233}, + {7: 159, 470: 159, 497: 159, 647: 159}, // 2730 - {469: 5270, 565: 1733, 663: 1733}, - {7: 5172, 469: 5232, 646: 5233}, - {2: 118, 118, 118, 118, 118, 8: 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 48: 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 5186, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 520: 118, 566: 5185, 954: 5187, 1078: 5235}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 3446, 567: 5176, 659: 3447, 2723, 2724, 2722, 734: 5175, 773: 5177, 863: 5234}, - {171, 171, 7: 5179}, + {7: 163, 149: 163, 470: 163, 497: 163, 647: 163}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 3452, 660: 3453, 2727, 2728, 2726, 735: 5237}, + {726, 726, 7: 726, 470: 726, 497: 726, 647: 726}, + {727, 727, 7: 727, 470: 727, 497: 727, 647: 727}, + {7: 134, 470: 134, 134, 497: 134, 647: 134}, // 2735 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 520: 5189, 659: 5190, 2723, 2724, 2722, 1101: 5236}, - {646: 5237}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 3446, 567: 5176, 659: 3447, 2723, 2724, 2722, 734: 5175, 773: 5193, 886: 5194, 917: 5238}, - {223, 223, 7: 5196, 471: 223, 658: 5240, 955: 5239, 5241}, - {222, 222, 13: 222, 46: 222, 471: 222}, + {7: 133, 470: 133, 133, 497: 133, 647: 133}, + {470: 5280, 566: 1737, 664: 1737}, + {7: 5182, 470: 5242, 647: 5243}, + {2: 118, 118, 118, 118, 118, 8: 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 48: 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 5196, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 521: 118, 567: 5195, 955: 5197, 1079: 5245}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 3452, 568: 5186, 660: 3453, 2727, 2728, 2726, 735: 5185, 774: 5187, 864: 5244}, // 2740 - {131: 5261, 133: 5259, 5262, 5260, 360: 5254, 404: 5256, 957: 5258, 1275: 5257, 1293: 5255}, - {170, 170, 471: 5243, 1157: 5242}, - {173, 173}, - {126: 5247, 5245, 5246, 5248, 849: 5244}, - {901: 5253}, + {171, 171, 7: 5189}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 521: 5199, 660: 5200, 2727, 2728, 2726, 1102: 5246}, + {647: 5247}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 3452, 568: 5186, 660: 3453, 2727, 2728, 2726, 735: 5185, 774: 5203, 887: 5204, 918: 5248}, + {223, 223, 7: 5206, 472: 223, 659: 5250, 956: 5249, 5251}, // 2745 - {505: 2697, 729: 5252}, - {505: 2697, 729: 5251}, - {505: 2697, 729: 5250}, - {505: 2697, 729: 5249}, - {165, 165}, + {222, 222, 13: 222, 46: 222, 472: 222}, + {131: 5271, 133: 5269, 5272, 5270, 360: 5264, 405: 5266, 958: 5268, 1276: 5267, 1294: 5265}, + {170, 170, 472: 5253, 1158: 5252}, + {173, 173}, + {126: 5257, 5255, 5256, 5258, 850: 5254}, // 2750 + {902: 5263}, + {506: 2701, 730: 5262}, + {506: 2701, 730: 5261}, + {506: 2701, 730: 5260}, + {506: 2701, 730: 5259}, + // 2755 + {165, 165}, {166, 166}, {167, 167}, {168, 168}, {169, 169}, - {221, 221, 13: 221, 46: 221, 471: 221}, - // 2755 - {220, 220, 13: 220, 46: 220, 471: 220}, - {219, 219, 13: 219, 46: 219, 471: 219}, - {218, 218, 13: 218, 46: 218, 131: 5261, 133: 5259, 5262, 5260, 471: 218, 502: 5267, 957: 5268}, - {217, 217, 13: 217, 46: 217, 131: 217, 133: 217, 217, 217, 471: 217, 502: 217}, - {472: 5266}, // 2760 - {472: 5265}, - {472: 5264}, - {472: 5263}, - {211, 211, 13: 211, 46: 211, 131: 211, 133: 211, 211, 211, 471: 211, 502: 211}, - {212, 212, 13: 212, 46: 212, 131: 212, 133: 212, 212, 212, 471: 212, 502: 212}, + {221, 221, 13: 221, 46: 221, 472: 221}, + {220, 220, 13: 220, 46: 220, 472: 220}, + {219, 219, 13: 219, 46: 219, 472: 219}, + {218, 218, 13: 218, 46: 218, 131: 5271, 133: 5269, 5272, 5270, 472: 218, 503: 5277, 958: 5278}, + {217, 217, 13: 217, 46: 217, 131: 217, 133: 217, 217, 217, 472: 217, 503: 217}, // 2765 - {213, 213, 13: 213, 46: 213, 131: 213, 133: 213, 213, 213, 471: 213, 502: 213}, - {214, 214, 13: 214, 46: 214, 131: 214, 133: 214, 214, 214, 471: 214, 502: 214}, - {131: 5261, 133: 5259, 5262, 5260, 957: 5269}, - {215, 215, 13: 215, 46: 215, 131: 215, 133: 215, 215, 215, 471: 215, 502: 215}, - {216, 216, 13: 216, 46: 216, 131: 216, 133: 216, 216, 216, 471: 216, 502: 216}, + {473: 5276}, + {473: 5275}, + {473: 5274}, + {473: 5273}, + {211, 211, 13: 211, 46: 211, 131: 211, 133: 211, 211, 211, 472: 211, 503: 211}, // 2770 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 3446, 567: 5176, 659: 3447, 2723, 2724, 2722, 734: 5175, 773: 5271}, - {646: 5272}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 3446, 567: 5176, 659: 3447, 2723, 2724, 2722, 734: 5175, 773: 5177, 863: 5273}, - {170, 170, 7: 5179, 471: 5243, 1157: 5274}, - {172, 172}, + {212, 212, 13: 212, 46: 212, 131: 212, 133: 212, 212, 212, 472: 212, 503: 212}, + {213, 213, 13: 213, 46: 213, 131: 213, 133: 213, 213, 213, 472: 213, 503: 213}, + {214, 214, 13: 214, 46: 214, 131: 214, 133: 214, 214, 214, 472: 214, 503: 214}, + {131: 5271, 133: 5269, 5272, 5270, 958: 5279}, + {215, 215, 13: 215, 46: 215, 131: 215, 133: 215, 215, 215, 472: 215, 503: 215}, // 2775 - {2167, 2167, 7: 2167, 14: 2167, 16: 2167, 19: 2167, 476: 2167, 479: 2167, 494: 2167, 2167, 501: 2167, 503: 2167, 515: 2167, 643: 2167, 646: 2167}, - {247, 247}, - {2: 843, 843, 843, 843, 843, 8: 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 48: 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 470: 843, 472: 843, 843, 843, 476: 843, 480: 843, 843, 843, 843, 843, 487: 843, 489: 843, 492: 843, 495: 843, 498: 843, 503: 843, 843, 843, 512: 843, 520: 843, 541: 843, 563: 843, 843, 843, 567: 843, 843, 843, 571: 843, 843, 843, 843, 843, 843, 843, 843, 582: 843, 843, 843, 843, 843, 843, 843, 843, 843, 592: 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 622: 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 644: 843, 647: 843, 741: 843, 843, 749: 843, 843, 843, 758: 843, 765: 843, 843, 843}, - {2: 841, 841, 841, 841, 841, 8: 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 48: 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 470: 841, 487: 841, 492: 841, 495: 841, 576: 841, 749: 841, 841, 841}, - {2: 1046, 1046, 1046, 1046, 1046, 8: 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 48: 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 470: 1046, 487: 1046, 576: 1046, 749: 5282, 5281, 5280, 833: 5283, 882: 5284}, + {216, 216, 13: 216, 46: 216, 131: 216, 133: 216, 216, 216, 472: 216, 503: 216}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 3452, 568: 5186, 660: 3453, 2727, 2728, 2726, 735: 5185, 774: 5281}, + {647: 5282}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 3452, 568: 5186, 660: 3453, 2727, 2728, 2726, 735: 5185, 774: 5187, 864: 5283}, + {170, 170, 7: 5189, 472: 5253, 1158: 5284}, // 2780 - {2: 1049, 1049, 1049, 1049, 1049, 8: 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 48: 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 470: 1049, 472: 1049, 1049, 1049, 476: 1049, 480: 1049, 1049, 1049, 1049, 1049, 487: 1049, 489: 1049, 492: 1049, 495: 1049, 498: 1049, 503: 1049, 1049, 1049, 512: 1049, 520: 1049, 541: 1049, 563: 1049, 1049, 1049, 567: 1049, 1049, 1049, 571: 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 582: 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 592: 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 622: 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 644: 1049, 647: 1049, 741: 1049, 1049, 749: 1049, 1049, 1049, 758: 1049, 765: 1049, 1049, 1049}, - {2: 1048, 1048, 1048, 1048, 1048, 8: 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 48: 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 470: 1048, 472: 1048, 1048, 1048, 476: 1048, 480: 1048, 1048, 1048, 1048, 1048, 487: 1048, 489: 1048, 492: 1048, 495: 1048, 498: 1048, 503: 1048, 1048, 1048, 512: 1048, 520: 1048, 541: 1048, 563: 1048, 1048, 1048, 567: 1048, 1048, 1048, 571: 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 582: 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 592: 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 622: 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 644: 1048, 647: 1048, 741: 1048, 1048, 749: 1048, 1048, 1048, 758: 1048, 765: 1048, 1048, 1048}, - {2: 1047, 1047, 1047, 1047, 1047, 8: 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 48: 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 470: 1047, 472: 1047, 1047, 1047, 476: 1047, 480: 1047, 1047, 1047, 1047, 1047, 487: 1047, 489: 1047, 492: 1047, 495: 1047, 498: 1047, 503: 1047, 1047, 1047, 512: 1047, 520: 1047, 541: 1047, 563: 1047, 1047, 1047, 567: 1047, 1047, 1047, 571: 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 582: 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 592: 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 622: 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 644: 1047, 647: 1047, 741: 1047, 1047, 749: 1047, 1047, 1047, 758: 1047, 765: 1047, 1047, 1047}, - {2: 1045, 1045, 1045, 1045, 1045, 8: 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 48: 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 470: 1045, 487: 1045, 492: 1045, 495: 1045, 576: 1045}, - {2: 1840, 1840, 1840, 1840, 1840, 8: 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 48: 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 470: 1840, 487: 4142, 576: 1840, 850: 5285}, + {172, 172}, + {2171, 2171, 7: 2171, 14: 2171, 16: 2171, 19: 2171, 477: 2171, 480: 2171, 495: 2171, 497: 2171, 502: 2171, 504: 2171, 516: 2171, 644: 2171, 647: 2171}, + {247, 247}, + {2: 845, 845, 845, 845, 845, 8: 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 48: 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 471: 845, 473: 845, 845, 845, 477: 845, 481: 845, 845, 845, 845, 845, 488: 845, 490: 845, 493: 845, 497: 845, 499: 845, 504: 845, 845, 845, 513: 845, 521: 845, 541: 845, 564: 845, 845, 845, 568: 845, 845, 845, 572: 845, 845, 845, 845, 845, 845, 845, 845, 581: 845, 845, 585: 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 637: 845, 845, 845, 645: 845, 648: 845, 742: 845, 845, 750: 845, 845, 845, 759: 845, 766: 845, 845, 845}, + {2: 843, 843, 843, 843, 843, 8: 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 48: 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 471: 843, 488: 843, 493: 843, 497: 843, 577: 843, 750: 843, 843, 843}, // 2785 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 470: 5294, 576: 5289, 659: 3875, 2723, 2724, 2722, 705: 5293, 733: 5292, 793: 5291, 797: 5290, 5288, 847: 5286, 885: 5287}, - {920, 920, 7: 920, 47: 920, 469: 920, 471: 920, 477: 920, 920, 485: 920, 920, 490: 920, 920, 920, 920, 920, 497: 920, 499: 920, 501: 920, 510: 920, 920, 513: 920}, - {7: 5340, 501: 5410}, - {7: 918, 480: 5307, 5308, 501: 5397, 512: 5306, 514: 5309, 516: 5305, 5310, 5311, 813: 5304, 818: 5303}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 5394, 2723, 2724, 2722}, + {2: 1048, 1048, 1048, 1048, 1048, 8: 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 48: 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 471: 1048, 488: 1048, 577: 1048, 750: 5292, 5291, 5290, 834: 5293, 883: 5294}, + {2: 1051, 1051, 1051, 1051, 1051, 8: 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 48: 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 471: 1051, 473: 1051, 1051, 1051, 477: 1051, 481: 1051, 1051, 1051, 1051, 1051, 488: 1051, 490: 1051, 493: 1051, 497: 1051, 499: 1051, 504: 1051, 1051, 1051, 513: 1051, 521: 1051, 541: 1051, 564: 1051, 1051, 1051, 568: 1051, 1051, 1051, 572: 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 581: 1051, 1051, 585: 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 637: 1051, 1051, 1051, 645: 1051, 648: 1051, 742: 1051, 1051, 750: 1051, 1051, 1051, 759: 1051, 766: 1051, 1051, 1051}, + {2: 1050, 1050, 1050, 1050, 1050, 8: 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 48: 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 471: 1050, 473: 1050, 1050, 1050, 477: 1050, 481: 1050, 1050, 1050, 1050, 1050, 488: 1050, 490: 1050, 493: 1050, 497: 1050, 499: 1050, 504: 1050, 1050, 1050, 513: 1050, 521: 1050, 541: 1050, 564: 1050, 1050, 1050, 568: 1050, 1050, 1050, 572: 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 581: 1050, 1050, 585: 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 637: 1050, 1050, 1050, 645: 1050, 648: 1050, 742: 1050, 1050, 750: 1050, 1050, 1050, 759: 1050, 766: 1050, 1050, 1050}, + {2: 1049, 1049, 1049, 1049, 1049, 8: 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 48: 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 471: 1049, 473: 1049, 1049, 1049, 477: 1049, 481: 1049, 1049, 1049, 1049, 1049, 488: 1049, 490: 1049, 493: 1049, 497: 1049, 499: 1049, 504: 1049, 1049, 1049, 513: 1049, 521: 1049, 541: 1049, 564: 1049, 1049, 1049, 568: 1049, 1049, 1049, 572: 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 581: 1049, 1049, 585: 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 637: 1049, 1049, 1049, 645: 1049, 648: 1049, 742: 1049, 1049, 750: 1049, 1049, 1049, 759: 1049, 766: 1049, 1049, 1049}, + {2: 1047, 1047, 1047, 1047, 1047, 8: 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 48: 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 471: 1047, 488: 1047, 493: 1047, 497: 1047, 577: 1047}, // 2790 - {916, 916, 7: 916, 47: 916, 469: 916, 471: 916, 477: 916, 916, 480: 916, 916, 485: 916, 916, 490: 916, 916, 916, 916, 916, 497: 916, 499: 916, 501: 916, 510: 916, 916, 916, 916, 916, 516: 916, 916, 916, 916}, - {915, 915, 7: 915, 47: 915, 469: 915, 471: 915, 477: 915, 915, 480: 915, 915, 485: 915, 915, 490: 915, 915, 915, 915, 915, 497: 915, 499: 915, 501: 915, 510: 915, 915, 915, 915, 915, 516: 915, 915, 915, 915}, - {911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 471: 911, 475: 911, 477: 911, 911, 480: 911, 911, 485: 911, 911, 911, 5344, 490: 911, 911, 911, 911, 911, 497: 911, 499: 911, 911, 911, 510: 911, 911, 911, 911, 911, 516: 911, 911, 911, 911, 522: 911, 911, 669: 911, 855: 5343}, - {909, 909, 2963, 2808, 2844, 2965, 2735, 909, 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 909, 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 909, 471: 909, 475: 5301, 477: 909, 909, 480: 909, 909, 485: 909, 909, 490: 909, 909, 909, 909, 909, 497: 909, 499: 909, 501: 909, 510: 909, 909, 909, 909, 909, 516: 909, 909, 909, 909, 659: 5300, 2723, 2724, 2722, 910: 5299, 5298}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 470: 5294, 2550, 498: 2549, 566: 2548, 576: 5289, 642: 2544, 659: 3875, 2723, 2724, 2722, 705: 5297, 733: 5292, 744: 3835, 2545, 2546, 2547, 2556, 752: 2554, 2553, 2552, 3834, 3837, 3836, 793: 5291, 797: 5290, 5296, 847: 5286, 885: 5295}, + {2: 1844, 1844, 1844, 1844, 1844, 8: 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 48: 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 471: 1844, 488: 4152, 577: 1844, 851: 5295}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 471: 5304, 577: 5299, 660: 3883, 2727, 2728, 2726, 706: 5303, 734: 5302, 794: 5301, 798: 5300, 5298, 848: 5296, 886: 5297}, + {922, 922, 7: 922, 47: 922, 470: 922, 472: 922, 478: 922, 922, 486: 922, 922, 491: 922, 922, 922, 922, 922, 498: 922, 500: 922, 502: 922, 511: 922, 922, 514: 922}, + {7: 5350, 502: 5420}, + {7: 920, 481: 5317, 5318, 502: 5407, 513: 5316, 515: 5319, 517: 5315, 5320, 5321, 814: 5314, 820: 5313}, // 2795 - {7: 5340, 47: 5341}, - {918, 918, 7: 918, 47: 918, 469: 918, 471: 918, 477: 918, 918, 480: 5307, 5308, 485: 918, 918, 490: 918, 918, 918, 918, 918, 497: 918, 499: 918, 501: 918, 510: 918, 918, 5306, 918, 5309, 516: 5305, 5310, 5311, 813: 5304, 818: 5303}, - {2: 2963, 2808, 2844, 2965, 2735, 909, 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 3928, 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 475: 5301, 477: 803, 480: 909, 909, 485: 803, 803, 490: 2689, 497: 2690, 499: 2686, 512: 909, 514: 909, 516: 909, 909, 909, 659: 5300, 2723, 2724, 2722, 763: 3845, 3846, 910: 5299, 5298}, - {913, 913, 7: 913, 47: 913, 469: 913, 471: 913, 477: 913, 913, 480: 913, 913, 485: 913, 913, 490: 913, 913, 913, 913, 913, 497: 913, 499: 913, 501: 913, 510: 913, 913, 913, 913, 913, 516: 913, 913, 913, 913}, - {908, 908, 7: 908, 47: 908, 469: 908, 471: 908, 477: 908, 908, 480: 908, 908, 485: 908, 908, 908, 490: 908, 908, 908, 908, 908, 497: 908, 499: 908, 908, 908, 510: 908, 908, 908, 908, 908, 516: 908, 908, 908, 908, 522: 908, 908, 669: 908}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 5404, 2727, 2728, 2726}, + {918, 918, 7: 918, 47: 918, 470: 918, 472: 918, 478: 918, 918, 481: 918, 918, 486: 918, 918, 491: 918, 918, 918, 918, 918, 498: 918, 500: 918, 502: 918, 511: 918, 918, 918, 918, 918, 517: 918, 918, 918, 918}, + {917, 917, 7: 917, 47: 917, 470: 917, 472: 917, 478: 917, 917, 481: 917, 917, 486: 917, 917, 491: 917, 917, 917, 917, 917, 498: 917, 500: 917, 502: 917, 511: 917, 917, 917, 917, 917, 517: 917, 917, 917, 917}, + {913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 472: 913, 476: 913, 478: 913, 913, 481: 913, 913, 486: 913, 913, 913, 5354, 491: 913, 913, 913, 913, 913, 498: 913, 500: 913, 913, 913, 511: 913, 913, 913, 913, 913, 517: 913, 913, 913, 913, 523: 913, 913, 670: 913, 856: 5353}, + {911, 911, 2967, 2812, 2848, 2969, 2739, 911, 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 911, 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 911, 472: 911, 476: 5311, 478: 911, 911, 481: 911, 911, 486: 911, 911, 491: 911, 911, 911, 911, 911, 498: 911, 500: 911, 502: 911, 511: 911, 911, 911, 911, 911, 517: 911, 911, 911, 911, 660: 5310, 2727, 2728, 2726, 911: 5309, 5308}, // 2800 - {907, 907, 7: 907, 47: 907, 469: 907, 471: 907, 477: 907, 907, 480: 907, 907, 485: 907, 907, 907, 490: 907, 907, 907, 907, 907, 497: 907, 499: 907, 907, 907, 510: 907, 907, 907, 907, 907, 516: 907, 907, 907, 907, 522: 907, 907, 669: 907}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 5302, 2723, 2724, 2722}, - {906, 906, 7: 906, 47: 906, 469: 906, 471: 906, 477: 906, 906, 480: 906, 906, 485: 906, 906, 906, 490: 906, 906, 906, 906, 906, 497: 906, 499: 906, 906, 906, 510: 906, 906, 906, 906, 906, 516: 906, 906, 906, 906, 522: 906, 906, 669: 906}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 470: 5294, 659: 3875, 2723, 2724, 2722, 705: 5293, 733: 5292, 793: 5291, 797: 5290, 5333}, - {514: 877, 903: 5320, 1091: 5324}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 471: 5304, 2554, 499: 2553, 567: 2552, 577: 5299, 643: 2548, 660: 3883, 2727, 2728, 2726, 706: 5307, 734: 5302, 745: 3843, 2549, 2550, 2551, 2560, 753: 2558, 2557, 2556, 3842, 3845, 3844, 794: 5301, 798: 5300, 5306, 848: 5296, 886: 5305}, + {7: 5350, 47: 5351}, + {920, 920, 7: 920, 47: 920, 470: 920, 472: 920, 478: 920, 920, 481: 5317, 5318, 486: 920, 920, 491: 920, 920, 920, 920, 920, 498: 920, 500: 920, 502: 920, 511: 920, 920, 5316, 920, 5319, 517: 5315, 5320, 5321, 814: 5314, 820: 5313}, + {2: 2967, 2812, 2848, 2969, 2739, 911, 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 3936, 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 476: 5311, 478: 805, 481: 911, 911, 486: 805, 805, 491: 2693, 498: 2694, 500: 2690, 513: 911, 515: 911, 517: 911, 911, 911, 660: 5310, 2727, 2728, 2726, 764: 3853, 3854, 911: 5309, 5308}, + {915, 915, 7: 915, 47: 915, 470: 915, 472: 915, 478: 915, 915, 481: 915, 915, 486: 915, 915, 491: 915, 915, 915, 915, 915, 498: 915, 500: 915, 502: 915, 511: 915, 915, 915, 915, 915, 517: 915, 915, 915, 915}, // 2805 - {480: 5307, 5308, 514: 5317, 813: 5318}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 470: 5294, 659: 3875, 2723, 2724, 2722, 705: 5293, 733: 5292, 793: 5291, 797: 5290, 5314}, - {514: 879, 903: 879}, - {514: 878, 903: 878}, - {2: 875, 875, 875, 875, 875, 8: 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 48: 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 470: 875}, + {910, 910, 7: 910, 47: 910, 470: 910, 472: 910, 478: 910, 910, 481: 910, 910, 486: 910, 910, 910, 491: 910, 910, 910, 910, 910, 498: 910, 500: 910, 910, 910, 511: 910, 910, 910, 910, 910, 517: 910, 910, 910, 910, 523: 910, 910, 670: 910}, + {909, 909, 7: 909, 47: 909, 470: 909, 472: 909, 478: 909, 909, 481: 909, 909, 486: 909, 909, 909, 491: 909, 909, 909, 909, 909, 498: 909, 500: 909, 909, 909, 511: 909, 909, 909, 909, 909, 517: 909, 909, 909, 909, 523: 909, 909, 670: 909}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 5312, 2727, 2728, 2726}, + {908, 908, 7: 908, 47: 908, 470: 908, 472: 908, 478: 908, 908, 481: 908, 908, 486: 908, 908, 908, 491: 908, 908, 908, 908, 908, 498: 908, 500: 908, 908, 908, 511: 908, 908, 908, 908, 908, 517: 908, 908, 908, 908, 523: 908, 908, 670: 908}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 471: 5304, 660: 3883, 2727, 2728, 2726, 706: 5303, 734: 5302, 794: 5301, 798: 5300, 5343}, // 2810 - {514: 5313}, - {514: 5312}, - {2: 873, 873, 873, 873, 873, 8: 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 48: 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 470: 873}, - {2: 874, 874, 874, 874, 874, 8: 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 48: 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 470: 874}, - {881, 881, 7: 881, 47: 881, 469: 5315, 471: 881, 477: 881, 881, 480: 881, 881, 485: 881, 881, 490: 881, 881, 881, 881, 881, 497: 881, 499: 881, 501: 881, 510: 881, 881, 881, 881, 881, 516: 881, 881, 881, 881, 813: 5304, 818: 5303}, + {515: 879, 904: 5330, 1092: 5334}, + {481: 5317, 5318, 515: 5327, 814: 5328}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 471: 5304, 660: 3883, 2727, 2728, 2726, 706: 5303, 734: 5302, 794: 5301, 798: 5300, 5324}, + {515: 881, 904: 881}, + {515: 880, 904: 880}, // 2815 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 5316}, - {880, 880, 7: 880, 47: 880, 469: 880, 471: 880, 477: 880, 880, 480: 880, 880, 485: 880, 880, 490: 880, 880, 880, 880, 880, 497: 880, 499: 880, 501: 880, 3302, 506: 3300, 3301, 3299, 3297, 880, 880, 880, 880, 880, 516: 880, 880, 880, 880, 730: 3298, 3296}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 470: 5294, 659: 3875, 2723, 2724, 2722, 705: 5293, 733: 5292, 793: 5291, 797: 5290, 5323}, - {514: 877, 903: 5320, 1091: 5319}, - {514: 5321}, + {2: 877, 877, 877, 877, 877, 8: 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 48: 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 471: 877}, + {515: 5323}, + {515: 5322}, + {2: 875, 875, 875, 875, 875, 8: 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 48: 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 471: 875}, + {2: 876, 876, 876, 876, 876, 8: 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 48: 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 471: 876}, // 2820 - {514: 876}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 470: 5294, 659: 3875, 2723, 2724, 2722, 705: 5293, 733: 5292, 793: 5291, 797: 5290, 5322}, - {882, 882, 7: 882, 47: 882, 469: 882, 471: 882, 477: 882, 882, 480: 882, 882, 485: 882, 882, 490: 882, 882, 882, 882, 882, 497: 882, 499: 882, 501: 882, 510: 882, 882, 882, 882, 882, 516: 882, 882, 882, 882, 813: 5304, 818: 5303}, - {883, 883, 7: 883, 47: 883, 469: 883, 471: 883, 477: 883, 883, 480: 883, 883, 485: 883, 883, 490: 883, 883, 883, 883, 883, 497: 883, 499: 883, 501: 883, 510: 883, 883, 883, 883, 883, 516: 883, 883, 883, 883, 813: 5304, 818: 5303}, - {514: 5325}, + {883, 883, 7: 883, 47: 883, 470: 5325, 472: 883, 478: 883, 883, 481: 883, 883, 486: 883, 883, 491: 883, 883, 883, 883, 883, 498: 883, 500: 883, 502: 883, 511: 883, 883, 883, 883, 883, 517: 883, 883, 883, 883, 814: 5314, 820: 5313}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 5326}, + {882, 882, 7: 882, 47: 882, 470: 882, 472: 882, 478: 882, 882, 481: 882, 882, 486: 882, 882, 491: 882, 882, 882, 882, 882, 498: 882, 500: 882, 502: 882, 3307, 507: 3305, 3306, 3304, 3302, 882, 882, 882, 882, 882, 517: 882, 882, 882, 882, 731: 3303, 3301}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 471: 5304, 660: 3883, 2727, 2728, 2726, 706: 5303, 734: 5302, 794: 5301, 798: 5300, 5333}, + {515: 879, 904: 5330, 1092: 5329}, // 2825 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 470: 5294, 659: 3875, 2723, 2724, 2722, 705: 5293, 733: 5292, 793: 5291, 797: 5290, 5326}, - {469: 5327, 478: 5328, 480: 5307, 5308, 512: 5306, 514: 5309, 516: 5305, 5310, 5311, 813: 5304, 818: 5303}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 5332}, - {470: 5329}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 4095, 2723, 2724, 2722, 739: 4096, 804: 5330}, + {515: 5331}, + {515: 878}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 471: 5304, 660: 3883, 2727, 2728, 2726, 706: 5303, 734: 5302, 794: 5301, 798: 5300, 5332}, + {884, 884, 7: 884, 47: 884, 470: 884, 472: 884, 478: 884, 884, 481: 884, 884, 486: 884, 884, 491: 884, 884, 884, 884, 884, 498: 884, 500: 884, 502: 884, 511: 884, 884, 884, 884, 884, 517: 884, 884, 884, 884, 814: 5314, 820: 5313}, + {885, 885, 7: 885, 47: 885, 470: 885, 472: 885, 478: 885, 885, 481: 885, 885, 486: 885, 885, 491: 885, 885, 885, 885, 885, 498: 885, 500: 885, 502: 885, 511: 885, 885, 885, 885, 885, 517: 885, 885, 885, 885, 814: 5314, 820: 5313}, // 2830 - {7: 4098, 47: 5331}, - {884, 884, 7: 884, 47: 884, 469: 884, 471: 884, 477: 884, 884, 480: 884, 884, 485: 884, 884, 490: 884, 884, 884, 884, 884, 497: 884, 499: 884, 501: 884, 510: 884, 884, 884, 884, 884, 516: 884, 884, 884, 884}, - {885, 885, 7: 885, 47: 885, 469: 885, 471: 885, 477: 885, 885, 480: 885, 885, 485: 885, 885, 490: 885, 885, 885, 885, 885, 497: 885, 499: 885, 501: 885, 3302, 506: 3300, 3301, 3299, 3297, 885, 885, 885, 885, 885, 516: 885, 885, 885, 885, 730: 3298, 3296}, - {888, 888, 7: 888, 47: 888, 469: 5334, 471: 888, 477: 888, 5335, 480: 5307, 5308, 485: 888, 888, 490: 888, 888, 888, 888, 888, 497: 888, 499: 888, 501: 888, 510: 888, 888, 5306, 888, 5309, 516: 5305, 5310, 5311, 888, 813: 5304, 818: 5303}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 5339}, + {515: 5335}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 471: 5304, 660: 3883, 2727, 2728, 2726, 706: 5303, 734: 5302, 794: 5301, 798: 5300, 5336}, + {470: 5337, 479: 5338, 481: 5317, 5318, 513: 5316, 515: 5319, 517: 5315, 5320, 5321, 814: 5314, 820: 5313}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 5342}, + {471: 5339}, // 2835 - {470: 5336}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 4095, 2723, 2724, 2722, 739: 4096, 804: 5337}, - {7: 4098, 47: 5338}, - {886, 886, 7: 886, 47: 886, 469: 886, 471: 886, 477: 886, 886, 480: 886, 886, 485: 886, 886, 490: 886, 886, 886, 886, 886, 497: 886, 499: 886, 501: 886, 510: 886, 886, 886, 886, 886, 516: 886, 886, 886, 886}, - {887, 887, 7: 887, 47: 887, 469: 887, 471: 887, 477: 887, 887, 480: 887, 887, 485: 887, 887, 490: 887, 887, 887, 887, 887, 497: 887, 499: 887, 501: 887, 3302, 506: 3300, 3301, 3299, 3297, 887, 887, 887, 887, 887, 516: 887, 887, 887, 887, 730: 3298, 3296}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 4105, 2727, 2728, 2726, 740: 4106, 805: 5340}, + {7: 4108, 47: 5341}, + {886, 886, 7: 886, 47: 886, 470: 886, 472: 886, 478: 886, 886, 481: 886, 886, 486: 886, 886, 491: 886, 886, 886, 886, 886, 498: 886, 500: 886, 502: 886, 511: 886, 886, 886, 886, 886, 517: 886, 886, 886, 886}, + {887, 887, 7: 887, 47: 887, 470: 887, 472: 887, 478: 887, 887, 481: 887, 887, 486: 887, 887, 491: 887, 887, 887, 887, 887, 498: 887, 500: 887, 502: 887, 3307, 507: 3305, 3306, 3304, 3302, 887, 887, 887, 887, 887, 517: 887, 887, 887, 887, 731: 3303, 3301}, + {890, 890, 7: 890, 47: 890, 470: 5344, 472: 890, 478: 890, 5345, 481: 5317, 5318, 486: 890, 890, 491: 890, 890, 890, 890, 890, 498: 890, 500: 890, 502: 890, 511: 890, 890, 5316, 890, 5319, 517: 5315, 5320, 5321, 890, 814: 5314, 820: 5313}, // 2840 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 470: 5294, 576: 5289, 659: 3875, 2723, 2724, 2722, 705: 5293, 733: 5292, 793: 5291, 797: 5290, 5296, 847: 5342}, - {912, 912, 7: 912, 47: 912, 469: 912, 471: 912, 477: 912, 912, 480: 912, 912, 485: 912, 912, 490: 912, 912, 912, 912, 912, 497: 912, 499: 912, 501: 912, 510: 912, 912, 912, 912, 912, 516: 912, 912, 912, 912}, - {919, 919, 7: 919, 47: 919, 469: 919, 471: 919, 477: 919, 919, 485: 919, 919, 490: 919, 919, 919, 919, 919, 497: 919, 499: 919, 501: 919, 510: 919, 919, 513: 919}, - {909, 909, 2963, 2808, 2844, 2965, 2735, 909, 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 909, 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 909, 471: 909, 475: 5301, 477: 909, 909, 480: 909, 909, 485: 909, 909, 909, 490: 909, 909, 909, 909, 909, 497: 909, 499: 909, 909, 909, 510: 909, 909, 909, 909, 909, 516: 909, 909, 909, 909, 522: 909, 909, 659: 5300, 2723, 2724, 2722, 669: 909, 910: 5299, 5348}, - {470: 5345}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 5349}, + {471: 5346}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 4105, 2727, 2728, 2726, 740: 4106, 805: 5347}, + {7: 4108, 47: 5348}, + {888, 888, 7: 888, 47: 888, 470: 888, 472: 888, 478: 888, 888, 481: 888, 888, 486: 888, 888, 491: 888, 888, 888, 888, 888, 498: 888, 500: 888, 502: 888, 511: 888, 888, 888, 888, 888, 517: 888, 888, 888, 888}, // 2845 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 4696, 2723, 2724, 2722, 785: 5346}, - {7: 4697, 47: 5347}, - {910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 475: 910, 477: 910, 910, 480: 910, 910, 485: 910, 910, 910, 490: 910, 910, 910, 910, 910, 497: 910, 910, 910, 910, 910, 510: 910, 910, 910, 910, 910, 516: 910, 910, 910, 910, 522: 910, 910, 552: 910, 566: 910, 642: 910, 645: 910, 655: 910, 669: 910}, - {1847, 1847, 7: 1847, 47: 1847, 469: 1847, 471: 1847, 477: 1847, 1847, 480: 1847, 1847, 485: 1847, 1847, 1847, 490: 1847, 1847, 1847, 1847, 1847, 497: 1847, 499: 1847, 1847, 1847, 510: 1847, 1847, 1847, 1847, 1847, 516: 1847, 1847, 1847, 1847, 522: 1847, 1847, 669: 5350, 919: 5349, 1168: 5351}, - {1846, 1846, 7: 1846, 47: 1846, 469: 1846, 471: 1846, 477: 1846, 1846, 480: 1846, 1846, 485: 1846, 1846, 1846, 490: 1846, 1846, 1846, 1846, 1846, 497: 1846, 499: 1846, 1846, 1846, 510: 1846, 1846, 1846, 1846, 1846, 516: 1846, 1846, 1846, 1846, 522: 1846, 1846}, + {889, 889, 7: 889, 47: 889, 470: 889, 472: 889, 478: 889, 889, 481: 889, 889, 486: 889, 889, 491: 889, 889, 889, 889, 889, 498: 889, 500: 889, 502: 889, 3307, 507: 3305, 3306, 3304, 3302, 889, 889, 889, 889, 889, 517: 889, 889, 889, 889, 731: 3303, 3301}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 471: 5304, 577: 5299, 660: 3883, 2727, 2728, 2726, 706: 5303, 734: 5302, 794: 5301, 798: 5300, 5306, 848: 5352}, + {914, 914, 7: 914, 47: 914, 470: 914, 472: 914, 478: 914, 914, 481: 914, 914, 486: 914, 914, 491: 914, 914, 914, 914, 914, 498: 914, 500: 914, 502: 914, 511: 914, 914, 914, 914, 914, 517: 914, 914, 914, 914}, + {921, 921, 7: 921, 47: 921, 470: 921, 472: 921, 478: 921, 921, 486: 921, 921, 491: 921, 921, 921, 921, 921, 498: 921, 500: 921, 502: 921, 511: 921, 921, 514: 921}, + {911, 911, 2967, 2812, 2848, 2969, 2739, 911, 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 911, 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 911, 472: 911, 476: 5311, 478: 911, 911, 481: 911, 911, 486: 911, 911, 911, 491: 911, 911, 911, 911, 911, 498: 911, 500: 911, 911, 911, 511: 911, 911, 911, 911, 911, 517: 911, 911, 911, 911, 523: 911, 911, 660: 5310, 2727, 2728, 2726, 670: 911, 911: 5309, 5358}, // 2850 - {218: 5392}, - {890, 890, 7: 890, 47: 890, 469: 890, 471: 890, 477: 890, 890, 480: 890, 890, 485: 890, 890, 5354, 490: 890, 890, 890, 890, 890, 497: 890, 499: 890, 5355, 890, 510: 890, 890, 890, 890, 890, 516: 890, 890, 890, 890, 522: 5353, 890, 935: 5357, 5356, 1057: 5358, 5352}, - {1005, 1005, 7: 1005, 47: 1005, 469: 1005, 471: 1005, 477: 1005, 1005, 480: 1005, 1005, 485: 1005, 1005, 490: 1005, 1005, 1005, 1005, 1005, 497: 1005, 499: 1005, 501: 1005, 510: 1005, 1005, 1005, 1005, 1005, 516: 1005, 1005, 1005, 1005, 523: 5373, 1312: 5374}, - {570: 4358, 645: 4359, 823: 5372}, - {570: 4358, 645: 4359, 823: 5371}, + {471: 5355}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 4706, 2727, 2728, 2726, 786: 5356}, + {7: 4707, 47: 5357}, + {912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 476: 912, 478: 912, 912, 481: 912, 912, 486: 912, 912, 912, 491: 912, 912, 912, 912, 912, 498: 912, 912, 912, 912, 912, 511: 912, 912, 912, 912, 912, 517: 912, 912, 912, 912, 523: 912, 912, 553: 912, 567: 912, 643: 912, 646: 912, 657: 912, 670: 912}, + {1851, 1851, 7: 1851, 47: 1851, 470: 1851, 472: 1851, 478: 1851, 1851, 481: 1851, 1851, 486: 1851, 1851, 1851, 491: 1851, 1851, 1851, 1851, 1851, 498: 1851, 500: 1851, 1851, 1851, 511: 1851, 1851, 1851, 1851, 1851, 517: 1851, 1851, 1851, 1851, 523: 1851, 1851, 670: 5360, 920: 5359, 1169: 5361}, // 2855 - {570: 4358, 645: 4359, 823: 5370}, - {470: 902, 491: 5360, 1222: 5361}, - {892, 892, 7: 892, 47: 892, 469: 892, 471: 892, 477: 892, 892, 480: 892, 892, 485: 892, 892, 892, 490: 892, 892, 892, 892, 892, 497: 892, 499: 892, 892, 892, 510: 892, 892, 892, 892, 892, 516: 892, 892, 892, 892, 522: 892, 892}, - {889, 889, 7: 889, 47: 889, 469: 889, 471: 889, 477: 889, 889, 480: 889, 889, 485: 889, 889, 5354, 490: 889, 889, 889, 889, 889, 497: 889, 499: 889, 5355, 889, 510: 889, 889, 889, 889, 889, 516: 889, 889, 889, 889, 522: 5353, 889, 935: 5359, 5356}, - {891, 891, 7: 891, 47: 891, 469: 891, 471: 891, 477: 891, 891, 480: 891, 891, 485: 891, 891, 891, 490: 891, 891, 891, 891, 891, 497: 891, 499: 891, 891, 891, 510: 891, 891, 891, 891, 891, 516: 891, 891, 891, 891, 522: 891, 891}, + {1850, 1850, 7: 1850, 47: 1850, 470: 1850, 472: 1850, 478: 1850, 1850, 481: 1850, 1850, 486: 1850, 1850, 1850, 491: 1850, 1850, 1850, 1850, 1850, 498: 1850, 500: 1850, 1850, 1850, 511: 1850, 1850, 1850, 1850, 1850, 517: 1850, 1850, 1850, 1850, 523: 1850, 1850}, + {218: 5402}, + {892, 892, 7: 892, 47: 892, 470: 892, 472: 892, 478: 892, 892, 481: 892, 892, 486: 892, 892, 5364, 491: 892, 892, 892, 892, 892, 498: 892, 500: 892, 5365, 892, 511: 892, 892, 892, 892, 892, 517: 892, 892, 892, 892, 523: 5363, 892, 936: 5367, 5366, 1058: 5368, 5362}, + {1007, 1007, 7: 1007, 47: 1007, 470: 1007, 472: 1007, 478: 1007, 1007, 481: 1007, 1007, 486: 1007, 1007, 491: 1007, 1007, 1007, 1007, 1007, 498: 1007, 500: 1007, 502: 1007, 511: 1007, 1007, 1007, 1007, 1007, 517: 1007, 1007, 1007, 1007, 524: 5383, 1313: 5384}, + {571: 4368, 646: 4369, 825: 5382}, // 2860 - {499: 5366, 510: 5367, 514: 5365}, - {470: 5362}, - {2: 2963, 2808, 2844, 2965, 2735, 897, 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 897, 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 581: 4956, 659: 4955, 2723, 2724, 2722, 852: 5363}, - {7: 4958, 47: 5364}, - {898, 898, 7: 898, 47: 898, 469: 898, 471: 898, 477: 898, 898, 480: 898, 898, 485: 898, 898, 898, 490: 898, 898, 898, 898, 898, 497: 898, 499: 898, 898, 898, 510: 898, 898, 898, 898, 898, 516: 898, 898, 898, 898, 522: 898, 898}, + {571: 4368, 646: 4369, 825: 5381}, + {571: 4368, 646: 4369, 825: 5380}, + {471: 904, 492: 5370, 1223: 5371}, + {894, 894, 7: 894, 47: 894, 470: 894, 472: 894, 478: 894, 894, 481: 894, 894, 486: 894, 894, 894, 491: 894, 894, 894, 894, 894, 498: 894, 500: 894, 894, 894, 511: 894, 894, 894, 894, 894, 517: 894, 894, 894, 894, 523: 894, 894}, + {891, 891, 7: 891, 47: 891, 470: 891, 472: 891, 478: 891, 891, 481: 891, 891, 486: 891, 891, 5364, 491: 891, 891, 891, 891, 891, 498: 891, 500: 891, 5365, 891, 511: 891, 891, 891, 891, 891, 517: 891, 891, 891, 891, 523: 5363, 891, 936: 5369, 5366}, // 2865 - {470: 901}, - {655: 5369}, - {655: 5368}, - {470: 899}, - {470: 900}, + {893, 893, 7: 893, 47: 893, 470: 893, 472: 893, 478: 893, 893, 481: 893, 893, 486: 893, 893, 893, 491: 893, 893, 893, 893, 893, 498: 893, 500: 893, 893, 893, 511: 893, 893, 893, 893, 893, 517: 893, 893, 893, 893, 523: 893, 893}, + {500: 5376, 511: 5377, 515: 5375}, + {471: 5372}, + {2: 2967, 2812, 2848, 2969, 2739, 899, 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 899, 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 584: 4966, 660: 4965, 2727, 2728, 2726, 853: 5373}, + {7: 4968, 47: 5374}, // 2870 - {470: 903, 491: 903}, - {470: 904, 491: 904}, - {470: 905, 491: 905}, - {86: 5378, 309: 5377, 390: 5376, 470: 1002, 1311: 5375}, - {914, 914, 7: 914, 47: 914, 469: 914, 471: 914, 477: 914, 914, 480: 914, 914, 485: 914, 914, 490: 914, 914, 914, 914, 914, 497: 914, 499: 914, 501: 914, 510: 914, 914, 914, 914, 914, 516: 914, 914, 914, 914}, + {900, 900, 7: 900, 47: 900, 470: 900, 472: 900, 478: 900, 900, 481: 900, 900, 486: 900, 900, 900, 491: 900, 900, 900, 900, 900, 498: 900, 500: 900, 900, 900, 511: 900, 900, 900, 900, 900, 517: 900, 900, 900, 900, 523: 900, 900}, + {471: 903}, + {657: 5379}, + {657: 5378}, + {471: 901}, // 2875 - {470: 5379}, - {470: 1001}, - {470: 1000}, - {470: 999}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 5381, 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 5380}, + {471: 902}, + {471: 905, 492: 905}, + {471: 906, 492: 906}, + {471: 907, 492: 907}, + {86: 5388, 309: 5387, 391: 5386, 471: 1004, 1312: 5385}, // 2880 - {47: 998, 369: 5389, 502: 3302, 506: 3300, 3301, 3299, 3297, 521: 5388, 730: 3298, 3296, 1313: 5387}, - {995, 995, 7: 995, 47: 995, 212: 5383, 469: 995, 471: 995, 477: 995, 995, 480: 995, 995, 485: 995, 995, 490: 995, 995, 995, 995, 995, 497: 995, 499: 995, 501: 995, 510: 995, 995, 995, 995, 995, 516: 995, 995, 995, 995, 1109: 5382}, - {1003, 1003, 7: 1003, 47: 1003, 469: 1003, 471: 1003, 477: 1003, 1003, 480: 1003, 1003, 485: 1003, 1003, 490: 1003, 1003, 1003, 1003, 1003, 497: 1003, 499: 1003, 501: 1003, 510: 1003, 1003, 1003, 1003, 1003, 516: 1003, 1003, 1003, 1003}, - {470: 5384}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 5385}, + {916, 916, 7: 916, 47: 916, 470: 916, 472: 916, 478: 916, 916, 481: 916, 916, 486: 916, 916, 491: 916, 916, 916, 916, 916, 498: 916, 500: 916, 502: 916, 511: 916, 916, 916, 916, 916, 517: 916, 916, 916, 916}, + {471: 5389}, + {471: 1003}, + {471: 1002}, + {471: 1001}, // 2885 - {47: 5386, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, - {994, 994, 7: 994, 47: 994, 469: 994, 471: 994, 477: 994, 994, 480: 994, 994, 485: 994, 994, 490: 994, 994, 994, 994, 994, 497: 994, 499: 994, 501: 994, 510: 994, 994, 994, 994, 994, 516: 994, 994, 994, 994}, - {47: 5390}, - {47: 997}, - {47: 996}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 5391, 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 5390}, + {47: 1000, 369: 5399, 503: 3307, 507: 3305, 3306, 3304, 3302, 522: 5398, 731: 3303, 3301, 1314: 5397}, + {997, 997, 7: 997, 47: 997, 212: 5393, 470: 997, 472: 997, 478: 997, 997, 481: 997, 997, 486: 997, 997, 491: 997, 997, 997, 997, 997, 498: 997, 500: 997, 502: 997, 511: 997, 997, 997, 997, 997, 517: 997, 997, 997, 997, 1110: 5392}, + {1005, 1005, 7: 1005, 47: 1005, 470: 1005, 472: 1005, 478: 1005, 1005, 481: 1005, 1005, 486: 1005, 1005, 491: 1005, 1005, 1005, 1005, 1005, 498: 1005, 500: 1005, 502: 1005, 511: 1005, 1005, 1005, 1005, 1005, 517: 1005, 1005, 1005, 1005}, + {471: 5394}, // 2890 - {995, 995, 7: 995, 47: 995, 212: 5383, 469: 995, 471: 995, 477: 995, 995, 480: 995, 995, 485: 995, 995, 490: 995, 995, 995, 995, 995, 497: 995, 499: 995, 501: 995, 510: 995, 995, 995, 995, 995, 516: 995, 995, 995, 995, 1109: 5391}, - {1004, 1004, 7: 1004, 47: 1004, 469: 1004, 471: 1004, 477: 1004, 1004, 480: 1004, 1004, 485: 1004, 1004, 490: 1004, 1004, 1004, 1004, 1004, 497: 1004, 499: 1004, 501: 1004, 510: 1004, 1004, 1004, 1004, 1004, 516: 1004, 1004, 1004, 1004}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 5393}, - {1845, 1845, 7: 1845, 47: 1845, 469: 1845, 471: 1845, 477: 1845, 1845, 480: 1845, 1845, 485: 1845, 1845, 1845, 490: 1845, 1845, 1845, 1845, 1845, 497: 1845, 499: 1845, 1845, 1845, 3302, 506: 3300, 3301, 3299, 3297, 1845, 1845, 1845, 1845, 1845, 516: 1845, 1845, 1845, 1845, 522: 1845, 1845, 730: 3298, 3296}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 470: 5294, 659: 3875, 2723, 2724, 2722, 705: 5293, 733: 5292, 793: 5291, 797: 5290, 5395}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 5395}, + {47: 5396, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {996, 996, 7: 996, 47: 996, 470: 996, 472: 996, 478: 996, 996, 481: 996, 996, 486: 996, 996, 491: 996, 996, 996, 996, 996, 498: 996, 500: 996, 502: 996, 511: 996, 996, 996, 996, 996, 517: 996, 996, 996, 996}, + {47: 5400}, + {47: 999}, // 2895 - {480: 5307, 5308, 512: 5306, 514: 5309, 516: 5305, 5310, 5311, 5396, 813: 5304, 818: 5303}, - {917, 917, 7: 917, 47: 917, 469: 917, 471: 917, 477: 917, 917, 485: 917, 917, 490: 917, 917, 917, 917, 917, 497: 917, 499: 917, 501: 917, 510: 917, 917, 513: 917}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 4095, 2723, 2724, 2722, 739: 5398, 887: 5399, 920: 5400}, - {496: 5408}, - {2326, 2326, 7: 2326, 478: 2326, 490: 2326, 494: 2326, 499: 2326}, + {47: 998}, + {997, 997, 7: 997, 47: 997, 212: 5393, 470: 997, 472: 997, 478: 997, 997, 481: 997, 997, 486: 997, 997, 491: 997, 997, 997, 997, 997, 498: 997, 500: 997, 502: 997, 511: 997, 997, 997, 997, 997, 517: 997, 997, 997, 997, 1110: 5401}, + {1006, 1006, 7: 1006, 47: 1006, 470: 1006, 472: 1006, 478: 1006, 1006, 481: 1006, 1006, 486: 1006, 1006, 491: 1006, 1006, 1006, 1006, 1006, 498: 1006, 500: 1006, 502: 1006, 511: 1006, 1006, 1006, 1006, 1006, 517: 1006, 1006, 1006, 1006}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 5403}, + {1849, 1849, 7: 1849, 47: 1849, 470: 1849, 472: 1849, 478: 1849, 1849, 481: 1849, 1849, 486: 1849, 1849, 1849, 491: 1849, 1849, 1849, 1849, 1849, 498: 1849, 500: 1849, 1849, 1849, 3307, 507: 3305, 3306, 3304, 3302, 1849, 1849, 1849, 1849, 1849, 517: 1849, 1849, 1849, 1849, 523: 1849, 1849, 731: 3303, 3301}, // 2900 - {245, 245, 7: 5401, 478: 245, 490: 245, 494: 2683, 499: 245, 786: 2684, 5402}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 4095, 2723, 2724, 2722, 739: 5398, 887: 5407}, - {1284, 1284, 478: 1284, 490: 1284, 499: 2686, 763: 2687, 807: 5403}, - {872, 872, 478: 872, 490: 5404, 1066: 5405}, - {505: 2697, 575: 2699, 729: 2696, 740: 2698, 877: 5406}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 471: 5304, 660: 3883, 2727, 2728, 2726, 706: 5303, 734: 5302, 794: 5301, 798: 5300, 5405}, + {481: 5317, 5318, 513: 5316, 515: 5319, 517: 5315, 5320, 5321, 5406, 814: 5314, 820: 5313}, + {919, 919, 7: 919, 47: 919, 470: 919, 472: 919, 478: 919, 919, 486: 919, 919, 491: 919, 919, 919, 919, 919, 498: 919, 500: 919, 502: 919, 511: 919, 919, 514: 919}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 4105, 2727, 2728, 2726, 740: 5408, 888: 5409, 921: 5410}, + {496: 5418}, // 2905 - {249, 249, 478: 249}, - {871, 871, 478: 871}, - {2325, 2325, 7: 2325, 478: 2325, 490: 2325, 494: 2325, 499: 2325}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3857, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3853, 792: 5409}, - {2327, 2327, 7: 2327, 478: 2327, 490: 2327, 494: 2327, 499: 2327}, + {2330, 2330, 7: 2330, 479: 2330, 491: 2330, 495: 2330, 500: 2330}, + {245, 245, 7: 5411, 479: 245, 491: 245, 495: 2687, 500: 245, 787: 2688, 5412}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 4105, 2727, 2728, 2726, 740: 5408, 888: 5417}, + {1287, 1287, 479: 1287, 491: 1287, 500: 2690, 764: 2691, 808: 5413}, + {874, 874, 479: 874, 491: 5414, 1067: 5415}, // 2910 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 4095, 2723, 2724, 2722, 739: 5398, 887: 5399, 920: 5411}, - {245, 245, 7: 5401, 478: 245, 494: 2683, 786: 2684, 5412}, - {248, 248, 478: 248}, - {2: 387, 387, 387, 387, 387, 8: 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 48: 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3875, 2723, 2724, 2722, 733: 5415}, + {506: 2701, 576: 2703, 730: 2700, 741: 2702, 878: 5416}, + {249, 249, 479: 249}, + {873, 873, 479: 873}, + {2329, 2329, 7: 2329, 479: 2329, 491: 2329, 495: 2329, 500: 2329}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3865, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3861, 793: 5419}, // 2915 + {2331, 2331, 7: 2331, 479: 2331, 491: 2331, 495: 2331, 500: 2331}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 4105, 2727, 2728, 2726, 740: 5408, 888: 5409, 921: 5421}, + {245, 245, 7: 5411, 479: 245, 495: 2687, 787: 2688, 5422}, + {248, 248, 479: 248}, + {2: 387, 387, 387, 387, 387, 8: 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 48: 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387}, + // 2920 + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3883, 2727, 2728, 2726, 734: 5425}, {386, 386}, - {20: 5428, 110: 5418, 123: 5421, 143: 570, 184: 5420, 191: 5431, 201: 5429, 216: 5422, 230: 5426, 252: 5430, 255: 5423, 541: 5427, 566: 5417, 1142: 5425, 1211: 5419, 1239: 5424}, - {2033, 2033, 2033, 2033, 2033, 2033, 2033, 8: 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 48: 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 471: 2033, 563: 2033}, - {2032, 2032, 2032, 2032, 2032, 2032, 2032, 8: 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 48: 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 471: 2032, 563: 2032}, + {20: 5438, 122: 5428, 124: 5431, 143: 570, 184: 5430, 191: 5441, 201: 5439, 216: 5432, 230: 5436, 252: 5440, 255: 5433, 541: 5437, 567: 5427, 1143: 5435, 1212: 5429, 1240: 5434}, + {2037, 2037, 2037, 2037, 2037, 2037, 2037, 8: 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 48: 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 472: 2037, 564: 2037}, + {2036, 2036, 2036, 2036, 2036, 2036, 2036, 8: 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 48: 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 472: 2036, 564: 2036}, + // 2925 {580, 580}, - // 2920 {577, 577}, {576, 576}, - {208: 5438}, + {208: 5448}, {574, 574}, - {143: 5437}, - // 2925 - {561, 561, 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 471: 561, 659: 3875, 2723, 2724, 2722, 733: 3876, 791: 4251, 1141: 5432}, + // 2930 + {143: 5447}, + {561, 561, 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 472: 561, 660: 3883, 2727, 2728, 2726, 734: 3884, 792: 4261, 1142: 5442}, {571, 571}, {143: 569}, {143: 568}, + // 2935 {143: 567}, - // 2930 {143: 566}, {143: 565}, - {557, 557, 471: 5434, 1340: 5433}, + {557, 557, 472: 5444, 1341: 5443}, {572, 572}, - {667: 5435}, - // 2935 - {493: 5436}, + // 2940 + {668: 5445}, + {494: 5446}, {556, 556}, {573, 573}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 5439, 2723, 2724, 2722, 950: 5440}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 5449, 2727, 2728, 2726, 951: 5450}, + // 2945 {579, 579, 7: 579}, - // 2940 - {575, 575, 7: 5441}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 5442, 2723, 2724, 2722}, + {575, 575, 7: 5451}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 5452, 2727, 2728, 2726}, {578, 578, 7: 578}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 5546, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 5547, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 5548, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3875, 2723, 2724, 2722, 733: 5549}, - {566: 5532, 645: 5533}, - // 2945 - {645: 5529}, - {566: 5524, 645: 5523}, - {566: 5521}, - {326: 5515}, - {139: 5512, 214: 5514, 336: 5510, 364: 5511, 909: 5513}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 5556, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 5557, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 5558, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3883, 2727, 2728, 2726, 734: 5559}, // 2950 - {197: 5507, 200: 5506}, - {566: 5465}, - {139: 5459, 158: 5461, 167: 589, 190: 5463, 257: 5462, 1298: 5460}, - {139: 5458}, - {139: 5457}, + {567: 5542, 646: 5543}, + {646: 5539}, + {567: 5534, 646: 5533}, + {567: 5531}, + {326: 5525}, // 2955 - {393: 5456}, - {692, 692}, - {697, 697}, + {139: 5522, 214: 5524, 336: 5520, 364: 5521, 910: 5523}, + {197: 5517, 200: 5516}, + {567: 5475}, + {139: 5469, 158: 5471, 167: 589, 190: 5473, 257: 5472, 1299: 5470}, + {139: 5468}, + // 2960 + {139: 5467}, + {394: 5466}, + {693, 693}, {698, 698}, {699, 699}, - // 2960 - {167: 5464}, + // 2965 + {700, 700}, + {167: 5474}, {167: 588}, {167: 587}, {167: 586}, - {691, 691}, - // 2965 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3875, 2723, 2724, 2722, 733: 5466}, - {670: 5467, 926: 5468}, - {158: 5471, 162: 5470, 566: 2048, 945: 5469}, - {700, 700}, - {566: 5473}, // 2970 - {110: 2047, 566: 2047}, - {162: 5472}, - {110: 2046, 566: 2046}, - {2: 1842, 1842, 1842, 1842, 1842, 8: 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 48: 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 563: 4772, 781: 5474}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3875, 2723, 2724, 2722, 733: 5475}, + {692, 692}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3883, 2727, 2728, 2726, 734: 5476}, + {671: 5477, 927: 5478}, + {158: 5481, 162: 5480, 567: 2052, 946: 5479}, + {701, 701}, // 2975 - {433, 433, 4: 433, 433, 433, 13: 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 469: 433, 5479, 433, 475: 433, 433, 433, 479: 433, 487: 433, 433, 498: 433, 500: 433, 503: 433, 433, 515: 5478, 566: 433, 642: 433, 433, 645: 433, 1234: 5477, 1308: 5476}, - {393, 393, 4: 4190, 4192, 397, 13: 4209, 2150, 4207, 4148, 4211, 4198, 4227, 4191, 4194, 4193, 4196, 4197, 4199, 4206, 397, 4217, 4218, 4204, 4205, 4210, 4212, 4224, 4223, 4229, 4225, 4222, 4215, 4220, 4221, 4214, 4216, 4219, 4208, 469: 393, 393, 393, 475: 393, 4189, 4226, 479: 2150, 487: 393, 393, 498: 393, 500: 4915, 503: 2150, 393, 566: 393, 642: 393, 2150, 645: 4195, 776: 4200, 788: 4202, 808: 4201, 830: 4203, 834: 4213, 838: 4228, 914: 5494, 1013: 5493}, - {2153, 2153, 469: 5487, 1081: 5486}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3875, 2723, 2724, 2722, 733: 5485}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 515: 5480, 570: 2376, 579: 2376, 581: 2376, 591: 2376, 621: 4537, 645: 2376, 659: 4095, 2723, 2724, 2722, 671: 2376, 2376, 739: 4404, 828: 4758, 843: 4890, 898: 4891, 963: 4892, 1139: 5481}, + {567: 5483}, + {122: 2051, 567: 2051}, + {162: 5482}, + {122: 2050, 567: 2050}, + {2: 1846, 1846, 1846, 1846, 1846, 8: 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 48: 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 564: 4782, 782: 5484}, // 2980 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3875, 2723, 2724, 2722, 733: 5483}, - {7: 4894, 47: 5482}, - {432, 432, 4: 432, 432, 432, 13: 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 469: 432, 432, 432, 475: 432, 432, 432, 479: 432, 487: 432, 432, 498: 432, 500: 432, 503: 432, 432, 566: 432, 642: 432, 432, 645: 432}, - {47: 5484}, - {2081, 2081, 469: 2081}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3883, 2727, 2728, 2726, 734: 5485}, + {433, 433, 4: 433, 433, 433, 13: 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 470: 433, 5489, 433, 476: 433, 433, 433, 480: 433, 488: 433, 433, 499: 433, 501: 433, 504: 433, 433, 516: 5488, 567: 433, 643: 433, 433, 646: 433, 1235: 5487, 1309: 5486}, + {393, 393, 4: 4200, 4202, 397, 13: 4219, 2154, 4217, 4158, 4221, 4208, 4237, 4201, 4204, 4203, 4206, 4207, 4209, 4216, 397, 4227, 4228, 4214, 4215, 4220, 4222, 4234, 4233, 4239, 4235, 4232, 4225, 4230, 4231, 4224, 4226, 4229, 4218, 470: 393, 393, 393, 476: 393, 4199, 4236, 480: 2154, 488: 393, 393, 499: 393, 501: 4925, 504: 2154, 393, 567: 393, 643: 393, 2154, 646: 4205, 777: 4210, 789: 4212, 809: 4211, 831: 4213, 835: 4223, 839: 4238, 915: 5504, 1014: 5503}, + {2157, 2157, 470: 5497, 1082: 5496}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3883, 2727, 2728, 2726, 734: 5495}, // 2985 - {2082, 2082, 469: 2082}, - {2154, 2154}, - {145: 5488}, - {371: 5490, 735: 5489}, - {521: 5492}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 516: 5490, 571: 2380, 580: 2380, 584: 2380, 636: 2380, 640: 4547, 646: 2380, 660: 4105, 2727, 2728, 2726, 672: 2380, 2380, 740: 4414, 829: 4768, 844: 4900, 899: 4901, 964: 4902, 1140: 5491}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3883, 2727, 2728, 2726, 734: 5493}, + {7: 4904, 47: 5492}, + {432, 432, 4: 432, 432, 432, 13: 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 470: 432, 432, 432, 476: 432, 432, 432, 480: 432, 488: 432, 432, 499: 432, 501: 432, 504: 432, 432, 567: 432, 643: 432, 432, 646: 432}, + {47: 5494}, // 2990 - {521: 5491}, - {2151, 2151}, - {2152, 2152}, - {2148, 2148, 469: 2148, 2148, 2148, 475: 2148, 487: 2148, 5496, 498: 2148, 504: 2148, 566: 2148, 642: 2148, 1094: 5495}, - {392, 392, 4: 4190, 4192, 397, 4917, 13: 4209, 2150, 4207, 4148, 4211, 4198, 4227, 4191, 4194, 4193, 4196, 4197, 4199, 4206, 397, 4217, 4218, 4204, 4205, 4210, 4212, 4224, 4223, 4229, 4225, 4222, 4215, 4220, 4221, 4214, 4216, 4219, 4208, 469: 392, 392, 392, 475: 392, 4189, 4226, 479: 2150, 487: 392, 392, 498: 392, 500: 4915, 503: 2150, 392, 566: 392, 642: 392, 2150, 645: 4195, 776: 4200, 788: 4202, 808: 4201, 830: 4203, 834: 4213, 838: 4916}, + {2085, 2085, 470: 2085}, + {2086, 2086, 470: 2086}, + {2158, 2158}, + {145: 5498}, + {371: 5500, 736: 5499}, // 2995 - {2096, 2096, 469: 2096, 2096, 2096, 475: 2096, 487: 5085, 498: 2096, 504: 5086, 566: 2096, 642: 2096, 1033: 5497}, - {655: 4967}, - {2093, 2093, 469: 2093, 2093, 2093, 475: 5499, 498: 2093, 566: 2093, 642: 2093, 1169: 5498}, - {2091, 2091, 469: 2091, 2551, 2550, 498: 2549, 566: 2548, 642: 2544, 705: 5504, 744: 5502, 2545, 2546, 2547, 2556, 752: 2554, 2553, 2552, 3834, 5503, 5501, 1191: 5500}, - {2092, 2092, 469: 2092, 2092, 2092, 498: 2092, 566: 2092, 642: 2092}, + {522: 5502}, + {522: 5501}, + {2155, 2155}, + {2156, 2156}, + {2152, 2152, 470: 2152, 2152, 2152, 476: 2152, 488: 2152, 5506, 499: 2152, 505: 2152, 567: 2152, 643: 2152, 1095: 5505}, // 3000 - {2153, 2153, 469: 5487, 1081: 5505}, - {2090, 2090, 469: 2090}, - {2089, 2089, 469: 2089, 477: 804, 485: 804, 804}, - {2088, 2088, 469: 2088}, - {2087, 2087, 469: 2087, 477: 803, 485: 803, 803, 490: 2689, 497: 2690, 499: 2686, 763: 3845, 3846}, + {392, 392, 4: 4200, 4202, 397, 4927, 13: 4219, 2154, 4217, 4158, 4221, 4208, 4237, 4201, 4204, 4203, 4206, 4207, 4209, 4216, 397, 4227, 4228, 4214, 4215, 4220, 4222, 4234, 4233, 4239, 4235, 4232, 4225, 4230, 4231, 4224, 4226, 4229, 4218, 470: 392, 392, 392, 476: 392, 4199, 4236, 480: 2154, 488: 392, 392, 499: 392, 501: 4925, 504: 2154, 392, 567: 392, 643: 392, 2154, 646: 4205, 777: 4210, 789: 4212, 809: 4211, 831: 4213, 835: 4223, 839: 4926}, + {2100, 2100, 470: 2100, 2100, 2100, 476: 2100, 488: 5095, 499: 2100, 505: 5096, 567: 2100, 643: 2100, 1034: 5507}, + {657: 4977}, + {2097, 2097, 470: 2097, 2097, 2097, 476: 5509, 499: 2097, 567: 2097, 643: 2097, 1170: 5508}, + {2095, 2095, 470: 2095, 2555, 2554, 499: 2553, 567: 2552, 643: 2548, 706: 5514, 745: 5512, 2549, 2550, 2551, 2560, 753: 2558, 2557, 2556, 3842, 5513, 5511, 1192: 5510}, // 3005 - {2155, 2155}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 5439, 2723, 2724, 2722, 950: 5509}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 5439, 2723, 2724, 2722, 950: 5508}, - {702, 702, 7: 5441}, - {703, 703, 7: 5441}, + {2096, 2096, 470: 2096, 2096, 2096, 499: 2096, 567: 2096, 643: 2096}, + {2157, 2157, 470: 5497, 1082: 5515}, + {2094, 2094, 470: 2094}, + {2093, 2093, 470: 2093, 478: 806, 486: 806, 806}, + {2092, 2092, 470: 2092}, // 3010 + {2091, 2091, 470: 2091, 478: 805, 486: 805, 805, 491: 2693, 498: 2694, 500: 2690, 764: 3853, 3854}, + {2159, 2159}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 5449, 2727, 2728, 2726, 951: 5519}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 5449, 2727, 2728, 2726, 951: 5518}, + {703, 703, 7: 5451}, + // 3015 + {704, 704, 7: 5451}, + {706, 706}, {705, 705}, - {704, 704}, + {697, 697}, {696, 696}, - {695, 695}, - {694, 694}, - // 3015 - {261: 5516}, - {505: 2697, 729: 4005, 760: 5518, 1077: 5517}, - {708, 708, 7: 5519}, - {683, 683, 7: 683}, - {505: 2697, 729: 4005, 760: 5520}, // 3020 - {682, 682, 7: 682}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3875, 2723, 2724, 2722, 733: 3876, 791: 5522}, - {709, 709, 7: 3878}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3875, 2723, 2724, 2722, 733: 5527}, - {493: 5525}, + {695, 695}, + {261: 5526}, + {506: 2701, 730: 4015, 761: 5528, 1078: 5527}, + {709, 709, 7: 5529}, + {684, 684, 7: 684}, // 3025 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3875, 2723, 2724, 2722, 733: 3876, 791: 5526}, - {701, 701, 7: 3878}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 5528, 2723, 2724, 2722}, - {711, 711}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3875, 2723, 2724, 2722, 733: 5530}, + {506: 2701, 730: 4015, 761: 5530}, + {683, 683, 7: 683}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3883, 2727, 2728, 2726, 734: 3884, 792: 5532}, + {710, 710, 7: 3886}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3883, 2727, 2728, 2726, 734: 5537}, // 3030 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 5531, 2723, 2724, 2722}, + {494: 5535}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3883, 2727, 2728, 2726, 734: 3884, 792: 5536}, + {702, 702, 7: 3886}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 5538, 2727, 2728, 2726}, {712, 712}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3875, 2723, 2724, 2722, 733: 3876, 791: 5545}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3875, 2723, 2724, 2722, 733: 5534}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 5535, 2723, 2724, 2722}, // 3035 - {713, 713, 470: 5538, 1052: 5537, 1216: 5536}, - {710, 710, 7: 5543}, - {686, 686, 7: 686}, - {505: 2697, 729: 4005, 760: 5539}, - {7: 5540}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3883, 2727, 2728, 2726, 734: 5540}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 5541, 2727, 2728, 2726}, + {713, 713}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3883, 2727, 2728, 2726, 734: 3884, 792: 5555}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3883, 2727, 2728, 2726, 734: 5544}, // 3040 - {505: 2697, 729: 4005, 760: 5541}, - {47: 5542}, - {684, 684, 7: 684}, - {470: 5538, 1052: 5544}, - {685, 685, 7: 685}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 5545, 2727, 2728, 2726}, + {714, 714, 471: 5548, 1053: 5547, 1217: 5546}, + {711, 711, 7: 5553}, + {687, 687, 7: 687}, + {506: 2701, 730: 4015, 761: 5549}, // 3045 - {714, 714, 7: 3878}, - {159: 1624, 375: 5559, 398: 5560, 648: 1624, 1160: 5558}, - {718, 718, 159: 1465, 260: 5552, 5551, 648: 1465}, - {693, 693, 159: 1446, 648: 1446}, - {159: 5550}, + {7: 5550}, + {506: 2701, 730: 4015, 761: 5551}, + {47: 5552}, + {685, 685, 7: 685}, + {471: 5548, 1053: 5554}, // 3050 - {715, 715}, - {245, 245, 494: 2683, 505: 2697, 729: 4005, 760: 5556, 786: 2684, 5555}, - {374: 5553}, - {505: 2697, 729: 4005, 760: 5518, 1077: 5554}, - {707, 707, 7: 5519}, + {686, 686, 7: 686}, + {715, 715, 7: 3886}, + {159: 1628, 375: 5569, 399: 5570, 649: 1628, 1161: 5568}, + {719, 719, 159: 1469, 260: 5562, 5561, 649: 1469}, + {694, 694, 159: 1449, 649: 1449}, // 3055 - {717, 717}, - {245, 245, 494: 2683, 786: 2684, 5557}, + {159: 5560}, {716, 716}, - {706, 706}, - {505: 2697, 729: 5566}, + {245, 245, 495: 2687, 506: 2701, 730: 4015, 761: 5566, 787: 2688, 5565}, + {374: 5563}, + {506: 2701, 730: 4015, 761: 5528, 1078: 5564}, // 3060 - {346: 5562, 505: 2697, 647: 5563, 729: 5561}, - {689, 689}, - {505: 2697, 729: 5565}, - {505: 2697, 729: 5564}, - {687, 687}, + {708, 708, 7: 5529}, + {718, 718}, + {245, 245, 495: 2687, 787: 2688, 5567}, + {717, 717}, + {707, 707}, // 3065 - {688, 688}, + {506: 2701, 730: 5576}, + {346: 5572, 506: 2701, 648: 5573, 730: 5571}, {690, 690}, - {2: 267, 267, 267, 267, 267, 8: 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 48: 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 472: 267, 476: 267, 496: 1788, 541: 267, 648: 1788, 656: 1788}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 5717, 496: 1786, 648: 1786, 656: 1786, 659: 5716, 2723, 2724, 2722}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 5714, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 496: 1749, 648: 1749, 656: 1749, 659: 5579, 2723, 2724, 2722, 826: 5622}, + {506: 2701, 730: 5575}, + {506: 2701, 730: 5574}, // 3070 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 496: 1743, 648: 1743, 656: 1743, 659: 5579, 2723, 2724, 2722, 826: 5711}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 3446, 476: 5707, 496: 1741, 541: 3715, 648: 1741, 656: 1741, 659: 3447, 2723, 2724, 2722, 734: 3714, 803: 5706}, - {491: 5696, 496: 5695, 648: 1736, 656: 1736}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 5602, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 5603, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 5607, 476: 5692, 496: 1727, 647: 5690, 1727, 656: 1727, 659: 3447, 2723, 2724, 2722, 734: 5130, 796: 5609, 816: 5610, 5608, 857: 5606, 1120: 5691, 1283: 5689}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 5687, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 496: 1725, 648: 1725, 656: 1725, 659: 5579, 2723, 2724, 2722, 826: 5619}, + {688, 688}, + {689, 689}, + {691, 691}, + {2: 267, 267, 267, 267, 267, 8: 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 48: 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 473: 267, 477: 267, 496: 1792, 541: 267, 649: 1792, 656: 1792}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 5729, 496: 1790, 649: 1790, 656: 1790, 660: 5728, 2727, 2728, 2726}, // 3075 - {177: 5672, 496: 1708, 648: 1708, 656: 1708, 667: 5673, 916: 5671, 966: 5670}, - {328: 5626, 330: 5625, 496: 1652, 648: 1652, 656: 1652, 1173: 5627}, - {796, 796, 7: 5615}, - {169: 5601}, - {496: 765, 648: 5599, 656: 765}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 5726, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 496: 1753, 649: 1753, 656: 1753, 660: 5590, 2727, 2728, 2726, 827: 5633}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 496: 1747, 649: 1747, 656: 1747, 660: 5590, 2727, 2728, 2726, 827: 5723}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 3452, 477: 5719, 496: 1745, 541: 3723, 649: 1745, 656: 1745, 660: 3453, 2727, 2728, 2726, 735: 3722, 804: 5718}, + {492: 5708, 496: 5707, 649: 1740, 656: 1740}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 5613, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 5614, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 5618, 477: 5704, 496: 1731, 648: 5702, 1731, 656: 1731, 660: 3453, 2727, 2728, 2726, 735: 5140, 797: 5620, 817: 5621, 5619, 858: 5617, 1121: 5703, 1284: 5701}, // 3080 - {496: 5588, 656: 5589, 819: 5597}, - {496: 5588, 656: 5589, 819: 5592}, - {496: 5588, 656: 5589, 819: 5590}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 3446, 476: 5587, 541: 3715, 659: 3447, 2723, 2724, 2722, 734: 3714, 803: 5586, 1178: 5585}, - {743, 743, 7: 743}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 5699, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 496: 1729, 649: 1729, 656: 1729, 660: 5590, 2727, 2728, 2726, 827: 5630}, + {177: 5684, 496: 1712, 649: 1712, 656: 1712, 668: 5685, 917: 5683, 967: 5682}, + {328: 5638, 330: 5637, 496: 1656, 649: 1656, 656: 1656, 1174: 5639}, + {473: 5636, 496: 1458, 649: 1458, 656: 1458}, + {798, 798, 7: 5626}, // 3085 + {169: 5612}, + {496: 766, 649: 5610, 656: 766}, + {496: 5599, 656: 5600, 821: 5608}, + {496: 5599, 656: 5600, 821: 5603}, + {496: 5599, 656: 5600, 821: 5601}, + // 3090 + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 3452, 477: 5598, 541: 3723, 660: 3453, 2727, 2728, 2726, 735: 3722, 804: 5597, 1179: 5596}, + {744, 744, 7: 744}, + {751, 751, 7: 751}, {750, 750, 7: 750}, {749, 749, 7: 749}, - {748, 748, 7: 748}, - {2: 767, 767, 767, 767, 767, 8: 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 48: 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 472: 767, 767, 767, 476: 767, 480: 767, 767, 767, 767, 767, 489: 767, 498: 767, 503: 767, 767, 767, 541: 767, 563: 767, 767, 767, 567: 767, 767, 767, 571: 767, 767, 767, 767, 767, 767, 767, 767, 582: 767, 767, 767, 767, 767, 767, 767, 767, 767, 592: 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 622: 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 644: 767}, - {2: 766, 766, 766, 766, 766, 8: 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 48: 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 472: 766, 766, 766, 476: 766, 480: 766, 766, 766, 766, 766, 489: 766, 498: 766, 503: 766, 766, 766, 541: 766, 563: 766, 766, 766, 567: 766, 766, 766, 571: 766, 766, 766, 766, 766, 766, 766, 766, 582: 766, 766, 766, 766, 766, 766, 766, 766, 766, 592: 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 622: 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, 644: 766}, - // 3090 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 5591}, - {755, 755, 7: 755, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 5594, 3217, 472: 3197, 3215, 2716, 476: 3857, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 5593, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3853, 792: 5595, 836: 5596}, - {769, 769, 2963, 2808, 2844, 2965, 2735, 769, 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 3305, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3820, 3210, 3291, 3209, 3206}, - {770, 770, 7: 770}, // 3095 - {768, 768, 7: 768}, - {756, 756, 7: 756}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 5594, 3217, 472: 3197, 3215, 2716, 476: 3857, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 5593, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3853, 792: 5595, 836: 5598}, - {760, 760, 7: 760}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 5600, 2723, 2724, 2722}, + {2: 768, 768, 768, 768, 768, 8: 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 48: 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 473: 768, 768, 768, 477: 768, 481: 768, 768, 768, 768, 768, 490: 768, 499: 768, 504: 768, 768, 768, 541: 768, 564: 768, 768, 768, 568: 768, 768, 768, 572: 768, 768, 768, 768, 768, 768, 768, 768, 581: 768, 768, 585: 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 637: 768, 768, 768, 645: 768}, + {2: 767, 767, 767, 767, 767, 8: 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 48: 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 473: 767, 767, 767, 477: 767, 481: 767, 767, 767, 767, 767, 490: 767, 499: 767, 504: 767, 767, 767, 541: 767, 564: 767, 767, 767, 568: 767, 767, 767, 572: 767, 767, 767, 767, 767, 767, 767, 767, 581: 767, 767, 585: 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 637: 767, 767, 767, 645: 767}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 5602}, + {756, 756, 7: 756, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 5605, 3223, 473: 3202, 3221, 2720, 477: 3865, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 5604, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3861, 793: 5606, 837: 5607}, // 3100 - {496: 764, 656: 764}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 5602, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 5603, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 5607, 647: 5605, 659: 3447, 2723, 2724, 2722, 734: 5130, 796: 5609, 816: 5610, 5608, 857: 5606, 1120: 5604}, - {727, 727, 7: 727, 565: 1816, 646: 727, 663: 1816}, - {786, 786, 565: 1647, 646: 786, 663: 1647}, - {646: 5613}, + {770, 770, 2967, 2812, 2848, 2969, 2739, 770, 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 3311, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3310, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3828, 3216, 3296, 3215, 3212}, + {771, 771, 7: 771}, + {769, 769, 7: 769}, + {757, 757, 7: 757}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 5605, 3223, 473: 3202, 3221, 2720, 477: 3865, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 5604, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3861, 793: 5606, 837: 5609}, // 3105 - {646: 785}, - {784, 784, 7: 5611, 646: 784}, - {728, 728, 7: 728, 565: 256, 646: 728, 663: 256}, - {722, 722, 7: 722, 646: 722}, - {721, 721, 7: 721, 646: 721}, + {761, 761, 7: 761}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 5611, 2727, 2728, 2726}, + {496: 765, 656: 765}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 5613, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 5614, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 5618, 648: 5616, 660: 3453, 2727, 2728, 2726, 735: 5140, 797: 5620, 817: 5621, 5619, 858: 5617, 1121: 5615}, + {728, 728, 7: 728, 566: 1820, 647: 728, 664: 1820}, // 3110 - {720, 720, 7: 720, 646: 720}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 5602, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 5607, 659: 3447, 2723, 2724, 2722, 734: 5130, 796: 5609, 816: 5612, 5608}, - {719, 719, 7: 719, 646: 719}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 3446, 567: 5176, 659: 3447, 2723, 2724, 2722, 734: 5175, 773: 5177, 863: 5614}, - {787, 787, 7: 5179}, + {787, 787, 566: 1651, 647: 787, 664: 1651}, + {647: 5624}, + {647: 786}, + {785, 785, 7: 5622, 647: 785}, + {729, 729, 7: 729, 566: 256, 647: 729, 664: 256}, // 3115 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 5567, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 5570, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 5616, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 5617, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 5571, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 503: 3791, 565: 5582, 587: 5581, 643: 3789, 659: 5579, 2723, 2724, 2722, 769: 5583, 826: 5580, 973: 5618}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 496: 1749, 648: 1749, 656: 1749, 659: 5579, 2723, 2724, 2722, 826: 5622}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 496: 1725, 648: 1725, 656: 1725, 659: 5579, 2723, 2724, 2722, 826: 5619}, - {742, 742, 7: 742}, - {496: 5588, 656: 5589, 819: 5620}, + {723, 723, 7: 723, 647: 723}, + {722, 722, 7: 722, 647: 722}, + {721, 721, 7: 721, 647: 721}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 5613, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 5618, 660: 3453, 2727, 2728, 2726, 735: 5140, 797: 5620, 817: 5623, 5619}, + {720, 720, 7: 720, 647: 720}, // 3120 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 5594, 3217, 472: 3197, 3215, 2716, 476: 3857, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 5593, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3853, 792: 5595, 836: 5621}, - {758, 758, 7: 758}, - {496: 5588, 656: 5589, 819: 5623}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 5594, 3217, 472: 3197, 3215, 2716, 476: 3857, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 5593, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3853, 792: 5595, 836: 5624}, - {759, 759, 7: 759}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 3452, 568: 5186, 660: 3453, 2727, 2728, 2726, 735: 5185, 774: 5187, 864: 5625}, + {788, 788, 7: 5189}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 5577, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 5580, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 5627, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 5628, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 5581, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 504: 3799, 566: 5593, 588: 5592, 644: 3797, 660: 5590, 2727, 2728, 2726, 770: 5594, 827: 5591, 974: 5629}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 496: 1753, 649: 1753, 656: 1753, 660: 5590, 2727, 2728, 2726, 827: 5633}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 496: 1729, 649: 1729, 656: 1729, 660: 5590, 2727, 2728, 2726, 827: 5630}, // 3125 - {491: 2190}, - {491: 2189}, - {491: 5628}, - {470: 2551, 2550, 498: 2549, 504: 2535, 564: 2534, 566: 2548, 642: 2544, 650: 2652, 705: 5631, 735: 5629, 744: 5632, 2545, 2546, 2547, 2556, 752: 2554, 2553, 2552, 5630, 5634, 5633, 762: 5636, 768: 2651, 770: 5637, 5638, 5635, 841: 5639}, - {2: 842, 842, 842, 842, 842, 8: 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 48: 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 487: 842, 495: 842, 749: 842, 842, 842, 758: 5277, 862: 5278, 913: 5643}, + {743, 743, 7: 743}, + {496: 5599, 656: 5600, 821: 5631}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 5605, 3223, 473: 3202, 3221, 2720, 477: 3865, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 5604, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3861, 793: 5606, 837: 5632}, + {759, 759, 7: 759}, + {496: 5599, 656: 5600, 821: 5634}, // 3130 - {470: 2551, 498: 2549, 566: 2548, 642: 2544, 650: 2652, 705: 3842, 744: 3841, 2545, 2546, 2547, 2556, 752: 2554, 3843, 3844, 768: 5642}, - {183, 183, 477: 803, 183, 485: 803, 803, 490: 2689, 497: 2690, 499: 2686, 763: 3845, 3846}, - {185, 185, 477: 804, 185, 485: 804, 804}, - {186, 186, 478: 186}, - {184, 184, 478: 184}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 5605, 3223, 473: 3202, 3221, 2720, 477: 3865, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 5604, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3861, 793: 5606, 837: 5635}, + {760, 760, 7: 760}, + {790, 790}, + {492: 2194}, + {492: 2193}, // 3135 - {182, 182, 478: 182}, - {181, 181, 478: 181}, - {180, 180, 478: 180}, - {179, 179, 478: 179}, - {175, 175, 478: 5640}, + {492: 5640}, + {471: 2555, 2554, 499: 2553, 505: 2539, 565: 2538, 567: 2552, 643: 2548, 651: 2656, 706: 5643, 736: 5641, 745: 5644, 2549, 2550, 2551, 2560, 753: 2558, 2557, 2556, 5642, 5646, 5645, 763: 5648, 769: 2655, 771: 5649, 5650, 5647, 842: 5651}, + {2: 844, 844, 844, 844, 844, 8: 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 48: 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 488: 844, 497: 844, 750: 844, 844, 844, 759: 5287, 863: 5288, 914: 5655}, + {471: 2555, 499: 2553, 567: 2552, 643: 2548, 651: 2656, 706: 3850, 745: 3849, 2549, 2550, 2551, 2560, 753: 2558, 3851, 3852, 769: 5654}, + {183, 183, 478: 805, 183, 486: 805, 805, 491: 2693, 498: 2694, 500: 2690, 764: 3853, 3854}, // 3140 - {470: 2551, 2550, 498: 2549, 504: 2535, 564: 2534, 566: 2548, 642: 2544, 650: 2652, 705: 5631, 735: 5629, 744: 5632, 2545, 2546, 2547, 2556, 752: 2554, 2553, 2552, 5630, 5634, 5633, 762: 5636, 768: 2651, 770: 5637, 5638, 5635, 841: 5641}, - {174, 174}, - {250, 250, 478: 250}, - {2: 1046, 1046, 1046, 1046, 1046, 8: 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 48: 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 487: 1046, 495: 1046, 749: 5282, 5281, 5280, 833: 5283, 882: 5644}, - {2: 1034, 1034, 1034, 1034, 1034, 8: 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 48: 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 5646, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 487: 1034, 495: 1034, 1103: 5645}, + {185, 185, 478: 806, 185, 486: 806, 806}, + {186, 186, 479: 186}, + {184, 184, 479: 184}, + {182, 182, 479: 182}, + {181, 181, 479: 181}, // 3145 - {2: 1840, 1840, 1840, 1840, 1840, 8: 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 48: 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 487: 4142, 495: 1840, 850: 5647}, - {2: 1033, 1033, 1033, 1033, 1033, 8: 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 48: 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 487: 1033, 495: 1033}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 495: 5648, 659: 5650, 2723, 2724, 2722, 912: 5651, 962: 5649}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3875, 2723, 2724, 2722, 733: 5663}, - {7: 5659, 495: 5658}, + {180, 180, 479: 180}, + {179, 179, 479: 179}, + {175, 175, 479: 5652}, + {471: 2555, 2554, 499: 2553, 505: 2539, 565: 2538, 567: 2552, 643: 2548, 651: 2656, 706: 5643, 736: 5641, 745: 5644, 2549, 2550, 2551, 2560, 753: 2558, 2557, 2556, 5642, 5646, 5645, 763: 5648, 769: 2655, 771: 5649, 5650, 5647, 842: 5653}, + {174, 174}, // 3150 - {7: 1036, 478: 1036, 495: 1036, 648: 5653, 902: 5652}, - {7: 1038, 478: 1038, 495: 1038}, - {7: 1040, 478: 1040, 495: 1040}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 520: 5655, 659: 5654, 2723, 2724, 2722}, - {7: 1036, 478: 1036, 495: 1036, 648: 5657, 902: 5656}, + {250, 250, 479: 250}, + {2: 1048, 1048, 1048, 1048, 1048, 8: 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 48: 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 488: 1048, 497: 1048, 750: 5292, 5291, 5290, 834: 5293, 883: 5656}, + {2: 1036, 1036, 1036, 1036, 1036, 8: 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 48: 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 5658, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 488: 1036, 497: 1036, 1104: 5657}, + {2: 1844, 1844, 1844, 1844, 1844, 8: 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 48: 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 488: 4152, 497: 1844, 851: 5659}, + {2: 1035, 1035, 1035, 1035, 1035, 8: 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 48: 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 488: 1035, 497: 1035}, // 3155 - {7: 1035, 478: 1035, 495: 1035}, - {7: 1039, 478: 1039, 495: 1039}, - {520: 5655}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 470: 5294, 576: 5289, 659: 3875, 2723, 2724, 2722, 705: 5293, 733: 5292, 793: 5291, 797: 5290, 5296, 847: 5286, 885: 5661}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 5650, 2723, 2724, 2722, 912: 5660}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 497: 5660, 660: 5662, 2727, 2728, 2726, 913: 5663, 963: 5661}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3883, 2727, 2728, 2726, 734: 5675}, + {7: 5671, 497: 5670}, + {7: 1038, 479: 1038, 497: 1038, 649: 5665, 903: 5664}, + {7: 1040, 479: 1040, 497: 1040}, // 3160 - {7: 1037, 478: 1037, 495: 1037}, - {245, 245, 7: 5340, 478: 245, 494: 2683, 786: 2684, 5662}, - {2058, 2058, 478: 2058}, - {911, 911, 911, 911, 911, 911, 911, 8: 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 48: 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 475: 911, 478: 911, 487: 911, 5344, 490: 911, 494: 911, 499: 911, 911, 522: 911, 855: 5664}, - {909, 909, 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 475: 5301, 478: 909, 487: 909, 490: 909, 494: 909, 499: 909, 909, 522: 909, 659: 5300, 2723, 2724, 2722, 910: 5299, 5665}, + {7: 1042, 479: 1042, 497: 1042}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 521: 5667, 660: 5666, 2727, 2728, 2726}, + {7: 1038, 479: 1038, 497: 1038, 649: 5669, 903: 5668}, + {7: 1037, 479: 1037, 497: 1037}, + {7: 1041, 479: 1041, 497: 1041}, // 3165 - {890, 890, 478: 890, 487: 5354, 490: 890, 494: 890, 499: 890, 5355, 522: 5353, 935: 5357, 5356, 1057: 5358, 5666}, - {245, 245, 478: 245, 490: 245, 494: 2683, 499: 245, 786: 2684, 5667}, - {1284, 1284, 478: 1284, 490: 1284, 499: 2686, 763: 2687, 807: 5668}, - {872, 872, 478: 872, 490: 5404, 1066: 5669}, - {2059, 2059, 478: 2059}, + {521: 5667}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 471: 5304, 577: 5299, 660: 3883, 2727, 2728, 2726, 706: 5303, 734: 5302, 794: 5301, 798: 5300, 5306, 848: 5296, 886: 5673}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 5662, 2727, 2728, 2726, 913: 5672}, + {7: 1039, 479: 1039, 497: 1039}, + {245, 245, 7: 5350, 479: 245, 495: 2687, 787: 2688, 5674}, // 3170 - {791, 791, 7: 5685}, - {780, 780, 7: 780}, - {352: 5677}, - {151: 5675, 683: 5674}, - {777, 777, 7: 777}, + {2062, 2062, 479: 2062}, + {913, 913, 913, 913, 913, 913, 913, 8: 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 48: 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 476: 913, 479: 913, 488: 913, 5354, 491: 913, 495: 913, 500: 913, 913, 523: 913, 856: 5676}, + {911, 911, 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 476: 5311, 479: 911, 488: 911, 491: 911, 495: 911, 500: 911, 911, 523: 911, 660: 5310, 2727, 2728, 2726, 911: 5309, 5677}, + {892, 892, 479: 892, 488: 5364, 491: 892, 495: 892, 500: 892, 5365, 523: 5363, 936: 5367, 5366, 1058: 5368, 5678}, + {245, 245, 479: 245, 491: 245, 495: 2687, 500: 245, 787: 2688, 5679}, // 3175 - {776, 776, 7: 776, 669: 5350, 919: 5676}, - {775, 775, 7: 775}, - {212: 5679, 382: 5681, 667: 5680, 1229: 5678}, - {778, 778, 7: 778}, - {667: 5684}, + {1287, 1287, 479: 1287, 491: 1287, 500: 2690, 764: 2691, 808: 5680}, + {874, 874, 479: 874, 491: 5414, 1067: 5681}, + {2063, 2063, 479: 2063}, + {793, 793, 7: 5697}, + {781, 781, 7: 781}, // 3180 - {322: 5682, 401: 5683}, - {771, 771, 7: 771}, - {773, 773, 7: 773}, - {772, 772, 7: 772}, - {774, 774, 7: 774}, + {352: 5689}, + {151: 5687, 684: 5686}, + {778, 778, 7: 778}, + {777, 777, 7: 777, 670: 5360, 920: 5688}, + {776, 776, 7: 776}, // 3185 - {177: 5672, 667: 5673, 916: 5686}, + {212: 5691, 382: 5693, 668: 5692, 1230: 5690}, {779, 779, 7: 779}, - {177: 5672, 496: 1708, 648: 1708, 656: 1708, 667: 5673, 916: 5671, 966: 5688}, - {792, 792, 7: 5685}, - {788, 788}, + {668: 5696}, + {322: 5694, 402: 5695}, + {772, 772, 7: 772}, // 3190 - {785, 785, 485: 5693}, - {782, 782}, - {781, 781}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 5602, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 5607, 659: 3447, 2723, 2724, 2722, 734: 5130, 796: 5609, 816: 5610, 5608, 857: 5694}, - {783, 783, 7: 5611}, + {774, 774, 7: 774}, + {773, 773, 7: 773}, + {775, 775, 7: 775}, + {177: 5684, 668: 5685, 917: 5698}, + {780, 780, 7: 780}, // 3195 - {13: 5701, 472: 5700, 1095: 5705}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 3446, 567: 5176, 659: 3447, 2723, 2724, 2722, 734: 5175, 773: 5697}, - {496: 5698}, - {13: 5701, 472: 5700, 1095: 5699}, - {794, 794}, + {177: 5684, 496: 1712, 649: 1712, 656: 1712, 668: 5685, 917: 5683, 967: 5700}, + {794, 794, 7: 5697}, + {789, 789}, + {786, 786, 486: 5705}, + {783, 783}, // 3200 - {731, 731}, - {470: 5702}, - {472: 5209, 888: 5703}, - {47: 5704}, - {730, 730}, + {782, 782}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 5613, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 5618, 660: 3453, 2727, 2728, 2726, 735: 5140, 797: 5620, 817: 5621, 5619, 858: 5706}, + {784, 784, 7: 5622}, + {13: 5713, 473: 5712, 1096: 5717}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 3452, 568: 5186, 660: 3453, 2727, 2728, 2726, 735: 5185, 774: 5709}, // 3205 - {795, 795}, - {754, 754, 7: 754, 479: 5708}, - {751, 751, 7: 751}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 3446, 476: 5709, 659: 3447, 2723, 2724, 2722, 734: 5710}, - {753, 753, 7: 753}, + {496: 5710}, + {13: 5713, 473: 5712, 1096: 5711}, + {796, 796}, + {732, 732}, + {471: 5714}, // 3210 - {752, 752, 7: 752}, - {496: 5588, 656: 5589, 819: 5712}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 5594, 3217, 472: 3197, 3215, 2716, 476: 3857, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 5593, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3853, 792: 5595, 836: 5713}, - {757, 757, 7: 757}, - {177: 5672, 496: 1708, 648: 1708, 656: 1708, 667: 5673, 916: 5671, 966: 5715}, + {473: 5219, 889: 5715}, + {47: 5716}, + {731, 731}, + {797, 797}, + {755, 755, 7: 755, 480: 5720}, // 3215 - {793, 793, 7: 5685}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 5719, 2723, 2724, 2722, 897: 5726}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 5719, 2723, 2724, 2722, 897: 5718}, - {496: 5588, 656: 5589, 819: 5724}, - {482: 5721, 496: 763, 648: 5720, 656: 763}, + {752, 752, 7: 752}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 3452, 477: 5721, 660: 3453, 2727, 2728, 2726, 735: 5722}, + {754, 754, 7: 754}, + {753, 753, 7: 753}, + {496: 5599, 656: 5600, 821: 5724}, // 3220 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 5719, 2723, 2724, 2722, 897: 5723}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 5719, 2723, 2724, 2722, 897: 5722}, - {496: 761, 656: 761}, - {496: 762, 656: 762}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 5594, 3217, 472: 3197, 3215, 2716, 476: 3857, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 5593, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3853, 792: 5595, 836: 5725}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 5605, 3223, 473: 3202, 3221, 2720, 477: 3865, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 5604, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3861, 793: 5606, 837: 5725}, + {758, 758, 7: 758}, + {177: 5684, 496: 1712, 649: 1712, 656: 1712, 668: 5685, 917: 5683, 967: 5727}, + {795, 795, 7: 5697}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 5731, 2727, 2728, 2726, 898: 5738}, // 3225 - {789, 789}, - {496: 5588, 656: 5589, 819: 5727}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 5594, 3217, 472: 3197, 3215, 2716, 476: 3857, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 5593, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3853, 792: 5595, 836: 5728}, - {790, 790}, - {646: 5738}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 5731, 2727, 2728, 2726, 898: 5730}, + {496: 5599, 656: 5600, 821: 5736}, + {484: 5733, 496: 764, 649: 5732, 656: 764}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 5731, 2727, 2728, 2726, 898: 5735}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 5731, 2727, 2728, 2726, 898: 5734}, // 3230 - {646: 5731}, - {267: 5732}, - {496: 5733}, - {472: 5734}, - {491: 5735}, + {496: 762, 656: 762}, + {496: 763, 656: 763}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 5605, 3223, 473: 3202, 3221, 2720, 477: 3865, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 5604, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3861, 793: 5606, 837: 5737}, + {791, 791}, + {496: 5599, 656: 5600, 821: 5739}, // 3235 - {266: 5736}, - {472: 5737}, - {797, 797}, - {267: 5739}, - {496: 5740}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 5605, 3223, 473: 3202, 3221, 2720, 477: 3865, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 5604, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3861, 793: 5606, 837: 5740}, + {792, 792}, + {647: 5750}, + {647: 5743}, + {267: 5744}, // 3240 - {472: 5741}, - {491: 5742}, - {266: 5743}, - {472: 5744}, - {798, 798}, + {496: 5745}, + {473: 5746}, + {492: 5747}, + {266: 5748}, + {473: 5749}, // 3245 - {470: 2551, 498: 2549, 566: 2548, 642: 2544, 705: 5756, 744: 5755, 2545, 2546, 2547, 5757}, - {470: 1227, 498: 1227, 566: 1227, 642: 1227, 647: 3502, 741: 3500, 3501, 780: 5749, 783: 5750, 928: 5752, 961: 5754}, - {470: 1227, 498: 1227, 566: 1227, 642: 1227, 647: 3502, 741: 3500, 3501, 780: 5749, 783: 5750, 928: 5752, 961: 5753}, - {470: 1227, 498: 1227, 566: 1227, 642: 1227, 647: 3502, 741: 3500, 3501, 780: 5749, 783: 5750, 928: 5752, 961: 5751}, - {2: 1230, 1230, 1230, 1230, 1230, 8: 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 48: 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 470: 1230, 472: 1230, 1230, 1230, 476: 1230, 480: 1230, 1230, 1230, 1230, 1230, 489: 1230, 498: 1230, 503: 1230, 1230, 1230, 512: 1230, 520: 1230, 541: 1230, 563: 1230, 1230, 1230, 1230, 1230, 1230, 1230, 571: 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 582: 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 592: 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 622: 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 642: 1230, 644: 1230, 647: 1230, 741: 1230, 1230, 749: 1230, 1230, 1230, 758: 1230, 765: 1230, 1230, 1230}, + {799, 799}, + {267: 5751}, + {496: 5752}, + {473: 5753}, + {492: 5754}, // 3250 - {470: 1226, 498: 1226, 566: 1226, 642: 1226}, - {470: 800, 498: 800, 566: 800, 642: 800}, - {470: 799, 498: 799, 566: 799, 642: 799}, - {470: 801, 498: 801, 566: 801, 642: 801}, - {470: 802, 498: 802, 566: 802, 642: 802}, + {266: 5755}, + {473: 5756}, + {800, 800}, + {471: 2555, 499: 2553, 567: 2552, 643: 2548, 706: 5768, 745: 5767, 2549, 2550, 2551, 5769}, + {471: 1229, 499: 1229, 567: 1229, 643: 1229, 648: 3508, 742: 3506, 3507, 781: 5761, 784: 5762, 929: 5764, 962: 5766}, // 3255 - {814, 814, 47: 814, 469: 814, 471: 814, 477: 804, 814, 485: 804, 804}, - {813, 813, 47: 813, 469: 813, 471: 813, 477: 803, 813, 485: 803, 803, 490: 2689, 497: 2690, 499: 2686, 763: 5758, 5759}, - {477: 805, 485: 805, 805}, - {812, 812, 47: 812, 469: 812, 471: 812, 478: 812, 490: 2689, 497: 2690, 764: 5760}, - {811, 811, 47: 811, 469: 811, 471: 811, 478: 811}, + {471: 1229, 499: 1229, 567: 1229, 643: 1229, 648: 3508, 742: 3506, 3507, 781: 5761, 784: 5762, 929: 5764, 962: 5765}, + {471: 1229, 499: 1229, 567: 1229, 643: 1229, 648: 3508, 742: 3506, 3507, 781: 5761, 784: 5762, 929: 5764, 962: 5763}, + {2: 1232, 1232, 1232, 1232, 1232, 8: 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 48: 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 471: 1232, 473: 1232, 1232, 1232, 477: 1232, 481: 1232, 1232, 1232, 1232, 1232, 490: 1232, 499: 1232, 504: 1232, 1232, 1232, 513: 1232, 521: 1232, 541: 1232, 564: 1232, 1232, 1232, 1232, 1232, 1232, 1232, 572: 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 581: 1232, 1232, 585: 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 637: 1232, 1232, 1232, 643: 1232, 645: 1232, 648: 1232, 742: 1232, 1232, 750: 1232, 1232, 1232, 759: 1232, 766: 1232, 1232, 1232}, + {471: 1228, 499: 1228, 567: 1228, 643: 1228}, + {471: 802, 499: 802, 567: 802, 643: 802}, // 3260 - {810, 810, 47: 810, 469: 810, 471: 810, 478: 810}, - {47: 3928, 477: 803, 485: 803, 803, 490: 2689, 497: 2690, 499: 2686, 763: 3845, 3846}, - {7: 5776, 470: 986, 498: 986, 566: 986, 642: 986, 650: 986, 735: 986}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 5765, 2723, 2724, 2722, 925: 5764, 1158: 5775}, - {7: 983, 470: 983, 498: 983, 566: 983, 642: 983, 650: 983, 735: 983}, + {471: 801, 499: 801, 567: 801, 643: 801}, + {471: 803, 499: 803, 567: 803, 643: 803}, + {471: 804, 499: 804, 567: 804, 643: 804}, + {816, 816, 47: 816, 470: 816, 472: 816, 478: 806, 816, 486: 806, 806}, + {815, 815, 47: 815, 470: 815, 472: 815, 478: 805, 815, 486: 805, 805, 491: 2693, 498: 2694, 500: 2690, 764: 5770, 5771}, // 3265 - {470: 5766, 475: 2301, 1217: 5767}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 5771, 2723, 2724, 2722, 872: 5770}, - {475: 5768}, - {470: 2551, 705: 5769}, - {7: 982, 470: 982, 498: 982, 566: 982, 642: 982, 650: 982, 735: 982}, + {478: 807, 486: 807, 807}, + {814, 814, 47: 814, 470: 814, 472: 814, 479: 814, 491: 2693, 498: 2694, 765: 5772}, + {813, 813, 47: 813, 470: 813, 472: 813, 479: 813}, + {812, 812, 47: 812, 470: 812, 472: 812, 479: 812}, + {47: 3936, 478: 805, 486: 805, 805, 491: 2693, 498: 2694, 500: 2690, 764: 3853, 3854}, // 3270 - {7: 5773, 47: 5772}, - {2299, 2299, 7: 2299, 47: 2299, 471: 2299}, - {475: 2300}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 5774, 2723, 2724, 2722}, - {2298, 2298, 7: 2298, 47: 2298, 471: 2298}, + {7: 5788, 471: 988, 499: 988, 567: 988, 643: 988, 651: 988, 736: 988}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 5777, 2727, 2728, 2726, 926: 5776, 1159: 5787}, + {7: 985, 471: 985, 499: 985, 567: 985, 643: 985, 651: 985, 736: 985}, + {471: 5778, 476: 2305, 1218: 5779}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 5783, 2727, 2728, 2726, 873: 5782}, // 3275 - {7: 5776, 470: 985, 498: 985, 566: 985, 642: 985, 650: 985, 735: 985}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 5765, 2723, 2724, 2722, 925: 5777}, - {7: 984, 470: 984, 498: 984, 566: 984, 642: 984, 650: 984, 735: 984}, - {1284, 1284, 47: 1284, 469: 1284, 471: 1284, 477: 1284, 1284, 485: 1284, 1284, 490: 1284, 1284, 1284, 1284, 497: 1284, 499: 2686, 763: 2687, 807: 5779}, - {858, 858, 47: 858, 469: 858, 471: 858, 477: 858, 858, 485: 858, 858, 490: 2689, 858, 858, 858, 497: 2690, 764: 2691, 824: 5780}, + {476: 5780}, + {471: 2555, 706: 5781}, + {7: 984, 471: 984, 499: 984, 567: 984, 643: 984, 651: 984, 736: 984}, + {7: 5785, 47: 5784}, + {2303, 2303, 7: 2303, 47: 2303, 472: 2303}, // 3280 - {829, 829, 47: 829, 469: 829, 471: 829, 477: 829, 829, 485: 829, 829, 491: 3866, 829, 3867, 883: 5781}, - {835, 835, 47: 835, 469: 835, 471: 835, 477: 835, 835, 485: 835, 835, 492: 3892, 884: 5782}, - {990, 990, 47: 990, 469: 990, 471: 990, 477: 990, 990, 485: 990, 990}, - {858, 858, 47: 858, 469: 858, 471: 858, 477: 858, 858, 485: 858, 858, 490: 2689, 858, 858, 858, 497: 2690, 764: 2691, 824: 5784}, - {829, 829, 47: 829, 469: 829, 471: 829, 477: 829, 829, 485: 829, 829, 491: 3866, 829, 3867, 883: 5785}, + {476: 2304}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 5786, 2727, 2728, 2726}, + {2302, 2302, 7: 2302, 47: 2302, 472: 2302}, + {7: 5788, 471: 987, 499: 987, 567: 987, 643: 987, 651: 987, 736: 987}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 5777, 2727, 2728, 2726, 926: 5789}, // 3285 - {835, 835, 47: 835, 469: 835, 471: 835, 477: 835, 835, 485: 835, 835, 492: 3892, 884: 5786}, - {991, 991, 47: 991, 469: 991, 471: 991, 477: 991, 991, 485: 991, 991}, - {655: 5794}, - {1284, 1284, 47: 1284, 469: 1284, 471: 1284, 477: 1284, 1284, 485: 1284, 1284, 490: 1284, 1284, 1284, 1284, 497: 1284, 499: 2686, 763: 2687, 807: 5790}, - {836, 836, 47: 836, 469: 836, 471: 836, 477: 836, 836, 485: 836, 836, 490: 836, 836, 836, 836, 497: 836, 499: 836, 511: 836, 513: 836}, + {7: 986, 471: 986, 499: 986, 567: 986, 643: 986, 651: 986, 736: 986}, + {1287, 1287, 47: 1287, 470: 1287, 472: 1287, 478: 1287, 1287, 486: 1287, 1287, 491: 1287, 1287, 1287, 1287, 498: 1287, 500: 2690, 764: 2691, 808: 5791}, + {860, 860, 47: 860, 470: 860, 472: 860, 478: 860, 860, 486: 860, 860, 491: 2693, 860, 860, 860, 498: 2694, 765: 2695, 826: 5792}, + {831, 831, 47: 831, 470: 831, 472: 831, 478: 831, 831, 486: 831, 831, 492: 3874, 831, 3875, 884: 5793}, + {837, 837, 47: 837, 470: 837, 472: 837, 478: 837, 837, 486: 837, 837, 493: 3900, 885: 5794}, // 3290 - {858, 858, 47: 858, 469: 858, 471: 858, 477: 858, 858, 485: 858, 858, 490: 2689, 858, 858, 858, 497: 2690, 764: 2691, 824: 5791}, - {829, 829, 47: 829, 469: 829, 471: 829, 477: 829, 829, 485: 829, 829, 491: 3866, 829, 3867, 883: 5792}, - {835, 835, 47: 835, 469: 835, 471: 835, 477: 835, 835, 485: 835, 835, 492: 3892, 884: 5793}, - {992, 992, 47: 992, 469: 992, 471: 992, 477: 992, 992, 485: 992, 992}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 2715, 866: 3199, 895: 5795}, + {992, 992, 47: 992, 470: 992, 472: 992, 478: 992, 992, 486: 992, 992}, + {860, 860, 47: 860, 470: 860, 472: 860, 478: 860, 860, 486: 860, 860, 491: 2693, 860, 860, 860, 498: 2694, 765: 2695, 826: 5796}, + {831, 831, 47: 831, 470: 831, 472: 831, 478: 831, 831, 486: 831, 831, 492: 3874, 831, 3875, 884: 5797}, + {837, 837, 47: 837, 470: 837, 472: 837, 478: 837, 837, 486: 837, 837, 493: 3900, 885: 5798}, + {993, 993, 47: 993, 470: 993, 472: 993, 478: 993, 993, 486: 993, 993}, // 3295 - {1850, 1850, 7: 3368, 47: 1850, 469: 1850, 471: 1850, 477: 1850, 1850, 485: 1850, 1850, 490: 1850, 1850, 1850, 1850, 497: 1850, 499: 1850, 511: 1850, 513: 1850}, - {245, 245, 47: 245, 469: 245, 471: 245, 477: 245, 245, 485: 245, 245, 490: 245, 245, 245, 245, 2683, 497: 245, 499: 245, 510: 245, 786: 2684, 5821}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 470: 5294, 576: 5289, 659: 3875, 2723, 2724, 2722, 705: 5293, 733: 5292, 793: 5291, 797: 5290, 5296, 847: 5286, 885: 5806, 1198: 5805, 1310: 5804}, - {837, 837, 47: 837, 469: 837, 471: 837, 477: 837, 837, 485: 837, 837, 490: 837, 837, 837, 837, 497: 837, 499: 837, 510: 5787, 934: 5789, 960: 5799}, - {1284, 1284, 47: 1284, 469: 1284, 471: 1284, 477: 1284, 1284, 485: 1284, 1284, 490: 1284, 1284, 1284, 1284, 497: 1284, 499: 2686, 763: 2687, 807: 5800}, + {657: 5806}, + {1287, 1287, 47: 1287, 470: 1287, 472: 1287, 478: 1287, 1287, 486: 1287, 1287, 491: 1287, 1287, 1287, 1287, 498: 1287, 500: 2690, 764: 2691, 808: 5802}, + {838, 838, 47: 838, 470: 838, 472: 838, 478: 838, 838, 486: 838, 838, 491: 838, 838, 838, 838, 498: 838, 500: 838, 512: 838, 514: 838}, + {860, 860, 47: 860, 470: 860, 472: 860, 478: 860, 860, 486: 860, 860, 491: 2693, 860, 860, 860, 498: 2694, 765: 2695, 826: 5803}, + {831, 831, 47: 831, 470: 831, 472: 831, 478: 831, 831, 486: 831, 831, 492: 3874, 831, 3875, 884: 5804}, // 3300 - {858, 858, 47: 858, 469: 858, 471: 858, 477: 858, 858, 485: 858, 858, 490: 2689, 858, 858, 858, 497: 2690, 764: 2691, 824: 5801}, - {829, 829, 47: 829, 469: 829, 471: 829, 477: 829, 829, 485: 829, 829, 491: 3866, 829, 3867, 883: 5802}, - {835, 835, 47: 835, 469: 835, 471: 835, 477: 835, 835, 485: 835, 835, 492: 3892, 884: 5803}, - {993, 993, 47: 993, 469: 993, 471: 993, 477: 993, 993, 485: 993, 993}, - {245, 245, 47: 245, 469: 245, 471: 245, 477: 245, 245, 485: 245, 245, 490: 245, 245, 245, 245, 2683, 497: 245, 499: 245, 510: 245, 245, 513: 245, 786: 2684, 5807}, + {837, 837, 47: 837, 470: 837, 472: 837, 478: 837, 837, 486: 837, 837, 493: 3900, 885: 5805}, + {994, 994, 47: 994, 470: 994, 472: 994, 478: 994, 994, 486: 994, 994}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 2719, 867: 3204, 896: 5807}, + {1854, 1854, 7: 3374, 47: 1854, 470: 1854, 472: 1854, 478: 1854, 1854, 486: 1854, 1854, 491: 1854, 1854, 1854, 1854, 498: 1854, 500: 1854, 512: 1854, 514: 1854}, + {245, 245, 47: 245, 470: 245, 472: 245, 478: 245, 245, 486: 245, 245, 491: 245, 245, 245, 245, 2687, 498: 245, 500: 245, 511: 245, 787: 2688, 5833}, // 3305 - {981, 981, 47: 981, 469: 981, 471: 981, 477: 981, 981, 485: 981, 981, 490: 981, 981, 981, 981, 981, 497: 981, 499: 981, 510: 981}, - {921, 921, 7: 5340, 47: 921, 469: 921, 471: 921, 477: 921, 921, 485: 921, 921, 490: 921, 921, 921, 921, 921, 497: 921, 499: 921, 510: 921, 921, 513: 921}, - {837, 837, 47: 837, 469: 837, 471: 837, 477: 837, 837, 485: 837, 837, 490: 837, 837, 837, 837, 497: 837, 499: 837, 510: 5787, 837, 513: 837, 934: 5789, 960: 5808}, - {1849, 1849, 47: 1849, 469: 1849, 471: 1849, 477: 1849, 1849, 485: 1849, 1849, 490: 1849, 1849, 1849, 1849, 497: 1849, 499: 1849, 511: 5809, 513: 1849, 1054: 5810}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 5820}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 471: 5304, 577: 5299, 660: 3883, 2727, 2728, 2726, 706: 5303, 734: 5302, 794: 5301, 798: 5300, 5306, 848: 5296, 886: 5818, 1199: 5817, 1311: 5816}, + {839, 839, 47: 839, 470: 839, 472: 839, 478: 839, 839, 486: 839, 839, 491: 839, 839, 839, 839, 498: 839, 500: 839, 511: 5799, 935: 5801, 961: 5811}, + {1287, 1287, 47: 1287, 470: 1287, 472: 1287, 478: 1287, 1287, 486: 1287, 1287, 491: 1287, 1287, 1287, 1287, 498: 1287, 500: 2690, 764: 2691, 808: 5812}, + {860, 860, 47: 860, 470: 860, 472: 860, 478: 860, 860, 486: 860, 860, 491: 2693, 860, 860, 860, 498: 2694, 765: 2695, 826: 5813}, + {831, 831, 47: 831, 470: 831, 472: 831, 478: 831, 831, 486: 831, 831, 492: 3874, 831, 3875, 884: 5814}, // 3310 - {980, 980, 47: 980, 469: 980, 471: 980, 477: 980, 980, 485: 980, 980, 490: 980, 980, 980, 980, 497: 980, 499: 980, 513: 5812, 1333: 5811}, - {1006, 1006, 47: 1006, 469: 1006, 471: 1006, 477: 1006, 1006, 485: 1006, 1006, 490: 1006, 1006, 1006, 1006, 497: 1006, 499: 1006}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3356, 2723, 2724, 2722, 918: 5815, 1154: 5814, 1334: 5813}, - {979, 979, 7: 5818, 47: 979, 469: 979, 471: 979, 477: 979, 979, 485: 979, 979, 490: 979, 979, 979, 979, 497: 979, 499: 979}, - {978, 978, 7: 978, 47: 978, 469: 978, 471: 978, 477: 978, 978, 485: 978, 978, 490: 978, 978, 978, 978, 497: 978, 499: 978}, + {837, 837, 47: 837, 470: 837, 472: 837, 478: 837, 837, 486: 837, 837, 493: 3900, 885: 5815}, + {995, 995, 47: 995, 470: 995, 472: 995, 478: 995, 995, 486: 995, 995}, + {245, 245, 47: 245, 470: 245, 472: 245, 478: 245, 245, 486: 245, 245, 491: 245, 245, 245, 245, 2687, 498: 245, 500: 245, 511: 245, 245, 514: 245, 787: 2688, 5819}, + {983, 983, 47: 983, 470: 983, 472: 983, 478: 983, 983, 486: 983, 983, 491: 983, 983, 983, 983, 983, 498: 983, 500: 983, 511: 983}, + {923, 923, 7: 5350, 47: 923, 470: 923, 472: 923, 478: 923, 923, 486: 923, 923, 491: 923, 923, 923, 923, 923, 498: 923, 500: 923, 511: 923, 923, 514: 923}, // 3315 - {475: 5816}, - {470: 3357, 1156: 5817}, - {976, 976, 7: 976, 47: 976, 469: 976, 471: 976, 477: 976, 976, 485: 976, 976, 490: 976, 976, 976, 976, 497: 976, 499: 976}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3356, 2723, 2724, 2722, 918: 5815, 1154: 5819}, - {977, 977, 7: 977, 47: 977, 469: 977, 471: 977, 477: 977, 977, 485: 977, 977, 490: 977, 977, 977, 977, 497: 977, 499: 977}, + {839, 839, 47: 839, 470: 839, 472: 839, 478: 839, 839, 486: 839, 839, 491: 839, 839, 839, 839, 498: 839, 500: 839, 511: 5799, 839, 514: 839, 935: 5801, 961: 5820}, + {1853, 1853, 47: 1853, 470: 1853, 472: 1853, 478: 1853, 1853, 486: 1853, 1853, 491: 1853, 1853, 1853, 1853, 498: 1853, 500: 1853, 512: 5821, 514: 1853, 1055: 5822}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 5832}, + {982, 982, 47: 982, 470: 982, 472: 982, 478: 982, 982, 486: 982, 982, 491: 982, 982, 982, 982, 498: 982, 500: 982, 514: 5824, 1334: 5823}, + {1008, 1008, 47: 1008, 470: 1008, 472: 1008, 478: 1008, 1008, 486: 1008, 1008, 491: 1008, 1008, 1008, 1008, 498: 1008, 500: 1008}, // 3320 - {1848, 1848, 47: 1848, 469: 1848, 471: 1848, 477: 1848, 1848, 485: 1848, 1848, 490: 1848, 1848, 1848, 1848, 1848, 1848, 497: 1848, 499: 1848, 502: 3302, 506: 3300, 3301, 3299, 3297, 1848, 513: 1848, 730: 3298, 3296}, - {1007, 1007, 47: 1007, 469: 1007, 471: 1007, 477: 1007, 1007, 485: 1007, 1007, 490: 1007, 1007, 1007, 1007, 497: 1007, 499: 1007, 510: 1007}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 520: 5838, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 5839, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 5837, 1042: 5840, 1206: 5841, 1278: 5842}, - {2: 856, 856, 856, 856, 856, 8: 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 48: 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 470: 856, 472: 856, 856, 856, 476: 856, 480: 856, 856, 856, 856, 856, 489: 856, 498: 856, 503: 856, 856, 856, 512: 856, 520: 856, 541: 856, 563: 856, 856, 856, 567: 856, 856, 856, 571: 856, 856, 856, 856, 856, 856, 856, 856, 582: 856, 856, 856, 856, 856, 856, 856, 856, 856, 592: 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 622: 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 644: 856, 647: 856, 741: 856, 856, 749: 856, 856, 856, 758: 856, 765: 856, 856, 856}, - {2: 855, 855, 855, 855, 855, 8: 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 48: 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 470: 855, 472: 855, 855, 855, 476: 855, 480: 855, 855, 855, 855, 855, 489: 855, 498: 855, 503: 855, 855, 855, 512: 855, 520: 855, 541: 855, 563: 855, 855, 855, 567: 855, 855, 855, 571: 855, 855, 855, 855, 855, 855, 855, 855, 582: 855, 855, 855, 855, 855, 855, 855, 855, 855, 592: 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 622: 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 644: 855, 647: 855, 741: 855, 855, 749: 855, 855, 855, 758: 855, 765: 855, 855, 855}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3362, 2727, 2728, 2726, 919: 5827, 1155: 5826, 1335: 5825}, + {981, 981, 7: 5830, 47: 981, 470: 981, 472: 981, 478: 981, 981, 486: 981, 981, 491: 981, 981, 981, 981, 498: 981, 500: 981}, + {980, 980, 7: 980, 47: 980, 470: 980, 472: 980, 478: 980, 980, 486: 980, 980, 491: 980, 980, 980, 980, 498: 980, 500: 980}, + {476: 5828}, + {471: 3363, 1157: 5829}, // 3325 - {2: 854, 854, 854, 854, 854, 8: 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 48: 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 470: 854, 472: 854, 854, 854, 476: 854, 480: 854, 854, 854, 854, 854, 489: 854, 498: 854, 503: 854, 854, 854, 512: 854, 520: 854, 541: 854, 563: 854, 854, 854, 567: 854, 854, 854, 571: 854, 854, 854, 854, 854, 854, 854, 854, 582: 854, 854, 854, 854, 854, 854, 854, 854, 854, 592: 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 622: 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 644: 854, 647: 854, 741: 854, 854, 749: 854, 854, 854, 758: 854, 765: 854, 854, 854}, - {2: 853, 853, 853, 853, 853, 8: 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 48: 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 470: 853, 472: 853, 853, 853, 476: 853, 480: 853, 853, 853, 853, 853, 489: 853, 498: 853, 503: 853, 853, 853, 512: 853, 520: 853, 541: 853, 563: 853, 853, 853, 567: 853, 853, 853, 571: 853, 853, 853, 853, 853, 853, 853, 853, 582: 853, 853, 853, 853, 853, 853, 853, 853, 853, 592: 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 622: 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 644: 853, 647: 853, 741: 853, 853, 749: 853, 853, 853, 758: 853, 765: 853, 853, 853}, - {2: 852, 852, 852, 852, 852, 8: 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 48: 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 470: 852, 472: 852, 852, 852, 476: 852, 480: 852, 852, 852, 852, 852, 489: 852, 498: 852, 503: 852, 852, 852, 512: 852, 520: 852, 541: 852, 563: 852, 852, 852, 567: 852, 852, 852, 571: 852, 852, 852, 852, 852, 852, 852, 852, 582: 852, 852, 852, 852, 852, 852, 852, 852, 852, 592: 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 622: 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 644: 852, 647: 852, 741: 852, 852, 749: 852, 852, 852, 758: 852, 765: 852, 852, 852}, - {2: 851, 851, 851, 851, 851, 8: 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 48: 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 470: 851, 472: 851, 851, 851, 476: 851, 480: 851, 851, 851, 851, 851, 489: 851, 498: 851, 503: 851, 851, 851, 512: 851, 520: 851, 541: 851, 563: 851, 851, 851, 567: 851, 851, 851, 571: 851, 851, 851, 851, 851, 851, 851, 851, 582: 851, 851, 851, 851, 851, 851, 851, 851, 851, 592: 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 622: 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 644: 851, 647: 851, 741: 851, 851, 749: 851, 851, 851, 758: 851, 765: 851, 851, 851}, - {2: 850, 850, 850, 850, 850, 8: 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 48: 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 470: 850, 472: 850, 850, 850, 476: 850, 480: 850, 850, 850, 850, 850, 489: 850, 498: 850, 503: 850, 850, 850, 512: 850, 520: 850, 541: 850, 563: 850, 850, 850, 567: 850, 850, 850, 571: 850, 850, 850, 850, 850, 850, 850, 850, 582: 850, 850, 850, 850, 850, 850, 850, 850, 850, 592: 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 622: 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 644: 850, 647: 850, 741: 850, 850, 749: 850, 850, 850, 758: 850, 765: 850, 850, 850}, + {978, 978, 7: 978, 47: 978, 470: 978, 472: 978, 478: 978, 978, 486: 978, 978, 491: 978, 978, 978, 978, 498: 978, 500: 978}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3362, 2727, 2728, 2726, 919: 5827, 1155: 5831}, + {979, 979, 7: 979, 47: 979, 470: 979, 472: 979, 478: 979, 979, 486: 979, 979, 491: 979, 979, 979, 979, 498: 979, 500: 979}, + {1852, 1852, 47: 1852, 470: 1852, 472: 1852, 478: 1852, 1852, 486: 1852, 1852, 491: 1852, 1852, 1852, 1852, 1852, 497: 1852, 1852, 500: 1852, 503: 3307, 507: 3305, 3306, 3304, 3302, 1852, 514: 1852, 731: 3303, 3301}, + {1009, 1009, 47: 1009, 470: 1009, 472: 1009, 478: 1009, 1009, 486: 1009, 1009, 491: 1009, 1009, 1009, 1009, 498: 1009, 500: 1009, 511: 1009}, // 3330 - {2: 849, 849, 849, 849, 849, 8: 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 48: 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 470: 849, 472: 849, 849, 849, 476: 849, 480: 849, 849, 849, 849, 849, 489: 849, 498: 849, 503: 849, 849, 849, 512: 849, 520: 849, 541: 849, 563: 849, 849, 849, 567: 849, 849, 849, 571: 849, 849, 849, 849, 849, 849, 849, 849, 582: 849, 849, 849, 849, 849, 849, 849, 849, 849, 592: 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 622: 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 644: 849, 647: 849, 741: 849, 849, 749: 849, 849, 849, 758: 849, 765: 849, 849, 849}, - {2: 848, 848, 848, 848, 848, 8: 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 48: 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 470: 848, 472: 848, 848, 848, 476: 848, 480: 848, 848, 848, 848, 848, 489: 848, 498: 848, 503: 848, 848, 848, 512: 848, 520: 848, 541: 848, 563: 848, 848, 848, 567: 848, 848, 848, 571: 848, 848, 848, 848, 848, 848, 848, 848, 582: 848, 848, 848, 848, 848, 848, 848, 848, 848, 592: 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 622: 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 644: 848, 647: 848, 741: 848, 848, 749: 848, 848, 848, 758: 848, 765: 848, 848, 848}, - {2: 846, 846, 846, 846, 846, 8: 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 48: 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 5828, 5834, 5835, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 470: 846, 472: 846, 846, 846, 476: 846, 480: 846, 846, 846, 846, 846, 489: 846, 498: 846, 503: 846, 846, 846, 512: 5831, 520: 846, 541: 846, 563: 846, 846, 846, 567: 846, 846, 846, 571: 846, 846, 846, 846, 846, 846, 846, 846, 582: 846, 846, 846, 846, 846, 846, 846, 846, 846, 592: 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 622: 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 644: 846, 647: 3502, 741: 3500, 3501, 749: 5282, 5281, 5280, 758: 5277, 765: 5827, 5830, 5826, 780: 5749, 783: 5824, 833: 5825, 862: 5823, 1117: 5836, 5829}, - {2: 844, 844, 844, 844, 844, 8: 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 48: 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 470: 844, 472: 844, 844, 844, 476: 844, 480: 844, 844, 844, 844, 844, 489: 844, 498: 844, 503: 844, 844, 844, 512: 844, 520: 844, 541: 844, 563: 844, 844, 844, 567: 844, 844, 844, 571: 844, 844, 844, 844, 844, 844, 844, 844, 582: 844, 844, 844, 844, 844, 844, 844, 844, 844, 592: 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 622: 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, 644: 844, 647: 844, 741: 844, 844, 749: 844, 844, 844, 758: 844, 765: 844, 844, 844}, - {2: 840, 840, 840, 840, 840, 8: 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 48: 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 470: 840, 472: 840, 840, 840, 476: 840, 480: 840, 840, 840, 840, 840, 489: 840, 498: 840, 503: 840, 840, 840, 512: 840, 520: 840, 541: 840, 563: 840, 840, 840, 567: 840, 840, 840, 571: 840, 840, 840, 840, 840, 840, 840, 840, 582: 840, 840, 840, 840, 840, 840, 840, 840, 840, 592: 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 622: 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 644: 840, 647: 840, 741: 840, 840, 749: 840, 840, 840, 758: 840, 765: 840, 840, 840}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 521: 5850, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 5851, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 5849, 1043: 5852, 1207: 5853, 1279: 5854}, + {2: 858, 858, 858, 858, 858, 8: 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 48: 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 471: 858, 473: 858, 858, 858, 477: 858, 481: 858, 858, 858, 858, 858, 490: 858, 499: 858, 504: 858, 858, 858, 513: 858, 521: 858, 541: 858, 564: 858, 858, 858, 568: 858, 858, 858, 572: 858, 858, 858, 858, 858, 858, 858, 858, 581: 858, 858, 585: 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 637: 858, 858, 858, 645: 858, 648: 858, 742: 858, 858, 750: 858, 858, 858, 759: 858, 766: 858, 858, 858}, + {2: 857, 857, 857, 857, 857, 8: 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 48: 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 471: 857, 473: 857, 857, 857, 477: 857, 481: 857, 857, 857, 857, 857, 490: 857, 499: 857, 504: 857, 857, 857, 513: 857, 521: 857, 541: 857, 564: 857, 857, 857, 568: 857, 857, 857, 572: 857, 857, 857, 857, 857, 857, 857, 857, 581: 857, 857, 585: 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 637: 857, 857, 857, 645: 857, 648: 857, 742: 857, 857, 750: 857, 857, 857, 759: 857, 766: 857, 857, 857}, + {2: 856, 856, 856, 856, 856, 8: 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 48: 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 471: 856, 473: 856, 856, 856, 477: 856, 481: 856, 856, 856, 856, 856, 490: 856, 499: 856, 504: 856, 856, 856, 513: 856, 521: 856, 541: 856, 564: 856, 856, 856, 568: 856, 856, 856, 572: 856, 856, 856, 856, 856, 856, 856, 856, 581: 856, 856, 585: 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 637: 856, 856, 856, 645: 856, 648: 856, 742: 856, 856, 750: 856, 856, 856, 759: 856, 766: 856, 856, 856}, + {2: 855, 855, 855, 855, 855, 8: 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 48: 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 471: 855, 473: 855, 855, 855, 477: 855, 481: 855, 855, 855, 855, 855, 490: 855, 499: 855, 504: 855, 855, 855, 513: 855, 521: 855, 541: 855, 564: 855, 855, 855, 568: 855, 855, 855, 572: 855, 855, 855, 855, 855, 855, 855, 855, 581: 855, 855, 585: 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 637: 855, 855, 855, 645: 855, 648: 855, 742: 855, 855, 750: 855, 855, 855, 759: 855, 766: 855, 855, 855}, // 3335 - {2: 839, 839, 839, 839, 839, 8: 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 48: 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 470: 839, 472: 839, 839, 839, 476: 839, 480: 839, 839, 839, 839, 839, 489: 839, 498: 839, 503: 839, 839, 839, 512: 839, 520: 839, 541: 839, 563: 839, 839, 839, 567: 839, 839, 839, 571: 839, 839, 839, 839, 839, 839, 839, 839, 582: 839, 839, 839, 839, 839, 839, 839, 839, 839, 592: 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 622: 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 839, 644: 839, 647: 839, 741: 839, 839, 749: 839, 839, 839, 758: 839, 765: 839, 839, 839}, - {2: 845, 845, 845, 845, 845, 8: 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 48: 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 470: 845, 472: 845, 845, 845, 476: 845, 480: 845, 845, 845, 845, 845, 489: 845, 498: 845, 503: 845, 845, 845, 512: 845, 520: 845, 541: 845, 563: 845, 845, 845, 567: 845, 845, 845, 571: 845, 845, 845, 845, 845, 845, 845, 845, 582: 845, 845, 845, 845, 845, 845, 845, 845, 845, 592: 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 622: 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 644: 845, 647: 845, 741: 845, 845, 749: 845, 845, 845, 758: 845, 765: 845, 845, 845}, - {1858, 1858, 2963, 2808, 2844, 2965, 2735, 1858, 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 1858, 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 1858, 471: 1858, 5855, 475: 5854, 477: 1858, 1858, 485: 1858, 1858, 490: 1858, 1858, 1858, 1858, 1858, 1858, 497: 1858, 499: 1858, 502: 3302, 506: 3300, 3301, 3299, 3297, 1858, 1858, 659: 5853, 2723, 2724, 2722, 730: 3298, 3296, 1203: 5852, 5851}, - {1862, 1862, 7: 1862, 47: 1862, 469: 1862, 471: 1862, 477: 1862, 1862, 485: 1862, 1862, 490: 1862, 1862, 1862, 1862, 1862, 1862, 497: 1862, 499: 1862, 510: 1862, 1862}, - {1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 471: 1267, 1267, 1267, 1267, 1267, 477: 1267, 1267, 1267, 482: 1267, 1267, 1267, 1267, 1267, 490: 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 499: 1267, 502: 1267, 506: 1267, 1267, 1267, 1267, 1267, 1267, 515: 1267, 520: 1267, 540: 1267, 544: 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 580: 1267, 648: 5846, 651: 1267, 1267}, + {2: 854, 854, 854, 854, 854, 8: 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 48: 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 471: 854, 473: 854, 854, 854, 477: 854, 481: 854, 854, 854, 854, 854, 490: 854, 499: 854, 504: 854, 854, 854, 513: 854, 521: 854, 541: 854, 564: 854, 854, 854, 568: 854, 854, 854, 572: 854, 854, 854, 854, 854, 854, 854, 854, 581: 854, 854, 585: 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 637: 854, 854, 854, 645: 854, 648: 854, 742: 854, 854, 750: 854, 854, 854, 759: 854, 766: 854, 854, 854}, + {2: 853, 853, 853, 853, 853, 8: 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 48: 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 471: 853, 473: 853, 853, 853, 477: 853, 481: 853, 853, 853, 853, 853, 490: 853, 499: 853, 504: 853, 853, 853, 513: 853, 521: 853, 541: 853, 564: 853, 853, 853, 568: 853, 853, 853, 572: 853, 853, 853, 853, 853, 853, 853, 853, 581: 853, 853, 585: 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 637: 853, 853, 853, 645: 853, 648: 853, 742: 853, 853, 750: 853, 853, 853, 759: 853, 766: 853, 853, 853}, + {2: 852, 852, 852, 852, 852, 8: 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 48: 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 471: 852, 473: 852, 852, 852, 477: 852, 481: 852, 852, 852, 852, 852, 490: 852, 499: 852, 504: 852, 852, 852, 513: 852, 521: 852, 541: 852, 564: 852, 852, 852, 568: 852, 852, 852, 572: 852, 852, 852, 852, 852, 852, 852, 852, 581: 852, 852, 585: 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 637: 852, 852, 852, 645: 852, 648: 852, 742: 852, 852, 750: 852, 852, 852, 759: 852, 766: 852, 852, 852}, + {2: 851, 851, 851, 851, 851, 8: 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 48: 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 471: 851, 473: 851, 851, 851, 477: 851, 481: 851, 851, 851, 851, 851, 490: 851, 499: 851, 504: 851, 851, 851, 513: 851, 521: 851, 541: 851, 564: 851, 851, 851, 568: 851, 851, 851, 572: 851, 851, 851, 851, 851, 851, 851, 851, 581: 851, 851, 585: 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 637: 851, 851, 851, 645: 851, 648: 851, 742: 851, 851, 750: 851, 851, 851, 759: 851, 766: 851, 851, 851}, + {2: 850, 850, 850, 850, 850, 8: 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 48: 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 471: 850, 473: 850, 850, 850, 477: 850, 481: 850, 850, 850, 850, 850, 490: 850, 499: 850, 504: 850, 850, 850, 513: 850, 521: 850, 541: 850, 564: 850, 850, 850, 568: 850, 850, 850, 572: 850, 850, 850, 850, 850, 850, 850, 850, 581: 850, 850, 585: 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, 637: 850, 850, 850, 645: 850, 648: 850, 742: 850, 850, 750: 850, 850, 850, 759: 850, 766: 850, 850, 850}, // 3340 - {1852, 1852, 7: 1852, 47: 1852, 469: 1852, 471: 1852, 477: 1852, 1852, 485: 1852, 1852, 490: 1852, 1852, 1852, 1852, 1852, 1852, 497: 1852, 499: 1852, 510: 1852, 1852}, - {838, 838, 7: 5844, 47: 838, 469: 838, 471: 838, 477: 838, 838, 485: 838, 838, 490: 838, 838, 838, 838, 838, 838, 497: 838, 499: 838, 510: 838, 838}, - {1849, 1849, 47: 1849, 469: 1849, 471: 1849, 477: 1849, 1849, 485: 1849, 1849, 490: 1849, 1849, 1849, 1849, 1849, 1849, 497: 1849, 499: 1849, 510: 1849, 5809, 1054: 5843}, - {1008, 1008, 47: 1008, 469: 1008, 471: 1008, 477: 1008, 1008, 485: 1008, 1008, 490: 1008, 1008, 1008, 1008, 1008, 1008, 497: 1008, 499: 1008, 510: 1008}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 520: 5838, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 5839, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 5837, 1042: 5845}, + {2: 848, 848, 848, 848, 848, 8: 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 48: 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 5840, 5846, 5847, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 471: 848, 473: 848, 848, 848, 477: 848, 481: 848, 848, 848, 848, 848, 490: 848, 499: 848, 504: 848, 848, 848, 513: 5843, 521: 848, 541: 848, 564: 848, 848, 848, 568: 848, 848, 848, 572: 848, 848, 848, 848, 848, 848, 848, 848, 581: 848, 848, 585: 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 637: 848, 848, 848, 645: 848, 648: 3508, 742: 3506, 3507, 750: 5292, 5291, 5290, 759: 5287, 766: 5839, 5842, 5838, 781: 5761, 784: 5836, 834: 5837, 863: 5835, 1118: 5848, 5841}, + {2: 846, 846, 846, 846, 846, 8: 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 48: 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 471: 846, 473: 846, 846, 846, 477: 846, 481: 846, 846, 846, 846, 846, 490: 846, 499: 846, 504: 846, 846, 846, 513: 846, 521: 846, 541: 846, 564: 846, 846, 846, 568: 846, 846, 846, 572: 846, 846, 846, 846, 846, 846, 846, 846, 581: 846, 846, 585: 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 637: 846, 846, 846, 645: 846, 648: 846, 742: 846, 846, 750: 846, 846, 846, 759: 846, 766: 846, 846, 846}, + {2: 842, 842, 842, 842, 842, 8: 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 48: 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 471: 842, 473: 842, 842, 842, 477: 842, 481: 842, 842, 842, 842, 842, 490: 842, 499: 842, 504: 842, 842, 842, 513: 842, 521: 842, 541: 842, 564: 842, 842, 842, 568: 842, 842, 842, 572: 842, 842, 842, 842, 842, 842, 842, 842, 581: 842, 842, 585: 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 637: 842, 842, 842, 645: 842, 648: 842, 742: 842, 842, 750: 842, 842, 842, 759: 842, 766: 842, 842, 842}, + {2: 841, 841, 841, 841, 841, 8: 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 48: 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 471: 841, 473: 841, 841, 841, 477: 841, 481: 841, 841, 841, 841, 841, 490: 841, 499: 841, 504: 841, 841, 841, 513: 841, 521: 841, 541: 841, 564: 841, 841, 841, 568: 841, 841, 841, 572: 841, 841, 841, 841, 841, 841, 841, 841, 581: 841, 841, 585: 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, 637: 841, 841, 841, 645: 841, 648: 841, 742: 841, 841, 750: 841, 841, 841, 759: 841, 766: 841, 841, 841}, + {2: 847, 847, 847, 847, 847, 8: 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 48: 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 471: 847, 473: 847, 847, 847, 477: 847, 481: 847, 847, 847, 847, 847, 490: 847, 499: 847, 504: 847, 847, 847, 513: 847, 521: 847, 541: 847, 564: 847, 847, 847, 568: 847, 847, 847, 572: 847, 847, 847, 847, 847, 847, 847, 847, 581: 847, 847, 585: 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 637: 847, 847, 847, 645: 847, 648: 847, 742: 847, 847, 750: 847, 847, 847, 759: 847, 766: 847, 847, 847}, // 3345 - {1851, 1851, 7: 1851, 47: 1851, 469: 1851, 471: 1851, 477: 1851, 1851, 485: 1851, 1851, 490: 1851, 1851, 1851, 1851, 1851, 1851, 497: 1851, 499: 1851, 510: 1851, 1851}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 520: 5847, 659: 5848, 2723, 2724, 2722}, - {1861, 1861, 7: 1861, 47: 1861, 469: 1861, 471: 1861, 477: 1861, 1861, 485: 1861, 1861, 490: 1861, 1861, 1861, 1861, 1861, 1861, 497: 1861, 499: 1861, 510: 1861, 1861}, - {1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 3944, 1266, 1266, 1266, 1266, 1266, 477: 1266, 1266, 1266, 482: 1266, 1266, 1266, 1266, 1266, 490: 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 499: 1266, 502: 1266, 506: 1266, 1266, 1266, 1266, 1266, 1266, 515: 1266, 520: 1266, 540: 1266, 544: 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 580: 1266, 648: 5849, 651: 1266, 1266}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 520: 5850, 659: 3740, 2723, 2724, 2722}, + {1862, 1862, 2967, 2812, 2848, 2969, 2739, 1862, 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 1862, 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 1862, 472: 1862, 5867, 476: 5866, 478: 1862, 1862, 486: 1862, 1862, 491: 1862, 1862, 1862, 1862, 1862, 497: 1862, 1862, 500: 1862, 503: 3307, 507: 3305, 3306, 3304, 3302, 1862, 1862, 660: 5865, 2727, 2728, 2726, 731: 3303, 3301, 1204: 5864, 5863}, + {1866, 1866, 7: 1866, 47: 1866, 470: 1866, 472: 1866, 478: 1866, 1866, 486: 1866, 1866, 491: 1866, 1866, 1866, 1866, 1866, 497: 1866, 1866, 500: 1866, 511: 1866, 1866}, + {1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 472: 1269, 1269, 1269, 1269, 1269, 478: 1269, 1269, 1269, 483: 1269, 1269, 1269, 1269, 1269, 491: 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 500: 1269, 503: 1269, 507: 1269, 1269, 1269, 1269, 1269, 1269, 516: 1269, 521: 1269, 542: 1269, 545: 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 583: 1269, 649: 5858, 652: 1269, 1269}, + {1856, 1856, 7: 1856, 47: 1856, 470: 1856, 472: 1856, 478: 1856, 1856, 486: 1856, 1856, 491: 1856, 1856, 1856, 1856, 1856, 497: 1856, 1856, 500: 1856, 511: 1856, 1856}, + {840, 840, 7: 5856, 47: 840, 470: 840, 472: 840, 478: 840, 840, 486: 840, 840, 491: 840, 840, 840, 840, 840, 497: 840, 840, 500: 840, 511: 840, 840}, // 3350 - {1860, 1860, 7: 1860, 47: 1860, 469: 1860, 471: 1860, 477: 1860, 1860, 485: 1860, 1860, 490: 1860, 1860, 1860, 1860, 1860, 1860, 497: 1860, 499: 1860, 510: 1860, 1860}, - {1859, 1859, 7: 1859, 47: 1859, 469: 1859, 471: 1859, 477: 1859, 1859, 485: 1859, 1859, 490: 1859, 1859, 1859, 1859, 1859, 1859, 497: 1859, 499: 1859, 510: 1859, 1859}, - {1857, 1857, 7: 1857, 47: 1857, 469: 1857, 471: 1857, 477: 1857, 1857, 485: 1857, 1857, 490: 1857, 1857, 1857, 1857, 1857, 1857, 497: 1857, 499: 1857, 510: 1857, 1857}, - {1856, 1856, 7: 1856, 47: 1856, 469: 1856, 471: 1856, 477: 1856, 1856, 485: 1856, 1856, 490: 1856, 1856, 1856, 1856, 1856, 1856, 497: 1856, 499: 1856, 510: 1856, 1856}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 5857, 659: 5856, 2723, 2724, 2722}, + {1853, 1853, 47: 1853, 470: 1853, 472: 1853, 478: 1853, 1853, 486: 1853, 1853, 491: 1853, 1853, 1853, 1853, 1853, 497: 1853, 1853, 500: 1853, 511: 1853, 5821, 1055: 5855}, + {1010, 1010, 47: 1010, 470: 1010, 472: 1010, 478: 1010, 1010, 486: 1010, 1010, 491: 1010, 1010, 1010, 1010, 1010, 497: 1010, 1010, 500: 1010, 511: 1010}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 521: 5850, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 5851, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 5849, 1043: 5857}, + {1855, 1855, 7: 1855, 47: 1855, 470: 1855, 472: 1855, 478: 1855, 1855, 486: 1855, 1855, 491: 1855, 1855, 1855, 1855, 1855, 497: 1855, 1855, 500: 1855, 511: 1855, 1855}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 521: 5859, 660: 5860, 2727, 2728, 2726}, // 3355 - {1854, 1854, 7: 1854, 47: 1854, 469: 1854, 471: 1854, 477: 1854, 1854, 485: 1854, 1854, 490: 1854, 1854, 1854, 1854, 1854, 1854, 497: 1854, 499: 1854, 510: 1854, 1854}, - {1855, 1855, 7: 1855, 47: 1855, 469: 1855, 471: 1855, 477: 1855, 1855, 485: 1855, 1855, 490: 1855, 1855, 1855, 1855, 1855, 1855, 497: 1855, 499: 1855, 510: 1855, 1855}, - {1853, 1853, 7: 1853, 47: 1853, 469: 1853, 471: 1853, 477: 1853, 1853, 485: 1853, 1853, 490: 1853, 1853, 1853, 1853, 1853, 1853, 497: 1853, 499: 1853, 510: 1853, 1853}, - {1009, 1009}, - {1021, 1021}, + {1865, 1865, 7: 1865, 47: 1865, 470: 1865, 472: 1865, 478: 1865, 1865, 486: 1865, 1865, 491: 1865, 1865, 1865, 1865, 1865, 497: 1865, 1865, 500: 1865, 511: 1865, 1865}, + {1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 3952, 1268, 1268, 1268, 1268, 1268, 478: 1268, 1268, 1268, 483: 1268, 1268, 1268, 1268, 1268, 491: 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 500: 1268, 503: 1268, 507: 1268, 1268, 1268, 1268, 1268, 1268, 516: 1268, 521: 1268, 542: 1268, 545: 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 583: 1268, 649: 5861, 652: 1268, 1268}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 521: 5862, 660: 3748, 2727, 2728, 2726}, + {1864, 1864, 7: 1864, 47: 1864, 470: 1864, 472: 1864, 478: 1864, 1864, 486: 1864, 1864, 491: 1864, 1864, 1864, 1864, 1864, 497: 1864, 1864, 500: 1864, 511: 1864, 1864}, + {1863, 1863, 7: 1863, 47: 1863, 470: 1863, 472: 1863, 478: 1863, 1863, 486: 1863, 1863, 491: 1863, 1863, 1863, 1863, 1863, 497: 1863, 1863, 500: 1863, 511: 1863, 1863}, // 3360 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 5873, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 5874, 2723, 2724, 2722}, - {70: 5866, 229: 5865}, - {1013, 1013}, - {795: 5864}, - {1012, 1012}, + {1861, 1861, 7: 1861, 47: 1861, 470: 1861, 472: 1861, 478: 1861, 1861, 486: 1861, 1861, 491: 1861, 1861, 1861, 1861, 1861, 497: 1861, 1861, 500: 1861, 511: 1861, 1861}, + {1860, 1860, 7: 1860, 47: 1860, 470: 1860, 472: 1860, 478: 1860, 1860, 486: 1860, 1860, 491: 1860, 1860, 1860, 1860, 1860, 497: 1860, 1860, 500: 1860, 511: 1860, 1860}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 5869, 660: 5868, 2727, 2728, 2726}, + {1858, 1858, 7: 1858, 47: 1858, 470: 1858, 472: 1858, 478: 1858, 1858, 486: 1858, 1858, 491: 1858, 1858, 1858, 1858, 1858, 497: 1858, 1858, 500: 1858, 511: 1858, 1858}, + {1859, 1859, 7: 1859, 47: 1859, 470: 1859, 472: 1859, 478: 1859, 1859, 486: 1859, 1859, 491: 1859, 1859, 1859, 1859, 1859, 497: 1859, 1859, 500: 1859, 511: 1859, 1859}, // 3365 - {1015, 1015, 70: 5871}, - {229: 5867}, - {1014, 1014, 70: 5869, 795: 5868}, - {1017, 1017}, - {795: 5870}, + {1857, 1857, 7: 1857, 47: 1857, 470: 1857, 472: 1857, 478: 1857, 1857, 486: 1857, 1857, 491: 1857, 1857, 1857, 1857, 1857, 497: 1857, 1857, 500: 1857, 511: 1857, 1857}, + {1011, 1011}, + {1023, 1023}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 5885, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 5886, 2727, 2728, 2726}, + {70: 5878, 229: 5877}, // 3370 - {1016, 1016}, - {795: 5872}, - {1018, 1018}, - {1629, 1629, 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 5875, 2723, 2724, 2722}, - {1020, 1020}, + {1015, 1015}, + {796: 5876}, + {1014, 1014}, + {1017, 1017, 70: 5883}, + {229: 5879}, // 3375 + {1016, 1016, 70: 5881, 796: 5880}, {1019, 1019}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 5877, 2723, 2724, 2722}, - {1025, 1025}, - {1029, 1029, 478: 5879}, - {565: 3305, 706: 5881, 1320: 5880}, + {796: 5882}, + {1018, 1018}, + {796: 5884}, // 3380 - {1028, 1028, 7: 5882}, - {1027, 1027, 7: 1027}, - {565: 3305, 706: 5883}, - {1026, 1026, 7: 1026}, - {495: 5885}, + {1020, 1020}, + {1633, 1633, 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 5887, 2727, 2728, 2726}, + {1022, 1022}, + {1021, 1021}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 5889, 2727, 2728, 2726}, // 3385 - {472: 5887, 565: 3305, 706: 5888, 1270: 5886}, - {1032, 1032}, - {1031, 1031}, - {1030, 1030}, - {2: 1342, 1342, 1342, 1342, 1342, 8: 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 48: 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 492: 5890, 1061: 5891}, + {1027, 1027}, + {1031, 1031, 479: 5891}, + {566: 3311, 707: 5893, 1321: 5892}, + {1030, 1030, 7: 5894}, + {1029, 1029, 7: 1029}, // 3390 - {2: 1341, 1341, 1341, 1341, 1341, 8: 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 48: 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3875, 2723, 2724, 2722, 733: 5892}, - {154: 911, 470: 911, 911, 488: 5344, 498: 911, 501: 911, 566: 911, 642: 911, 855: 5893}, - {154: 5901, 470: 5894, 2550, 498: 5902, 501: 5900, 566: 2548, 642: 2544, 705: 5899, 744: 5897, 2545, 2546, 2547, 2556, 752: 2554, 2553, 2552, 3834, 5898, 5896, 972: 5895, 1060: 5903}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 2303, 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 470: 2551, 2550, 498: 2549, 566: 2548, 642: 2544, 659: 4095, 2723, 2724, 2722, 705: 5761, 739: 4096, 744: 3835, 2545, 2546, 2547, 2556, 752: 2554, 2553, 2552, 3834, 3837, 3836, 804: 5004, 997: 5915}, + {566: 3311, 707: 5895}, + {1028, 1028, 7: 1028}, + {497: 5897}, + {473: 5899, 566: 3311, 707: 5900, 1271: 5898}, + {1034, 1034}, // 3395 - {470: 3851, 835: 5912, 970: 5911}, - {1334, 1334, 469: 1334, 478: 1334}, - {1333, 1333, 469: 1333, 477: 804, 1333, 485: 804, 804}, - {1332, 1332, 469: 1332, 478: 1332}, - {1331, 1331, 469: 1331, 477: 803, 1331, 485: 803, 803, 490: 2689, 497: 2690, 499: 2686, 763: 3845, 3846}, + {1033, 1033}, + {1032, 1032}, + {2: 1345, 1345, 1345, 1345, 1345, 8: 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 48: 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 493: 5902, 1062: 5903}, + {2: 1344, 1344, 1344, 1344, 1344, 8: 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 48: 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3883, 2727, 2728, 2726, 734: 5904}, // 3400 - {1317, 1317, 2963, 2808, 2844, 2965, 2735, 1317, 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 1317, 478: 1317, 659: 4095, 2723, 2724, 2722, 739: 5905, 1001: 5906, 1186: 5904}, - {470: 1329}, - {470: 1328, 573: 3850, 907: 3849, 971: 3848}, - {1312, 1312, 478: 1312}, - {1330, 1330, 7: 5909, 469: 1330, 478: 1330}, + {154: 913, 471: 913, 913, 489: 5354, 499: 913, 502: 913, 567: 913, 643: 913, 856: 5905}, + {154: 5913, 471: 5906, 2554, 499: 5914, 502: 5912, 567: 2552, 643: 2548, 706: 5911, 745: 5909, 2549, 2550, 2551, 2560, 753: 2558, 2557, 2556, 3842, 5910, 5908, 973: 5907, 1061: 5915}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 2307, 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 471: 2555, 2554, 499: 2553, 567: 2552, 643: 2548, 660: 4105, 2727, 2728, 2726, 706: 5773, 740: 4106, 745: 3843, 2549, 2550, 2551, 2560, 753: 2558, 2557, 2556, 3842, 3845, 3844, 805: 5014, 998: 5927}, + {471: 3859, 836: 5924, 971: 5923}, + {1337, 1337, 470: 1337, 479: 1337}, // 3405 - {496: 5907}, - {1316, 1316, 7: 1316, 469: 1316, 478: 1316}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3857, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3853, 792: 5908}, - {1318, 1318, 7: 1318, 469: 1318, 478: 1318}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 4095, 2723, 2724, 2722, 739: 5905, 1001: 5910}, + {1336, 1336, 470: 1336, 478: 806, 1336, 486: 806, 806}, + {1335, 1335, 470: 1335, 479: 1335}, + {1334, 1334, 470: 1334, 478: 805, 1334, 486: 805, 805, 491: 2693, 498: 2694, 500: 2690, 764: 3853, 3854}, + {1320, 1320, 2967, 2812, 2848, 2969, 2739, 1320, 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 1320, 479: 1320, 660: 4105, 2727, 2728, 2726, 740: 5917, 1002: 5918, 1187: 5916}, + {471: 1332}, // 3410 - {1315, 1315, 7: 1315, 469: 1315, 478: 1315}, - {1335, 1335, 7: 5913, 469: 1335, 478: 1335}, - {1327, 1327, 7: 1327, 469: 1327, 478: 1327}, - {470: 3851, 835: 5914}, - {1326, 1326, 7: 1326, 469: 1326, 478: 1326}, + {471: 1331, 574: 3858, 908: 3857, 972: 3856}, + {1315, 1315, 479: 1315}, + {1333, 1333, 7: 5921, 470: 1333, 479: 1333}, + {496: 5919}, + {1319, 1319, 7: 1319, 470: 1319, 479: 1319}, // 3415 - {47: 5916}, - {154: 5901, 470: 2551, 2550, 498: 5902, 566: 2548, 642: 2544, 705: 5921, 744: 5919, 2545, 2546, 2547, 2556, 752: 2554, 2553, 2552, 3834, 5920, 5918, 972: 5917}, - {470: 3851, 835: 5912, 970: 5922}, - {1339, 1339, 469: 1339, 478: 1339}, - {1338, 1338, 469: 1338, 477: 804, 1338, 485: 804, 804}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3865, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3861, 793: 5920}, + {1321, 1321, 7: 1321, 470: 1321, 479: 1321}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 4105, 2727, 2728, 2726, 740: 5917, 1002: 5922}, + {1318, 1318, 7: 1318, 470: 1318, 479: 1318}, + {1338, 1338, 7: 5925, 470: 1338, 479: 1338}, // 3420 - {1337, 1337, 469: 1337, 478: 1337}, - {1336, 1336, 469: 1336, 477: 803, 1336, 485: 803, 803, 490: 2689, 497: 2690, 499: 2686, 763: 3845, 3846}, - {1340, 1340, 7: 5913, 469: 1340, 478: 1340}, - {2: 1046, 1046, 1046, 1046, 1046, 8: 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 48: 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 487: 1046, 492: 1046, 749: 5282, 5281, 5280, 833: 5283, 882: 5924}, - {2: 1840, 1840, 1840, 1840, 1840, 8: 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 48: 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 487: 4142, 492: 1840, 850: 5925}, + {1330, 1330, 7: 1330, 470: 1330, 479: 1330}, + {471: 3859, 836: 5926}, + {1329, 1329, 7: 1329, 470: 1329, 479: 1329}, + {47: 5928}, + {154: 5913, 471: 2555, 2554, 499: 5914, 567: 2552, 643: 2548, 706: 5933, 745: 5931, 2549, 2550, 2551, 2560, 753: 2558, 2557, 2556, 3842, 5932, 5930, 973: 5929}, // 3425 - {2: 1342, 1342, 1342, 1342, 1342, 8: 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 48: 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 492: 5890, 1061: 5926}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3875, 2723, 2724, 2722, 733: 5927}, - {154: 911, 470: 911, 911, 488: 5344, 498: 911, 501: 911, 566: 911, 642: 911, 855: 5928}, - {154: 5901, 470: 5894, 2550, 498: 5902, 501: 5900, 566: 2548, 642: 2544, 705: 5899, 744: 5897, 2545, 2546, 2547, 2556, 752: 2554, 2553, 2552, 3834, 5898, 5896, 972: 5895, 1060: 5929}, - {1314, 1314, 469: 5931, 478: 1314, 1248: 5930}, + {471: 3859, 836: 5924, 971: 5934}, + {1342, 1342, 470: 1342, 479: 1342}, + {1341, 1341, 470: 1341, 478: 806, 1341, 486: 806, 806}, + {1340, 1340, 470: 1340, 479: 1340}, + {1339, 1339, 470: 1339, 478: 805, 1339, 486: 805, 805, 491: 2693, 498: 2694, 500: 2690, 764: 3853, 3854}, // 3430 - {1343, 1343, 478: 1343}, - {198: 5932}, - {570: 5933}, - {650: 5934}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 4095, 2723, 2724, 2722, 739: 5398, 887: 5399, 920: 5935}, + {1343, 1343, 7: 5925, 470: 1343, 479: 1343}, + {2: 1048, 1048, 1048, 1048, 1048, 8: 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 48: 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 488: 1048, 493: 1048, 750: 5292, 5291, 5290, 834: 5293, 883: 5936}, + {2: 1844, 1844, 1844, 1844, 1844, 8: 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 48: 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 488: 4152, 493: 1844, 851: 5937}, + {2: 1345, 1345, 1345, 1345, 1345, 8: 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 48: 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 493: 5902, 1062: 5938}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3883, 2727, 2728, 2726, 734: 5939}, // 3435 - {1313, 1313, 7: 5401, 478: 1313}, - {1347, 1347, 470: 5944, 648: 1816}, - {1348, 1348}, - {648: 5939}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 5940, 2723, 2724, 2722}, + {154: 913, 471: 913, 913, 489: 5354, 499: 913, 502: 913, 567: 913, 643: 913, 856: 5940}, + {154: 5913, 471: 5906, 2554, 499: 5914, 502: 5912, 567: 2552, 643: 2548, 706: 5911, 745: 5909, 2549, 2550, 2551, 2560, 753: 2558, 2557, 2556, 3842, 5910, 5908, 973: 5907, 1061: 5941}, + {1317, 1317, 470: 5943, 479: 1317, 1249: 5942}, + {1346, 1346, 479: 1346}, + {198: 5944}, // 3440 - {1346, 1346, 470: 5941}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 1903, 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3544, 774: 3706, 821: 5942}, - {47: 5943}, - {1344, 1344}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 1903, 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 3544, 774: 3706, 821: 5945}, + {571: 5945}, + {651: 5946}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 4105, 2727, 2728, 2726, 740: 5408, 888: 5409, 921: 5947}, + {1316, 1316, 7: 5411, 479: 1316}, + {1350, 1350, 471: 5956, 649: 1820}, // 3445 - {47: 5946}, - {1345, 1345}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 6106, 2723, 2724, 2722}, - {595, 595, 494: 6103, 515: 6102, 1285: 6101}, - {16: 6089, 99: 6086, 132: 6091, 164: 6090, 189: 6088, 566: 6085, 582: 6087}, + {1351, 1351}, + {649: 5951}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 5952, 2727, 2728, 2726}, + {1349, 1349, 471: 5953}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 1907, 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3550, 775: 3714, 823: 5954}, // 3450 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 6074, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3875, 2723, 2724, 2722, 733: 6075}, - {670, 670, 491: 6069}, - {123: 6068}, - {98: 3898, 107: 3897, 110: 6063, 209: 6062, 829: 6064}, - {666, 666}, + {47: 5955}, + {1347, 1347}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 1907, 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 3550, 775: 3714, 823: 5957}, + {47: 5958}, + {1348, 1348}, // 3455 - {658, 658, 180: 6044, 224: 6045, 234: 6046, 237: 6043, 259: 6048, 269: 6047, 283: 6050, 288: 6049, 490: 658, 658, 497: 658, 647: 6051, 1124: 6042, 1288: 6041, 6040}, - {664, 664}, - {663, 663}, - {597, 597, 262: 6031, 491: 6030, 494: 597, 515: 597}, - {495: 641, 540: 641}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 6119, 2727, 2728, 2726}, + {595, 595, 495: 6116, 516: 6115, 1286: 6114}, + {16: 6102, 99: 6099, 132: 6104, 164: 6103, 189: 6101, 567: 6098, 581: 6100}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 6087, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3883, 2727, 2728, 2726, 734: 6088}, + {671, 671, 492: 6082}, // 3460 - {495: 640, 540: 640}, - {495: 639, 540: 639}, - {636, 636, 494: 636, 515: 636}, - {635, 635, 494: 635, 515: 635}, - {634, 634, 494: 634, 515: 634}, + {124: 6081}, + {98: 3906, 107: 3905, 122: 6076, 209: 6075, 830: 6077}, + {667, 667}, + {659, 659, 180: 6057, 224: 6058, 234: 6059, 237: 6056, 259: 6061, 269: 6060, 283: 6063, 288: 6062, 491: 659, 659, 498: 659, 648: 6064, 1125: 6055, 1289: 6054, 6053}, + {665, 665}, // 3465 - {633, 633, 494: 633, 515: 633}, - {110: 6028}, - {495: 5998, 540: 5999, 800: 6023}, - {98: 585, 107: 585, 203: 5996, 1085: 6017}, - {470: 6012}, + {664, 664}, + {597, 597, 262: 6044, 492: 6043, 495: 597, 516: 597}, + {497: 642, 542: 642}, + {497: 641, 542: 641}, + {497: 640, 542: 640}, // 3470 - {624, 624, 494: 624, 515: 624}, - {622, 622, 494: 622, 515: 622}, - {123: 6010, 139: 6011, 194: 6009}, - {618, 618, 494: 618, 515: 618}, - {583, 583, 494: 583, 5998, 515: 583, 540: 5999, 800: 6001, 837: 6008}, + {637, 637, 495: 637, 516: 637}, + {636, 636, 495: 636, 516: 636}, + {635, 635, 495: 635, 516: 635}, + {634, 634, 495: 634, 516: 634}, + {122: 6041}, // 3475 - {123: 6007}, - {123: 6006}, - {123: 6005}, - {123: 6004}, - {123: 6003}, + {497: 6011, 542: 6012, 802: 6036}, + {98: 585, 107: 585, 203: 6009, 1086: 6030}, + {471: 6025}, + {625, 625, 495: 625, 516: 625}, + {623, 623, 495: 623, 516: 623}, // 3480 - {583, 583, 494: 583, 5998, 515: 583, 540: 5999, 800: 6001, 837: 6000}, - {610, 610, 494: 610, 515: 610}, - {609, 609, 494: 609, 515: 609}, - {608, 608, 494: 608, 515: 608}, - {607, 607, 494: 607, 515: 607}, + {124: 6023, 139: 6024, 194: 6022}, + {619, 619, 495: 619, 516: 619}, + {583, 583, 495: 583, 497: 6011, 516: 583, 542: 6012, 802: 6014, 838: 6021}, + {124: 6020}, + {124: 6019}, // 3485 - {606, 606, 494: 606, 515: 606}, - {605, 605, 494: 605, 515: 605}, - {604, 604, 494: 604, 515: 604}, - {603, 603, 494: 603, 515: 603}, - {602, 602, 494: 602, 515: 602}, + {124: 6018}, + {124: 6017}, + {124: 6016}, + {583, 583, 495: 583, 497: 6011, 516: 583, 542: 6012, 802: 6014, 838: 6013}, + {611, 611, 495: 611, 516: 611}, // 3490 - {123: 5997}, - {600, 600, 494: 600, 515: 600}, - {599, 599, 494: 599, 515: 599}, - {598, 598, 494: 598, 515: 598}, - {123: 591, 139: 591, 194: 591}, + {610, 610, 495: 610, 516: 610}, + {609, 609, 495: 609, 516: 609}, + {608, 608, 495: 608, 516: 608}, + {607, 607, 495: 607, 516: 607}, + {606, 606, 495: 606, 516: 606}, // 3495 - {123: 590, 139: 590, 156: 590, 194: 590}, - {98: 584, 107: 584, 110: 584, 209: 584}, - {601, 601, 494: 601, 515: 601}, - {2: 638, 638, 638, 638, 638, 8: 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 48: 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638}, - {2: 637, 637, 637, 637, 637, 8: 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 48: 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637}, + {605, 605, 495: 605, 516: 605}, + {604, 604, 495: 604, 516: 604}, + {603, 603, 495: 603, 516: 603}, + {602, 602, 495: 602, 516: 602}, + {124: 6010}, // 3500 - {611, 611, 494: 611, 515: 611}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 5275, 2723, 2724, 2722, 811: 6002}, - {582, 582, 494: 582, 515: 582}, - {612, 612, 494: 612, 515: 612}, - {613, 613, 494: 613, 515: 613}, + {600, 600, 495: 600, 516: 600}, + {599, 599, 495: 599, 516: 599}, + {598, 598, 495: 598, 516: 598}, + {124: 591, 139: 591, 194: 591}, + {124: 590, 139: 590, 156: 590, 194: 590}, // 3505 - {614, 614, 494: 614, 515: 614}, - {615, 615, 494: 615, 515: 615}, - {616, 616, 494: 616, 515: 616}, - {617, 617, 494: 617, 515: 617}, - {621, 621, 494: 621, 515: 621}, + {98: 584, 107: 584, 122: 584, 209: 584}, + {601, 601, 495: 601, 516: 601}, + {2: 639, 639, 639, 639, 639, 8: 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 48: 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639}, + {2: 638, 638, 638, 638, 638, 8: 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 48: 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638}, + {612, 612, 495: 612, 516: 612}, // 3510 - {620, 620, 494: 620, 515: 620}, - {619, 619, 494: 619, 515: 619}, - {520: 6013}, - {47: 6014}, - {176: 6016, 302: 6015}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 5285, 2727, 2728, 2726, 812: 6015}, + {582, 582, 495: 582, 516: 582}, + {613, 613, 495: 613, 516: 613}, + {614, 614, 495: 614, 516: 614}, + {615, 615, 495: 615, 516: 615}, // 3515 - {625, 625, 494: 625, 515: 625}, - {623, 623, 494: 623, 515: 623}, - {98: 3898, 107: 3897, 829: 6018}, - {495: 5998, 540: 5999, 800: 6020, 1126: 6019}, - {583, 583, 494: 583, 5998, 515: 583, 540: 5999, 800: 6001, 837: 6022}, + {616, 616, 495: 616, 516: 616}, + {617, 617, 495: 617, 516: 617}, + {618, 618, 495: 618, 516: 618}, + {622, 622, 495: 622, 516: 622}, + {621, 621, 495: 621, 516: 621}, // 3520 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3875, 2723, 2724, 2722, 733: 6021}, - {581, 581, 494: 581, 581, 515: 581, 540: 581}, - {626, 626, 494: 626, 515: 626}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 6024, 2723, 2724, 2722, 733: 6025}, - {1044, 1044, 494: 1044, 5998, 515: 1044, 540: 5999, 648: 3880, 800: 6026}, + {620, 620, 495: 620, 516: 620}, + {521: 6026}, + {47: 6027}, + {176: 6029, 302: 6028}, + {626, 626, 495: 626, 516: 626}, // 3525 - {629, 629, 494: 629, 515: 629}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 6027, 2723, 2724, 2722}, - {628, 628, 494: 628, 515: 628}, - {583, 583, 494: 583, 5998, 515: 583, 540: 5999, 800: 6001, 837: 6029}, - {631, 631, 494: 631, 515: 631}, + {624, 624, 495: 624, 516: 624}, + {98: 3906, 107: 3905, 830: 6031}, + {497: 6011, 542: 6012, 802: 6033, 1127: 6032}, + {583, 583, 495: 583, 497: 6011, 516: 583, 542: 6012, 802: 6014, 838: 6035}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3883, 2727, 2728, 2726, 734: 6034}, // 3530 - {566: 6035, 582: 6032, 846: 6034, 1286: 6033}, - {596, 596, 494: 596, 515: 596}, - {2: 2052, 2052, 2052, 2052, 2052, 8: 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 48: 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 476: 2052, 479: 2052, 501: 2052, 503: 2052, 520: 2052, 563: 2052, 643: 2052}, - {662, 662}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 5275, 2723, 2724, 2722, 811: 6039}, + {581, 581, 495: 581, 497: 581, 516: 581, 542: 581}, + {627, 627, 495: 627, 516: 627}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 6037, 2727, 2728, 2726, 734: 6038}, + {1046, 1046, 495: 1046, 497: 6011, 516: 1046, 542: 6012, 649: 3888, 802: 6039}, + {630, 630, 495: 630, 516: 630}, // 3535 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3875, 2723, 2724, 2722, 733: 6036}, - {660, 660, 488: 6037}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 6038, 2723, 2724, 2722}, - {659, 659}, - {661, 661}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 6040, 2727, 2728, 2726}, + {629, 629, 495: 629, 516: 629}, + {583, 583, 495: 583, 497: 6011, 516: 583, 542: 6012, 802: 6014, 838: 6042}, + {632, 632, 495: 632, 516: 632}, + {567: 6048, 581: 6045, 847: 6047, 1287: 6046}, // 3540 - {645, 645, 490: 645, 6058, 497: 645, 1287: 6057}, - {657, 657, 7: 6055, 490: 657, 657, 497: 657}, - {656, 656, 7: 656, 490: 656, 656, 497: 656}, - {654, 654, 7: 654, 490: 654, 654, 497: 654}, - {653, 653, 7: 653, 490: 653, 653, 497: 653}, + {596, 596, 495: 596, 516: 596}, + {2: 2056, 2056, 2056, 2056, 2056, 8: 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 48: 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 477: 2056, 480: 2056, 502: 2056, 504: 2056, 521: 2056, 564: 2056, 644: 2056}, + {663, 663}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 5285, 2727, 2728, 2726, 812: 6052}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3883, 2727, 2728, 2726, 734: 6049}, // 3545 - {348: 6054}, - {389: 6053}, - {338: 6052}, - {649, 649, 7: 649, 490: 649, 649, 497: 649}, - {648, 648, 7: 648, 490: 648, 648, 497: 648}, + {661, 661, 489: 6050}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 6051, 2727, 2728, 2726}, + {660, 660}, + {662, 662}, + {646, 646, 491: 646, 6071, 498: 646, 1288: 6070}, // 3550 - {647, 647, 7: 647, 490: 647, 647, 497: 647}, - {646, 646, 7: 646, 490: 646, 646, 497: 646}, - {650, 650, 7: 650, 490: 650, 650, 497: 650}, - {651, 651, 7: 651, 490: 651, 651, 497: 651}, - {652, 652, 7: 652, 490: 652, 652, 497: 652}, + {658, 658, 7: 6068, 491: 658, 658, 498: 658}, + {657, 657, 7: 657, 491: 657, 657, 498: 657}, + {655, 655, 7: 655, 491: 655, 655, 498: 655}, + {654, 654, 7: 654, 491: 654, 654, 498: 654}, + {348: 6067}, // 3555 - {180: 6044, 224: 6045, 234: 6046, 237: 6043, 259: 6048, 269: 6047, 283: 6050, 288: 6049, 647: 6051, 1124: 6056}, - {655, 655, 7: 655, 490: 655, 655, 497: 655}, - {858, 858, 490: 2689, 497: 2690, 764: 2691, 824: 6061}, - {137: 6059}, - {505: 2697, 729: 4005, 760: 6060}, + {390: 6066}, + {338: 6065}, + {650, 650, 7: 650, 491: 650, 650, 498: 650}, + {649, 649, 7: 649, 491: 649, 649, 498: 649}, + {648, 648, 7: 648, 491: 648, 648, 498: 648}, // 3560 - {644, 644, 490: 644, 497: 644}, - {665, 665}, - {667, 667}, - {583, 583, 494: 583, 5998, 515: 583, 540: 5999, 800: 6001, 837: 6067}, - {495: 5998, 540: 5999, 800: 6020, 1126: 6065}, + {647, 647, 7: 647, 491: 647, 647, 498: 647}, + {651, 651, 7: 651, 491: 651, 651, 498: 651}, + {652, 652, 7: 652, 491: 652, 652, 498: 652}, + {653, 653, 7: 653, 491: 653, 653, 498: 653}, + {180: 6057, 224: 6058, 234: 6059, 237: 6056, 259: 6061, 269: 6060, 283: 6063, 288: 6062, 648: 6064, 1125: 6069}, // 3565 - {583, 583, 494: 583, 5998, 515: 583, 540: 5999, 800: 6001, 837: 6066}, - {627, 627, 494: 627, 515: 627}, - {632, 632, 494: 632, 515: 632}, - {668, 668}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 3446, 567: 5176, 659: 3447, 2723, 2724, 2722, 734: 5175, 773: 6070}, + {656, 656, 7: 656, 491: 656, 656, 498: 656}, + {860, 860, 491: 2693, 498: 2694, 765: 2695, 826: 6074}, + {137: 6072}, + {506: 2701, 730: 4015, 761: 6073}, + {645, 645, 491: 645, 498: 645}, // 3570 - {643, 643, 478: 6072, 1321: 6071}, - {669, 669}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 5602, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 5607, 659: 3447, 2723, 2724, 2722, 734: 5130, 796: 5609, 816: 5610, 5608, 857: 6073}, - {642, 642, 7: 5611}, - {583, 583, 86: 1719, 159: 1719, 488: 1719, 494: 583, 5998, 515: 583, 540: 5999, 645: 1719, 648: 1719, 800: 6001, 837: 6084}, + {666, 666}, + {668, 668}, + {583, 583, 495: 583, 497: 6011, 516: 583, 542: 6012, 802: 6014, 838: 6080}, + {497: 6011, 542: 6012, 802: 6033, 1127: 6078}, + {583, 583, 495: 583, 497: 6011, 516: 583, 542: 6012, 802: 6014, 838: 6079}, // 3575 - {86: 911, 159: 6077, 488: 5344, 645: 911, 855: 6076}, - {86: 6078, 645: 6079}, - {672, 672}, - {245, 245, 494: 2683, 786: 2684, 6083}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 6080, 2723, 2724, 2722}, + {628, 628, 495: 628, 516: 628}, + {633, 633, 495: 633, 516: 633}, + {669, 669}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 3452, 568: 5186, 660: 3453, 2727, 2728, 2726, 735: 5185, 774: 6083}, + {644, 644, 479: 6085, 1322: 6084}, // 3580 - {86: 6081}, - {245, 245, 494: 2683, 786: 2684, 6082}, - {671, 671}, - {673, 673}, - {630, 630, 494: 630, 515: 630}, + {670, 670}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 5613, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 5618, 660: 3453, 2727, 2728, 2726, 735: 5140, 797: 5620, 817: 5621, 5619, 858: 6086}, + {643, 643, 7: 5622}, + {583, 583, 86: 1723, 159: 1723, 489: 1723, 495: 583, 497: 6011, 516: 583, 542: 6012, 646: 1723, 649: 1723, 802: 6014, 838: 6097}, + {86: 913, 159: 6090, 489: 5354, 646: 913, 856: 6089}, // 3585 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3875, 2723, 2724, 2722, 733: 6100}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3875, 2723, 2724, 2722, 733: 6099}, - {2: 1842, 1842, 1842, 1842, 1842, 8: 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 48: 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 563: 4772, 781: 6097}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3875, 2723, 2724, 2722, 733: 6096}, - {160: 6094}, + {86: 6091, 646: 6092}, + {673, 673}, + {245, 245, 495: 2687, 787: 2688, 6096}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 6093, 2727, 2728, 2726}, + {86: 6094}, // 3590 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 3446, 567: 5176, 659: 3447, 2723, 2724, 2722, 734: 5175, 773: 6093}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 6092, 2723, 2724, 2722}, + {245, 245, 495: 2687, 787: 2688, 6095}, + {672, 672}, {674, 674}, - {675, 675}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 4932, 2723, 2724, 2722, 881: 6095}, + {631, 631, 495: 631, 516: 631}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3883, 2727, 2728, 2726, 734: 6113}, // 3595 + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3883, 2727, 2728, 2726, 734: 6112}, + {2: 1846, 1846, 1846, 1846, 1846, 8: 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 48: 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 564: 4782, 782: 6110}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3883, 2727, 2728, 2726, 734: 6109}, + {160: 6107}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 3452, 568: 5186, 660: 3453, 2727, 2728, 2726, 735: 5185, 774: 6106}, + // 3600 + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 6105, 2727, 2728, 2726}, + {675, 675}, {676, 676}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 4942, 2727, 2728, 2726, 882: 6108}, {677, 677}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 5275, 2723, 2724, 2722, 811: 6098}, + // 3605 {678, 678}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 5285, 2727, 2728, 2726, 812: 6111}, {679, 679}, - // 3600 {680, 680}, {681, 681}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 3305, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 6105, 3210, 3291, 3209, 3206}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 2801, 2749, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 2830, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 2727, 2744, 2889, 2981, 2835, 2762, 2779, 2909, 2992, 2822, 2791, 2902, 2903, 2898, 2856, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 2837, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 2721, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 2841, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 2760, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 2826, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 2827, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 2897, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 2785, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 2712, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 2843, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 2713, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3103, 2839, 3104, 3105, 2738, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3118, 3119, 3169, 3168, 3018, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 2879, 2896, 3019, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3136, 3137, 3138, 2892, 3089, 3148, 3149, 3159, 3144, 3145, 3146, 3178, 2838, 470: 3217, 472: 3197, 3215, 2716, 476: 3225, 480: 3230, 3234, 3213, 3214, 3252, 489: 3188, 498: 3226, 503: 3250, 3233, 3192, 541: 3221, 563: 3228, 3251, 2714, 567: 3235, 3187, 3189, 571: 3191, 3190, 3218, 3195, 3208, 3220, 3196, 3229, 582: 3227, 3219, 3224, 3231, 3240, 3293, 3241, 3242, 3194, 592: 3271, 3211, 3212, 3266, 3267, 3268, 3269, 3270, 3222, 3248, 3253, 3263, 3264, 3257, 3272, 3273, 3274, 3258, 3276, 3277, 3259, 3275, 3254, 3262, 3260, 3246, 3278, 3279, 3223, 622: 3283, 3236, 3237, 3239, 3282, 3288, 3287, 3289, 3286, 3290, 3285, 3284, 3281, 3232, 3280, 3238, 3243, 3244, 644: 2717, 659: 3201, 2723, 2724, 2722, 705: 3216, 3292, 3202, 3207, 3193, 3265, 3205, 3203, 3204, 3245, 3256, 3255, 3249, 3247, 3261, 3200, 3210, 3291, 3209, 3206, 2720, 2719, 2718, 6104}, - {593, 593, 502: 3302, 506: 3300, 3301, 3299, 3297, 730: 3298, 3296}, - // 3605 - {594, 594, 479: 3306, 580: 3307}, - {1939, 1939, 176: 6108, 566: 1939, 1251: 6107}, - {559, 559, 566: 6110, 964: 6109}, - {1938, 1938, 566: 1938}, - {1944, 1944}, // 3610 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3875, 2723, 2724, 2722, 733: 3876, 791: 6111}, - {558, 558, 7: 3878}, - {2: 1941, 1941, 1941, 1941, 1941, 8: 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 48: 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 563: 6114, 1218: 6113}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 6117, 2723, 2724, 2722}, - {473: 4041, 4040, 806: 6115}, + {682, 682}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 3311, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3310, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 6118, 3216, 3296, 3215, 3212}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 2805, 2753, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 2834, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 2839, 2731, 2748, 2766, 2893, 2985, 2783, 2913, 2996, 2795, 2906, 2907, 2902, 2860, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 2841, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 2725, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 2845, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 2764, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 2830, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 2831, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 2901, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 2789, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 2716, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 2847, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 2717, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3108, 2843, 3109, 3110, 2742, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3123, 3124, 3174, 3173, 3022, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 2883, 2900, 3023, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3141, 3142, 3143, 2896, 3094, 3153, 3154, 3164, 3149, 3150, 3151, 3183, 2842, 471: 3223, 473: 3202, 3221, 2720, 477: 3231, 481: 3235, 3239, 3220, 3219, 3257, 490: 3193, 499: 3232, 504: 3255, 3238, 3197, 541: 3227, 564: 3234, 3256, 2718, 568: 3240, 3192, 3194, 572: 3196, 3195, 3224, 3200, 3214, 3226, 3201, 3205, 581: 3233, 3225, 585: 3230, 3236, 3245, 3298, 3246, 3247, 3199, 3276, 3217, 3218, 3271, 3272, 3273, 3274, 3275, 3228, 3253, 3258, 3268, 3269, 3262, 3277, 3278, 3279, 3263, 3281, 3282, 3264, 3280, 3259, 3267, 3265, 3251, 3283, 3284, 3229, 3288, 3241, 3242, 3244, 3287, 3293, 3292, 3294, 3291, 3295, 3290, 3289, 3286, 3237, 3285, 637: 3243, 3248, 3249, 645: 2721, 660: 3207, 2727, 2728, 2726, 706: 3222, 3297, 3208, 3213, 3198, 3270, 3211, 3209, 3210, 3250, 3261, 3260, 3254, 3252, 3266, 3206, 3216, 3296, 3215, 3212, 2724, 2723, 2722, 6117}, + {593, 593, 503: 3307, 507: 3305, 3306, 3304, 3302, 731: 3303, 3301}, + {594, 594, 480: 3312, 583: 3313}, // 3615 - {187: 6116}, - {2: 1940, 1940, 1940, 1940, 1940, 8: 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 48: 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940}, - {1947, 1947}, - {2: 1943, 1943, 1943, 1943, 1943, 8: 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 48: 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 563: 6120, 1219: 6119}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 6122, 2723, 2724, 2722}, - // 3620 - {187: 6121}, - {2: 1942, 1942, 1942, 1942, 1942, 8: 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 48: 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942}, + {1943, 1943, 176: 6121, 567: 1943, 1252: 6120}, + {559, 559, 567: 6123, 965: 6122}, + {1942, 1942, 567: 1942}, {1948, 1948}, - {505: 2697, 729: 6124}, - {1950, 1950}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3883, 2727, 2728, 2726, 734: 3884, 792: 6124}, + // 3620 + {558, 558, 7: 3886}, + {2: 1945, 1945, 1945, 1945, 1945, 8: 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 48: 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 564: 6127, 1219: 6126}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 6130, 2727, 2728, 2726}, + {474: 4051, 4050, 807: 6128}, + {187: 6129}, // 3625 - {495: 6134}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 520: 6129, 659: 5275, 2723, 2724, 2722, 811: 6131, 1195: 6130}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3875, 2723, 2724, 2722, 733: 3876, 791: 6128}, - {7: 3878, 495: 1997, 646: 1997}, - {495: 1999, 646: 1999}, + {2: 1944, 1944, 1944, 1944, 1944, 8: 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 48: 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944}, + {1951, 1951}, + {2: 1947, 1947, 1947, 1947, 1947, 8: 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 48: 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 564: 6133, 1220: 6132}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 6135, 2727, 2728, 2726}, + {187: 6134}, // 3630 - {7: 6132, 495: 1998, 646: 1998}, - {7: 1996, 495: 1996, 646: 1996}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 5275, 2723, 2724, 2722, 811: 6133}, - {7: 1995, 495: 1995, 646: 1995}, - {472: 6135}, + {2: 1946, 1946, 1946, 1946, 1946, 8: 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 48: 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946}, + {1952, 1952}, + {506: 2701, 730: 6137}, + {1954, 1954}, + {497: 6147}, // 3635 - {1994, 1994, 15: 1994, 48: 1994, 50: 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 469: 1994, 649: 1994, 893: 6136}, - {2000, 2000, 15: 6163, 48: 6139, 50: 6159, 6152, 6142, 6138, 6146, 6150, 6162, 6145, 6151, 6149, 6147, 6160, 6153, 6141, 6161, 6140, 6143, 6144, 6148, 469: 6154, 649: 6164, 889: 6156, 6155, 6158, 6137, 894: 6157}, - {1993, 1993, 15: 1993, 48: 1993, 50: 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 469: 1993, 649: 1993}, - {496: 1992, 505: 1992}, - {496: 1991, 505: 1991}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 521: 6142, 660: 5285, 2727, 2728, 2726, 812: 6144, 1196: 6143}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3883, 2727, 2728, 2726, 734: 3884, 792: 6141}, + {7: 3886, 497: 2001, 647: 2001}, + {497: 2003, 647: 2003}, + {7: 6145, 497: 2002, 647: 2002}, // 3640 - {496: 1990, 505: 1990, 568: 1990, 1990}, - {496: 1989, 505: 1989, 568: 1989, 1989}, - {496: 1988, 505: 1988, 568: 1988, 1988}, - {496: 1987, 505: 1987, 568: 1987, 1987}, - {496: 1986, 505: 1986, 568: 1986, 1986}, + {7: 2000, 497: 2000, 647: 2000}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 5285, 2727, 2728, 2726, 812: 6146}, + {7: 1999, 497: 1999, 647: 1999}, + {473: 6148}, + {1998, 1998, 15: 1998, 48: 1998, 50: 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 470: 1998, 650: 1998, 894: 6149}, // 3645 - {496: 1985, 505: 1985, 568: 1985, 1985}, - {496: 1984, 505: 1984, 568: 1984, 1984}, - {496: 1983, 505: 1983, 568: 1983, 1983}, - {472: 1982, 496: 1982}, - {472: 1981, 496: 1981}, + {2004, 2004, 15: 6176, 48: 6152, 50: 6172, 6165, 6155, 6151, 6159, 6163, 6175, 6158, 6164, 6162, 6160, 6173, 6166, 6154, 6174, 6153, 6156, 6157, 6161, 470: 6167, 650: 6177, 890: 6169, 6168, 6171, 6150, 895: 6170}, + {1997, 1997, 15: 1997, 48: 1997, 50: 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 470: 1997, 650: 1997}, + {496: 1996, 506: 1996}, + {496: 1995, 506: 1995}, + {496: 1994, 506: 1994, 569: 1994, 1994}, // 3650 - {472: 1980, 496: 1980}, - {472: 1979, 496: 1979}, - {2: 1978, 1978, 1978, 1978, 1978, 8: 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 48: 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 472: 1978, 487: 1978, 496: 1978, 504: 1978}, - {2: 1977, 1977, 1977, 1977, 1977, 8: 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 48: 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 472: 1977, 487: 1977, 496: 1977, 504: 1977}, - {198: 6204}, + {496: 1993, 506: 1993, 569: 1993, 1993}, + {496: 1992, 506: 1992, 569: 1992, 1992}, + {496: 1991, 506: 1991, 569: 1991, 1991}, + {496: 1990, 506: 1990, 569: 1990, 1990}, + {496: 1989, 506: 1989, 569: 1989, 1989}, // 3655 - {496: 4230, 505: 2031, 732: 6202}, - {496: 4230, 505: 2031, 568: 2031, 2031, 732: 6200}, - {472: 2031, 496: 4230, 732: 6198}, - {2: 2031, 2031, 2031, 2031, 2031, 8: 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 48: 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 472: 2031, 487: 2031, 496: 4230, 504: 2031, 732: 6193}, - {472: 2031, 496: 4230, 505: 2031, 732: 6188}, + {496: 1988, 506: 1988, 569: 1988, 1988}, + {496: 1987, 506: 1987, 569: 1987, 1987}, + {473: 1986, 496: 1986}, + {473: 1985, 496: 1985}, + {473: 1984, 496: 1984}, // 3660 - {472: 2031, 496: 4230, 505: 2031, 732: 6185}, - {496: 4230, 505: 2031, 732: 6180}, - {98: 2031, 107: 2031, 496: 4230, 505: 2031, 732: 6177}, - {181: 2031, 2031, 185: 2031, 496: 4230, 505: 2031, 568: 2031, 2031, 732: 6174}, - {181: 2031, 2031, 185: 2031, 496: 4230, 505: 2031, 568: 2031, 2031, 732: 6165}, + {473: 1983, 496: 1983}, + {2: 1982, 1982, 1982, 1982, 1982, 8: 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 48: 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 473: 1982, 488: 1982, 496: 1982, 505: 1982}, + {2: 1981, 1981, 1981, 1981, 1981, 8: 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 48: 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 473: 1981, 488: 1981, 496: 1981, 505: 1981}, + {198: 6217}, + {496: 4240, 506: 2035, 733: 6215}, // 3665 - {181: 6171, 6172, 185: 6173, 505: 2697, 568: 6169, 6170, 729: 6168, 922: 6166, 1088: 6167}, - {1961, 1961, 15: 1961, 48: 1961, 50: 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 469: 1961, 649: 1961}, - {1960, 1960, 15: 1960, 48: 1960, 50: 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 469: 1960, 649: 1960}, - {1956, 1956, 15: 1956, 48: 1956, 50: 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 469: 1956, 649: 1956}, - {1955, 1955, 15: 1955, 48: 1955, 50: 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 469: 1955, 649: 1955}, + {496: 4240, 506: 2035, 569: 2035, 2035, 733: 6213}, + {473: 2035, 496: 4240, 733: 6211}, + {2: 2035, 2035, 2035, 2035, 2035, 8: 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 48: 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 473: 2035, 488: 2035, 496: 4240, 505: 2035, 733: 6206}, + {473: 2035, 496: 4240, 506: 2035, 733: 6201}, + {473: 2035, 496: 4240, 506: 2035, 733: 6198}, // 3670 - {1954, 1954, 15: 1954, 48: 1954, 50: 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 469: 1954, 649: 1954}, - {1953, 1953, 15: 1953, 48: 1953, 50: 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 469: 1953, 649: 1953}, - {1952, 1952, 15: 1952, 48: 1952, 50: 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 469: 1952, 649: 1952}, - {1951, 1951, 15: 1951, 48: 1951, 50: 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 469: 1951, 649: 1951}, - {181: 6171, 6172, 185: 6173, 505: 2697, 568: 6169, 6170, 729: 6168, 922: 6175, 1088: 6176}, + {496: 4240, 506: 2035, 733: 6193}, + {98: 2035, 107: 2035, 496: 4240, 506: 2035, 733: 6190}, + {181: 2035, 2035, 185: 2035, 496: 4240, 506: 2035, 569: 2035, 2035, 733: 6187}, + {181: 2035, 2035, 185: 2035, 496: 4240, 506: 2035, 569: 2035, 2035, 733: 6178}, + {181: 6184, 6185, 185: 6186, 506: 2701, 569: 6182, 6183, 730: 6181, 923: 6179, 1089: 6180}, // 3675 - {1963, 1963, 15: 1963, 48: 1963, 50: 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 469: 1963, 649: 1963}, - {1962, 1962, 15: 1962, 48: 1962, 50: 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 469: 1962, 649: 1962}, - {98: 3898, 107: 3897, 505: 2697, 729: 2696, 740: 6179, 829: 6178}, - {1965, 1965, 15: 1965, 48: 1965, 50: 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 469: 1965, 649: 1965}, - {1964, 1964, 15: 1964, 48: 1964, 50: 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 469: 1964, 649: 1964}, + {1965, 1965, 15: 1965, 48: 1965, 50: 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 470: 1965, 650: 1965}, + {1964, 1964, 15: 1964, 48: 1964, 50: 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 470: 1964, 650: 1964}, + {1960, 1960, 15: 1960, 48: 1960, 50: 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 470: 1960, 650: 1960}, + {1959, 1959, 15: 1959, 48: 1959, 50: 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 470: 1959, 650: 1959}, + {1958, 1958, 15: 1958, 48: 1958, 50: 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 470: 1958, 650: 1958}, // 3680 - {505: 2697, 729: 2696, 740: 6181}, - {204: 6182}, - {553: 6183}, - {108: 6184}, - {1966, 1966, 15: 1966, 48: 1966, 50: 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 469: 1966, 649: 1966}, + {1957, 1957, 15: 1957, 48: 1957, 50: 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 470: 1957, 650: 1957}, + {1956, 1956, 15: 1956, 48: 1956, 50: 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 470: 1956, 650: 1956}, + {1955, 1955, 15: 1955, 48: 1955, 50: 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 470: 1955, 650: 1955}, + {181: 6184, 6185, 185: 6186, 506: 2701, 569: 6182, 6183, 730: 6181, 923: 6188, 1089: 6189}, + {1967, 1967, 15: 1967, 48: 1967, 50: 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 470: 1967, 650: 1967}, // 3685 - {472: 6186, 505: 2697, 729: 2696, 740: 6187}, - {1968, 1968, 15: 1968, 48: 1968, 50: 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 469: 1968, 649: 1968}, - {1967, 1967, 15: 1967, 48: 1967, 50: 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 469: 1967, 649: 1967}, - {472: 6190, 505: 2697, 729: 2696, 740: 6189}, - {1969, 1969, 15: 1969, 48: 1969, 50: 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 105: 3420, 3416, 108: 3413, 3428, 111: 3415, 3412, 3414, 3418, 3419, 3424, 3423, 3422, 3426, 3427, 3421, 3425, 124: 3417, 469: 1969, 649: 1969, 801: 6191}, + {1966, 1966, 15: 1966, 48: 1966, 50: 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 470: 1966, 650: 1966}, + {98: 3906, 107: 3905, 506: 2701, 730: 2700, 741: 6192, 830: 6191}, + {1969, 1969, 15: 1969, 48: 1969, 50: 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 470: 1969, 650: 1969}, + {1968, 1968, 15: 1968, 48: 1968, 50: 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 470: 1968, 650: 1968}, + {506: 2701, 730: 2700, 741: 6194}, // 3690 - {1970, 1970, 15: 1970, 48: 1970, 50: 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 469: 1970, 649: 1970}, - {306: 6192}, - {1971, 1971, 15: 1971, 48: 1971, 50: 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 469: 1971, 649: 1971}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 3446, 487: 6196, 504: 6197, 659: 3447, 2723, 2724, 2722, 734: 6195, 1302: 6194}, - {1972, 1972, 15: 1972, 48: 1972, 50: 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 469: 1972, 649: 1972}, + {204: 6195}, + {554: 6196}, + {108: 6197}, + {1970, 1970, 15: 1970, 48: 1970, 50: 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 470: 1970, 650: 1970}, + {473: 6199, 506: 2701, 730: 2700, 741: 6200}, // 3695 - {254, 254, 15: 254, 48: 254, 50: 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 469: 254, 649: 254}, - {253, 253, 15: 253, 48: 253, 50: 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 469: 253, 649: 253}, - {252, 252, 15: 252, 48: 252, 50: 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 469: 252, 649: 252}, - {472: 6199}, - {1973, 1973, 15: 1973, 48: 1973, 50: 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 469: 1973, 649: 1973}, + {1972, 1972, 15: 1972, 48: 1972, 50: 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 470: 1972, 650: 1972}, + {1971, 1971, 15: 1971, 48: 1971, 50: 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 470: 1971, 650: 1971}, + {473: 6203, 506: 2701, 730: 2700, 741: 6202}, + {1973, 1973, 15: 1973, 48: 1973, 50: 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 101: 3426, 104: 3422, 108: 3419, 3434, 3421, 3418, 3420, 3424, 3425, 3430, 3429, 3428, 3432, 3433, 3427, 3431, 123: 3423, 470: 1973, 650: 1973, 800: 6204}, + {1974, 1974, 15: 1974, 48: 1974, 50: 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 470: 1974, 650: 1974}, // 3700 - {505: 2697, 568: 6169, 6170, 729: 6168, 922: 6201}, - {1974, 1974, 15: 1974, 48: 1974, 50: 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 469: 1974, 649: 1974}, - {505: 2697, 729: 2696, 740: 6203}, - {1975, 1975, 15: 1975, 48: 1975, 50: 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 469: 1975, 649: 1975}, - {2: 1976, 1976, 1976, 1976, 1976, 8: 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 48: 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 472: 1976, 487: 1976, 496: 1976, 504: 1976}, + {306: 6205}, + {1975, 1975, 15: 1975, 48: 1975, 50: 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 470: 1975, 650: 1975}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 3452, 488: 6209, 505: 6210, 660: 3453, 2727, 2728, 2726, 735: 6208, 1303: 6207}, + {1976, 1976, 15: 1976, 48: 1976, 50: 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 470: 1976, 650: 1976}, + {254, 254, 15: 254, 48: 254, 50: 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 470: 254, 650: 254}, // 3705 - {646: 6206}, - {472: 6207}, - {1994, 1994, 15: 1994, 48: 1994, 50: 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 469: 1994, 649: 1994, 893: 6208}, - {2001, 2001, 15: 6163, 48: 6139, 50: 6159, 6152, 6142, 6138, 6146, 6150, 6162, 6145, 6151, 6149, 6147, 6160, 6153, 6141, 6161, 6140, 6143, 6144, 6148, 469: 6154, 649: 6164, 889: 6156, 6155, 6158, 6137, 894: 6157}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 6210, 2723, 2724, 2722}, + {253, 253, 15: 253, 48: 253, 50: 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 470: 253, 650: 253}, + {252, 252, 15: 252, 48: 252, 50: 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 470: 252, 650: 252}, + {473: 6212}, + {1977, 1977, 15: 1977, 48: 1977, 50: 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 470: 1977, 650: 1977}, + {506: 2701, 569: 6182, 6183, 730: 6181, 923: 6214}, // 3710 - {2002, 2002}, - {2003, 2003}, - {2021, 2021, 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 4095, 2723, 2724, 2722, 739: 6244}, - {2019, 2019}, - {26: 6242}, + {1978, 1978, 15: 1978, 48: 1978, 50: 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 470: 1978, 650: 1978}, + {506: 2701, 730: 2700, 741: 6216}, + {1979, 1979, 15: 1979, 48: 1979, 50: 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 470: 1979, 650: 1979}, + {2: 1980, 1980, 1980, 1980, 1980, 8: 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 48: 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 473: 1980, 488: 1980, 496: 1980, 505: 1980}, + {647: 6219}, // 3715 - {1752, 1752, 1752, 1752, 1752, 1752, 1752, 8: 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 48: 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 496: 6231, 648: 1752}, - {251: 6218, 470: 2551, 2550, 498: 2549, 504: 2535, 564: 2534, 566: 2548, 642: 2544, 650: 2652, 657: 2669, 705: 2670, 735: 2516, 744: 2671, 2545, 2546, 2547, 2556, 752: 2554, 2553, 2552, 2519, 2677, 2676, 762: 2517, 768: 2651, 770: 2674, 2675, 2673, 775: 2518, 779: 2672, 802: 2678, 820: 6217}, - {2013, 2013}, - {496: 6219}, - {165: 6223, 226: 6226, 244: 6225, 299: 6222, 6228, 6227, 472: 6221, 573: 6224, 1039: 6220}, + {473: 6220}, + {1998, 1998, 15: 1998, 48: 1998, 50: 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 470: 1998, 650: 1998, 894: 6221}, + {2005, 2005, 15: 6176, 48: 6152, 50: 6172, 6165, 6155, 6151, 6159, 6163, 6175, 6158, 6164, 6162, 6160, 6173, 6166, 6154, 6174, 6153, 6156, 6157, 6161, 470: 6167, 650: 6177, 890: 6169, 6168, 6171, 6150, 895: 6170}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 6223, 2727, 2728, 2726}, + {2006, 2006}, // 3720 - {470: 2551, 2550, 498: 2549, 504: 2535, 564: 2534, 566: 2548, 642: 2544, 650: 2652, 657: 2669, 705: 2670, 735: 2516, 744: 2671, 2545, 2546, 2547, 2556, 752: 2554, 2553, 2552, 2519, 2677, 2676, 762: 2517, 768: 2651, 770: 2674, 2675, 2673, 775: 2518, 779: 2672, 802: 2678, 820: 6230}, - {470: 2551, 2550, 498: 2549, 504: 2535, 564: 2534, 566: 2548, 642: 2544, 650: 2652, 657: 2669, 705: 2670, 735: 2516, 744: 2671, 2545, 2546, 2547, 2556, 752: 2554, 2553, 2552, 2519, 2677, 2676, 762: 2517, 768: 2651, 770: 2674, 2675, 2673, 775: 2518, 779: 2672, 802: 2678, 820: 6229}, - {470: 2010, 2010, 491: 2010, 498: 2010, 504: 2010, 564: 2010, 566: 2010, 642: 2010, 650: 2010, 657: 2010, 735: 2010}, - {470: 2009, 2009, 491: 2009, 498: 2009, 504: 2009, 564: 2009, 566: 2009, 642: 2009, 650: 2009, 657: 2009, 735: 2009}, - {470: 2008, 2008, 491: 2008, 498: 2008, 504: 2008, 564: 2008, 566: 2008, 642: 2008, 650: 2008, 657: 2008, 735: 2008}, + {2007, 2007}, + {2025, 2025, 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 4105, 2727, 2728, 2726, 740: 6257}, + {2023, 2023}, + {26: 6255}, + {1756, 1756, 1756, 1756, 1756, 1756, 1756, 8: 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 48: 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 496: 6244, 649: 1756}, // 3725 - {470: 2007, 2007, 491: 2007, 498: 2007, 504: 2007, 564: 2007, 566: 2007, 642: 2007, 650: 2007, 657: 2007, 735: 2007}, - {470: 2006, 2006, 491: 2006, 498: 2006, 504: 2006, 564: 2006, 566: 2006, 642: 2006, 650: 2006, 657: 2006, 735: 2006}, - {470: 2005, 2005, 491: 2005, 498: 2005, 504: 2005, 564: 2005, 566: 2005, 642: 2005, 650: 2005, 657: 2005, 735: 2005}, - {470: 2004, 2004, 491: 2004, 498: 2004, 504: 2004, 564: 2004, 566: 2004, 642: 2004, 650: 2004, 657: 2004, 735: 2004}, - {2011, 2011}, + {251: 6231, 471: 2555, 2554, 499: 2553, 505: 2539, 565: 2538, 567: 2552, 643: 2548, 651: 2656, 658: 2673, 706: 2674, 736: 2520, 745: 2675, 2549, 2550, 2551, 2560, 753: 2558, 2557, 2556, 2523, 2681, 2680, 763: 2521, 769: 2655, 771: 2678, 2679, 2677, 776: 2522, 780: 2676, 803: 2682, 822: 6230}, + {2017, 2017}, + {496: 6232}, + {165: 6236, 226: 6239, 244: 6238, 299: 6235, 6241, 6240, 473: 6234, 574: 6237, 1040: 6233}, + {471: 2555, 2554, 499: 2553, 505: 2539, 565: 2538, 567: 2552, 643: 2548, 651: 2656, 658: 2673, 706: 2674, 736: 2520, 745: 2675, 2549, 2550, 2551, 2560, 753: 2558, 2557, 2556, 2523, 2681, 2680, 763: 2521, 769: 2655, 771: 2678, 2679, 2677, 776: 2522, 780: 2676, 803: 2682, 822: 6243}, // 3730 - {2012, 2012}, - {165: 6223, 226: 6226, 244: 6225, 299: 6222, 6228, 6227, 472: 6232, 573: 6224, 1039: 6233}, - {470: 2551, 2550, 491: 6238, 498: 2549, 504: 2535, 564: 2534, 566: 2548, 642: 2544, 650: 2652, 657: 2669, 705: 2670, 735: 2516, 744: 2671, 2545, 2546, 2547, 2556, 752: 2554, 2553, 2552, 2519, 2677, 2676, 762: 2517, 768: 2651, 770: 2674, 2675, 2673, 775: 2518, 779: 2672, 802: 2678, 820: 6239}, - {470: 2551, 2550, 491: 6234, 498: 2549, 504: 2535, 564: 2534, 566: 2548, 642: 2544, 650: 2652, 657: 2669, 705: 2670, 735: 2516, 744: 2671, 2545, 2546, 2547, 2556, 752: 2554, 2553, 2552, 2519, 2677, 2676, 762: 2517, 768: 2651, 770: 2674, 2675, 2673, 775: 2518, 779: 2672, 802: 2678, 820: 6235}, - {26: 6236}, + {471: 2555, 2554, 499: 2553, 505: 2539, 565: 2538, 567: 2552, 643: 2548, 651: 2656, 658: 2673, 706: 2674, 736: 2520, 745: 2675, 2549, 2550, 2551, 2560, 753: 2558, 2557, 2556, 2523, 2681, 2680, 763: 2521, 769: 2655, 771: 2678, 2679, 2677, 776: 2522, 780: 2676, 803: 2682, 822: 6242}, + {471: 2014, 2014, 492: 2014, 499: 2014, 505: 2014, 565: 2014, 567: 2014, 643: 2014, 651: 2014, 658: 2014, 736: 2014}, + {471: 2013, 2013, 492: 2013, 499: 2013, 505: 2013, 565: 2013, 567: 2013, 643: 2013, 651: 2013, 658: 2013, 736: 2013}, + {471: 2012, 2012, 492: 2012, 499: 2012, 505: 2012, 565: 2012, 567: 2012, 643: 2012, 651: 2012, 658: 2012, 736: 2012}, + {471: 2011, 2011, 492: 2011, 499: 2011, 505: 2011, 565: 2011, 567: 2011, 643: 2011, 651: 2011, 658: 2011, 736: 2011}, // 3735 - {2014, 2014}, - {505: 2697, 729: 6237}, + {471: 2010, 2010, 492: 2010, 499: 2010, 505: 2010, 565: 2010, 567: 2010, 643: 2010, 651: 2010, 658: 2010, 736: 2010}, + {471: 2009, 2009, 492: 2009, 499: 2009, 505: 2009, 565: 2009, 567: 2009, 643: 2009, 651: 2009, 658: 2009, 736: 2009}, + {471: 2008, 2008, 492: 2008, 499: 2008, 505: 2008, 565: 2008, 567: 2008, 643: 2008, 651: 2008, 658: 2008, 736: 2008}, {2015, 2015}, - {26: 6240}, {2016, 2016}, // 3740 - {505: 2697, 729: 6241}, - {2017, 2017}, - {505: 2697, 729: 6243}, + {165: 6236, 226: 6239, 244: 6238, 299: 6235, 6241, 6240, 473: 6245, 574: 6237, 1040: 6246}, + {471: 2555, 2554, 492: 6251, 499: 2553, 505: 2539, 565: 2538, 567: 2552, 643: 2548, 651: 2656, 658: 2673, 706: 2674, 736: 2520, 745: 2675, 2549, 2550, 2551, 2560, 753: 2558, 2557, 2556, 2523, 2681, 2680, 763: 2521, 769: 2655, 771: 2678, 2679, 2677, 776: 2522, 780: 2676, 803: 2682, 822: 6252}, + {471: 2555, 2554, 492: 6247, 499: 2553, 505: 2539, 565: 2538, 567: 2552, 643: 2548, 651: 2656, 658: 2673, 706: 2674, 736: 2520, 745: 2675, 2549, 2550, 2551, 2560, 753: 2558, 2557, 2556, 2523, 2681, 2680, 763: 2521, 769: 2655, 771: 2678, 2679, 2677, 776: 2522, 780: 2676, 803: 2682, 822: 6248}, + {26: 6249}, {2018, 2018}, - {2020, 2020}, // 3745 - {2028, 2028}, - {496: 6270}, - {71: 2510, 145: 2512, 152: 2540, 2525, 155: 2509, 392: 6266, 470: 2551, 2550, 498: 2549, 501: 6250, 504: 2535, 564: 2534, 566: 2548, 642: 2544, 650: 2652, 705: 6248, 735: 2516, 744: 6249, 2545, 2546, 2547, 2556, 752: 2554, 2553, 2552, 2519, 6256, 6255, 762: 2517, 768: 2651, 770: 6253, 6254, 6252, 775: 2518, 779: 6251, 795: 2526, 805: 6264, 840: 6258, 844: 6259, 854: 6257, 856: 6261, 858: 6262, 6260, 6263, 915: 6265}, - {459, 459, 477: 803, 485: 803, 803, 490: 2689, 497: 2690, 499: 2686, 763: 3845, 3846}, - {461, 461, 477: 804, 485: 804, 804}, + {506: 2701, 730: 6250}, + {2019, 2019}, + {26: 6253}, + {2020, 2020}, + {506: 2701, 730: 6254}, // 3750 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 5572, 5567, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 5570, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 5569, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 5574, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 5568, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 5575, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 5571, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 503: 3791, 565: 5582, 587: 5581, 643: 3789, 659: 5579, 2723, 2724, 2722, 769: 5583, 826: 5580, 973: 5584, 1152: 5577}, + {2021, 2021}, + {506: 2701, 730: 6256}, + {2022, 2022}, + {2024, 2024}, + {2032, 2032}, + // 3755 + {496: 6283}, + {71: 2514, 145: 2516, 152: 2544, 2529, 155: 2513, 393: 6279, 471: 2555, 2554, 499: 2553, 502: 6263, 505: 2539, 565: 2538, 567: 2552, 643: 2548, 651: 2656, 706: 6261, 736: 2520, 745: 6262, 2549, 2550, 2551, 2560, 753: 2558, 2557, 2556, 2523, 6269, 6268, 763: 2521, 769: 2655, 771: 6266, 6267, 6265, 776: 2522, 780: 6264, 796: 2530, 806: 6277, 841: 6271, 845: 6272, 855: 6270, 857: 6274, 859: 6275, 6273, 6276, 916: 6278}, + {459, 459, 478: 805, 486: 805, 805, 491: 2693, 498: 2694, 500: 2690, 764: 3853, 3854}, + {461, 461, 478: 806, 486: 806, 806}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 5582, 5577, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 5580, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 5579, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 5584, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 5578, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 5587, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 5585, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 5581, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 504: 3799, 566: 5593, 588: 5592, 644: 3797, 660: 5590, 2727, 2728, 2726, 770: 5594, 827: 5591, 974: 5595, 1153: 5588}, + // 3760 {466, 466}, {465, 465}, {464, 464}, {463, 463}, - // 3755 {462, 462}, + // 3765 {460, 460}, {458, 458}, {457, 457}, {456, 456}, - // 3760 {455, 455}, + // 3770 {454, 454}, {453, 453}, {452, 452}, - {21: 5079}, - // 3765 - {2026, 2026}, - {496: 6267}, - {472: 6268}, - {71: 2510, 145: 2512, 152: 2540, 2525, 155: 2509, 470: 2551, 2550, 498: 2549, 501: 6250, 504: 2535, 564: 2534, 566: 2548, 642: 2544, 650: 2652, 705: 6248, 735: 2516, 744: 6249, 2545, 2546, 2547, 2556, 752: 2554, 2553, 2552, 2519, 6256, 6255, 762: 2517, 768: 2651, 770: 6253, 6254, 6252, 775: 2518, 779: 6251, 795: 2526, 805: 6264, 840: 6258, 844: 6259, 854: 6257, 856: 6261, 858: 6262, 6260, 6263, 915: 6269}, - {2025, 2025}, - // 3770 - {472: 6271}, - {71: 2510, 145: 2512, 152: 2540, 2525, 155: 2509, 470: 2551, 2550, 498: 2549, 501: 6250, 504: 2535, 564: 2534, 566: 2548, 642: 2544, 650: 2652, 705: 6248, 735: 2516, 744: 6249, 2545, 2546, 2547, 2556, 752: 2554, 2553, 2552, 2519, 6256, 6255, 762: 2517, 768: 2651, 770: 6253, 6254, 6252, 775: 2518, 779: 6251, 795: 2526, 805: 6264, 840: 6258, 844: 6259, 854: 6257, 856: 6261, 858: 6262, 6260, 6263, 915: 6272}, - {2027, 2027}, - {2: 1046, 1046, 1046, 1046, 1046, 8: 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 48: 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 487: 1046, 495: 1046, 749: 5282, 5281, 5280, 833: 5283, 882: 6274}, - {2: 1034, 1034, 1034, 1034, 1034, 8: 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 48: 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 5646, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 487: 1034, 495: 1034, 1103: 6275}, + {21: 5089}, + {2030, 2030}, // 3775 - {2: 1840, 1840, 1840, 1840, 1840, 8: 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 48: 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 487: 4142, 495: 1840, 850: 6276}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 495: 6277, 659: 5650, 2723, 2724, 2722, 912: 5651, 962: 5649}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 6279, 2723, 2724, 2722, 733: 5663, 912: 5651, 962: 6278}, - {7: 5659, 478: 6282}, - {1044, 1044, 1044, 1044, 1044, 1044, 1044, 1036, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 48: 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 475: 1044, 478: 1036, 487: 1044, 1044, 490: 1044, 494: 1044, 499: 1044, 1044, 522: 1044, 648: 6280, 902: 5652}, + {496: 6280}, + {473: 6281}, + {71: 2514, 145: 2516, 152: 2544, 2529, 155: 2513, 471: 2555, 2554, 499: 2553, 502: 6263, 505: 2539, 565: 2538, 567: 2552, 643: 2548, 651: 2656, 706: 6261, 736: 2520, 745: 6262, 2549, 2550, 2551, 2560, 753: 2558, 2557, 2556, 2523, 6269, 6268, 763: 2521, 769: 2655, 771: 6266, 6267, 6265, 776: 2522, 780: 6264, 796: 2530, 806: 6277, 841: 6271, 845: 6272, 855: 6270, 857: 6274, 859: 6275, 6273, 6276, 916: 6282}, + {2029, 2029}, + {473: 6284}, // 3780 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 520: 5655, 659: 6281, 2723, 2724, 2722}, - {1043, 1043, 1043, 1043, 1043, 1043, 1043, 1036, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 48: 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 475: 1043, 478: 1036, 487: 1043, 1043, 490: 1043, 494: 1043, 499: 1043, 1043, 522: 1043, 648: 5657, 902: 5656}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 470: 5294, 576: 5289, 659: 3875, 2723, 2724, 2722, 705: 5293, 733: 5292, 793: 5291, 797: 5290, 5296, 847: 5286, 885: 6283}, - {245, 245, 7: 5340, 494: 2683, 786: 2684, 6284}, - {2057, 2057}, + {71: 2514, 145: 2516, 152: 2544, 2529, 155: 2513, 471: 2555, 2554, 499: 2553, 502: 6263, 505: 2539, 565: 2538, 567: 2552, 643: 2548, 651: 2656, 706: 6261, 736: 2520, 745: 6262, 2549, 2550, 2551, 2560, 753: 2558, 2557, 2556, 2523, 6269, 6268, 763: 2521, 769: 2655, 771: 6266, 6267, 6265, 776: 2522, 780: 6264, 796: 2530, 806: 6277, 841: 6271, 845: 6272, 855: 6270, 857: 6274, 859: 6275, 6273, 6276, 916: 6285}, + {2031, 2031}, + {2: 1048, 1048, 1048, 1048, 1048, 8: 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 48: 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 488: 1048, 497: 1048, 750: 5292, 5291, 5290, 834: 5293, 883: 6287}, + {2: 1036, 1036, 1036, 1036, 1036, 8: 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 48: 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 5658, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 488: 1036, 497: 1036, 1104: 6288}, + {2: 1844, 1844, 1844, 1844, 1844, 8: 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 48: 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 488: 4152, 497: 1844, 851: 6289}, // 3785 - {2060, 2060, 7: 3546}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 6344, 2723, 2724, 2722}, - {2: 1844, 1844, 1844, 1844, 1844, 8: 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 48: 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 563: 4400, 777: 6342}, - {2: 1844, 1844, 1844, 1844, 1844, 8: 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 48: 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 563: 4400, 777: 6333}, - {110: 5418, 566: 5417, 1142: 6329}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 497: 6290, 660: 5662, 2727, 2728, 2726, 913: 5663, 963: 5661}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 6292, 2727, 2728, 2726, 734: 5675, 913: 5663, 963: 6291}, + {7: 5671, 479: 6295}, + {1046, 1046, 1046, 1046, 1046, 1046, 1046, 1038, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 48: 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 476: 1046, 479: 1038, 488: 1046, 1046, 491: 1046, 495: 1046, 500: 1046, 1046, 523: 1046, 649: 6293, 903: 5664}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 521: 5667, 660: 6294, 2727, 2728, 2726}, // 3790 - {156: 591, 162: 5472}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 563: 6324, 659: 3875, 2723, 2724, 2722, 733: 3876, 791: 6323}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 3446, 563: 6320, 567: 5176, 659: 3447, 2723, 2724, 2722, 734: 5175, 773: 5177, 863: 6319}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 5602, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 5607, 563: 6316, 659: 3447, 2723, 2724, 2722, 734: 5130, 796: 5609, 816: 5610, 5608, 857: 6315}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3875, 2723, 2724, 2722, 733: 6311}, + {1045, 1045, 1045, 1045, 1045, 1045, 1045, 1038, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 48: 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 476: 1045, 479: 1038, 488: 1045, 1045, 491: 1045, 495: 1045, 500: 1045, 1045, 523: 1045, 649: 5669, 903: 5668}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 471: 5304, 577: 5299, 660: 3883, 2727, 2728, 2726, 706: 5303, 734: 5302, 794: 5301, 798: 5300, 5306, 848: 5296, 886: 6296}, + {245, 245, 7: 5350, 495: 2687, 787: 2688, 6297}, + {2061, 2061}, + {2064, 2064, 7: 3552}, // 3795 - {2: 1844, 1844, 1844, 1844, 1844, 8: 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 48: 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 563: 4400, 777: 6309}, - {156: 6304}, - {160: 6301}, - {2: 1844, 1844, 1844, 1844, 1844, 8: 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 48: 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 563: 4400, 777: 6299}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3875, 2723, 2724, 2722, 733: 3876, 791: 6300}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 6357, 2727, 2728, 2726}, + {2: 1848, 1848, 1848, 1848, 1848, 8: 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 48: 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 564: 4410, 778: 6355}, + {2: 1848, 1848, 1848, 1848, 1848, 8: 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 48: 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 564: 4410, 778: 6346}, + {122: 5428, 567: 5427, 1143: 6342}, + {156: 591, 162: 5482}, // 3800 - {26, 26, 7: 3878}, - {2: 1844, 1844, 1844, 1844, 1844, 8: 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 48: 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 563: 4400, 777: 6302}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 4932, 2723, 2724, 2722, 881: 6303}, - {53, 53}, - {491: 6305}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 564: 6337, 660: 3883, 2727, 2728, 2726, 734: 3884, 792: 6336}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 3452, 564: 6333, 568: 5186, 660: 3453, 2727, 2728, 2726, 735: 5185, 774: 5187, 864: 6332}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 5613, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 5618, 564: 6329, 660: 3453, 2727, 2728, 2726, 735: 5140, 797: 5620, 817: 5621, 5619, 858: 6328}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3883, 2727, 2728, 2726, 734: 6324}, + {2: 1848, 1848, 1848, 1848, 1848, 8: 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 48: 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 564: 4410, 778: 6322}, // 3805 - {470: 2551, 2550, 498: 2549, 504: 2535, 564: 2534, 566: 2548, 642: 2544, 650: 2652, 705: 5631, 735: 5629, 744: 5632, 2545, 2546, 2547, 2556, 752: 2554, 2553, 2552, 5630, 5634, 5633, 762: 5636, 768: 2651, 770: 5637, 5638, 5635, 841: 6306}, - {177, 177, 478: 6307}, - {470: 2551, 2550, 498: 2549, 504: 2535, 564: 2534, 566: 2548, 642: 2544, 650: 2652, 705: 5631, 735: 5629, 744: 5632, 2545, 2546, 2547, 2556, 752: 2554, 2553, 2552, 5630, 5634, 5633, 762: 5636, 768: 2651, 770: 5637, 5638, 5635, 841: 6308}, - {176, 176}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 6310, 2723, 2724, 2722}, + {156: 6317}, + {160: 6314}, + {2: 1848, 1848, 1848, 1848, 1848, 8: 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 48: 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 564: 4410, 778: 6312}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3883, 2727, 2728, 2726, 734: 3884, 792: 6313}, + {26, 26, 7: 3886}, // 3810 - {1945, 1945}, - {2039, 2039, 158: 6313, 488: 6312}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 4696, 2723, 2724, 2722, 785: 6314}, - {2037, 2037}, - {2038, 2038, 7: 4697}, + {2: 1848, 1848, 1848, 1848, 1848, 8: 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 48: 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 564: 4410, 778: 6315}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 4942, 2727, 2728, 2726, 882: 6316}, + {53, 53}, + {492: 6318}, + {471: 2555, 2554, 499: 2553, 505: 2539, 565: 2538, 567: 2552, 643: 2548, 651: 2656, 706: 5643, 736: 5641, 745: 5644, 2549, 2550, 2551, 2560, 753: 2558, 2557, 2556, 5642, 5646, 5645, 763: 5648, 769: 2655, 771: 5649, 5650, 5647, 842: 6319}, // 3815 - {2041, 2041, 7: 5611}, - {583: 6317}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 5602, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 5607, 659: 3447, 2723, 2724, 2722, 734: 5130, 796: 5609, 816: 5610, 5608, 857: 6318}, - {2040, 2040, 7: 5611}, - {2043, 2043, 7: 5179}, + {177, 177, 479: 6320}, + {471: 2555, 2554, 499: 2553, 505: 2539, 565: 2538, 567: 2552, 643: 2548, 651: 2656, 706: 5643, 736: 5641, 745: 5644, 2549, 2550, 2551, 2560, 753: 2558, 2557, 2556, 5642, 5646, 5645, 763: 5648, 769: 2655, 771: 5649, 5650, 5647, 842: 6321}, + {176, 176}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 6323, 2727, 2728, 2726}, + {1949, 1949}, // 3820 - {583: 6321}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 3446, 567: 5176, 659: 3447, 2723, 2724, 2722, 734: 5175, 773: 5177, 863: 6322}, - {2042, 2042, 7: 5179}, - {2036, 2036, 7: 3878, 666: 4748, 668: 4747, 906: 6328}, - {583: 6325}, + {2043, 2043, 158: 6326, 489: 6325}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 4706, 2727, 2728, 2726, 786: 6327}, + {2041, 2041}, + {2042, 2042, 7: 4707}, + {2045, 2045, 7: 5622}, // 3825 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3875, 2723, 2724, 2722, 733: 3876, 791: 6326}, - {2036, 2036, 7: 3878, 666: 4748, 668: 4747, 906: 6327}, - {2044, 2044}, - {2045, 2045}, - {2: 1844, 1844, 1844, 1844, 1844, 8: 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 48: 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 563: 4400, 777: 6330}, + {582: 6330}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 5613, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 5618, 660: 3453, 2727, 2728, 2726, 735: 5140, 797: 5620, 817: 5621, 5619, 858: 6331}, + {2044, 2044, 7: 5622}, + {2047, 2047, 7: 5189}, + {582: 6334}, // 3830 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3875, 2723, 2724, 2722, 733: 3876, 791: 6331}, - {2036, 2036, 7: 3878, 666: 4748, 668: 4747, 906: 6332}, - {2049, 2049}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 6334, 2723, 2724, 2722}, - {469: 6335}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 3452, 568: 5186, 660: 3453, 2727, 2728, 2726, 735: 5185, 774: 5187, 864: 6335}, + {2046, 2046, 7: 5189}, + {2040, 2040, 7: 3886, 667: 4758, 669: 4757, 907: 6341}, + {582: 6338}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3883, 2727, 2728, 2726, 734: 3884, 792: 6339}, // 3835 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3875, 2723, 2724, 2722, 733: 6336}, - {2179, 2179, 81: 4184, 493: 4185, 865: 6338, 878: 6337, 1059: 6339}, - {2178, 2178, 81: 4184, 865: 6341}, - {2177, 2177, 493: 4185, 878: 6340}, - {2050, 2050}, + {2040, 2040, 7: 3886, 667: 4758, 669: 4757, 907: 6340}, + {2048, 2048}, + {2049, 2049}, + {2: 1848, 1848, 1848, 1848, 1848, 8: 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 48: 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 564: 4410, 778: 6343}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3883, 2727, 2728, 2726, 734: 3884, 792: 6344}, // 3840 - {2175, 2175}, - {2176, 2176}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 5275, 2723, 2724, 2722, 811: 6343}, - {2051, 2051}, - {2187, 2187}, + {2040, 2040, 7: 3886, 667: 4758, 669: 4757, 907: 6345}, + {2053, 2053}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 6347, 2727, 2728, 2726}, + {470: 6348}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3883, 2727, 2728, 2726, 734: 6349}, // 3845 - {2: 1842, 1842, 1842, 1842, 1842, 8: 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 48: 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 563: 4772, 781: 6566}, - {645: 6554}, - {645: 2173}, - {645: 2172}, - {645: 2171}, + {2183, 2183, 81: 4194, 494: 4195, 866: 6351, 879: 6350, 1060: 6352}, + {2182, 2182, 81: 4194, 866: 6354}, + {2181, 2181, 494: 4195, 879: 6353}, + {2054, 2054}, + {2179, 2179}, // 3850 - {2: 1842, 1842, 1842, 1842, 1842, 8: 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 48: 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 563: 4772, 781: 6531}, - {16: 6452, 81: 6451, 99: 2077, 140: 2077, 664: 2077, 1324: 6450}, - {504: 6449}, - {2: 1842, 1842, 1842, 1842, 1842, 8: 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 48: 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 563: 4772, 781: 6437}, - {2: 1842, 1842, 1842, 1842, 1842, 8: 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 48: 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 472: 1842, 563: 4772, 567: 1842, 781: 6405}, + {2180, 2180}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 5285, 2727, 2728, 2726, 812: 6356}, + {2055, 2055}, + {2191, 2191}, + {2: 1846, 1846, 1846, 1846, 1846, 8: 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 48: 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 564: 4782, 782: 6579}, // 3855 - {2: 1842, 1842, 1842, 1842, 1842, 8: 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 48: 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 472: 1842, 563: 4772, 781: 6399}, - {156: 6394}, - {2: 1842, 1842, 1842, 1842, 1842, 8: 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 48: 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 563: 4772, 781: 6358}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3875, 2723, 2724, 2722, 733: 6359}, - {49, 49, 4: 49, 49, 49, 13: 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 70: 6367, 6364, 6370, 6371, 6372, 6365, 6363, 6373, 6369, 6366, 476: 49, 49, 479: 49, 500: 49, 503: 49, 643: 49, 645: 49, 653: 6368, 908: 6362, 1190: 6360, 1281: 6361}, + {646: 6567}, + {646: 2177}, + {646: 2176}, + {646: 2175}, + {2: 1846, 1846, 1846, 1846, 1846, 8: 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 48: 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 564: 4782, 782: 6544}, // 3860 - {393, 393, 4: 4190, 4192, 397, 13: 4209, 2150, 4207, 4148, 4211, 4198, 4227, 4191, 4194, 4193, 4196, 4197, 4199, 4206, 397, 4217, 4218, 4204, 4205, 4210, 4212, 4224, 4223, 4229, 4225, 4222, 4215, 4220, 4221, 4214, 4216, 4219, 4208, 476: 4189, 4226, 479: 2150, 500: 4915, 503: 2150, 643: 2150, 645: 4195, 776: 4200, 788: 4202, 808: 4201, 830: 4203, 834: 4213, 838: 4228, 914: 5494, 1013: 6393}, - {48, 48, 4: 48, 48, 48, 13: 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 70: 6367, 6364, 6370, 6371, 6372, 6365, 6363, 6373, 6369, 6366, 476: 48, 48, 479: 48, 500: 48, 503: 48, 643: 48, 645: 48, 653: 6368, 908: 6392}, - {47, 47, 4: 47, 47, 47, 13: 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 70: 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 476: 47, 47, 479: 47, 500: 47, 503: 47, 643: 47, 645: 47, 653: 47}, - {482: 2031, 2031, 496: 4230, 505: 2031, 655: 6389, 732: 6388}, - {471: 6385, 482: 2031, 2031, 496: 4230, 505: 2031, 732: 6384}, + {16: 6465, 81: 6464, 99: 2081, 140: 2081, 665: 2081, 1325: 6463}, + {505: 6462}, + {2: 1846, 1846, 1846, 1846, 1846, 8: 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 48: 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 564: 4782, 782: 6450}, + {2: 1846, 1846, 1846, 1846, 1846, 8: 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 48: 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 473: 1846, 564: 4782, 568: 1846, 782: 6418}, + {2: 1846, 1846, 1846, 1846, 1846, 8: 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 48: 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 473: 1846, 564: 4782, 782: 6412}, // 3865 - {482: 2031, 2031, 496: 4230, 505: 2031, 732: 6382}, - {40, 40, 4: 40, 40, 40, 13: 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 70: 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 476: 40, 40, 479: 40, 500: 40, 503: 40, 643: 40, 645: 40, 653: 40}, - {72: 6380, 74: 6381, 6378, 653: 6379}, - {482: 2031, 2031, 496: 4230, 505: 2031, 732: 6376}, - {37, 37, 4: 37, 37, 37, 13: 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 70: 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 476: 37, 37, 479: 37, 500: 37, 503: 37, 643: 37, 645: 37, 653: 37}, + {156: 6407}, + {2: 1846, 1846, 1846, 1846, 1846, 8: 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 48: 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 564: 4782, 782: 6371}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3883, 2727, 2728, 2726, 734: 6372}, + {49, 49, 4: 49, 49, 49, 13: 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 70: 6380, 6377, 6383, 6384, 6385, 6378, 6376, 6386, 6382, 6379, 477: 49, 49, 480: 49, 501: 49, 504: 49, 644: 49, 646: 49, 654: 6381, 909: 6375, 1191: 6373, 1282: 6374}, + {393, 393, 4: 4200, 4202, 397, 13: 4219, 2154, 4217, 4158, 4221, 4208, 4237, 4201, 4204, 4203, 4206, 4207, 4209, 4216, 397, 4227, 4228, 4214, 4215, 4220, 4222, 4234, 4233, 4239, 4235, 4232, 4225, 4230, 4231, 4224, 4226, 4229, 4218, 477: 4199, 4236, 480: 2154, 501: 4925, 504: 2154, 644: 2154, 646: 4205, 777: 4210, 789: 4212, 809: 4211, 831: 4213, 835: 4223, 839: 4238, 915: 5504, 1014: 6406}, // 3870 - {482: 2031, 2031, 496: 4230, 505: 2031, 732: 6374}, - {34, 34, 4: 34, 34, 34, 13: 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 70: 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 476: 34, 34, 479: 34, 500: 34, 503: 34, 643: 34, 645: 34, 653: 34}, - {32, 32, 4: 32, 32, 32, 13: 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 70: 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 476: 32, 32, 479: 32, 500: 32, 503: 32, 643: 32, 645: 32, 653: 32}, - {31, 31, 4: 31, 31, 31, 13: 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 70: 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 476: 31, 31, 479: 31, 500: 31, 503: 31, 643: 31, 645: 31, 653: 31}, - {482: 4009, 4008, 505: 2697, 729: 4005, 760: 4007, 809: 6375}, + {48, 48, 4: 48, 48, 48, 13: 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 70: 6380, 6377, 6383, 6384, 6385, 6378, 6376, 6386, 6382, 6379, 477: 48, 48, 480: 48, 501: 48, 504: 48, 644: 48, 646: 48, 654: 6381, 909: 6405}, + {47, 47, 4: 47, 47, 47, 13: 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 70: 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 477: 47, 47, 480: 47, 501: 47, 504: 47, 644: 47, 646: 47, 654: 47}, + {483: 2035, 2035, 496: 4240, 506: 2035, 657: 6402, 733: 6401}, + {472: 6398, 483: 2035, 2035, 496: 4240, 506: 2035, 733: 6397}, + {483: 2035, 2035, 496: 4240, 506: 2035, 733: 6395}, // 3875 - {35, 35, 4: 35, 35, 35, 13: 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 70: 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 476: 35, 35, 479: 35, 500: 35, 503: 35, 643: 35, 645: 35, 653: 35}, - {482: 4009, 4008, 505: 2697, 729: 4005, 760: 4007, 809: 6377}, - {38, 38, 4: 38, 38, 38, 13: 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 70: 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 476: 38, 38, 479: 38, 500: 38, 503: 38, 643: 38, 645: 38, 653: 38}, - {39, 39, 4: 39, 39, 39, 13: 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 70: 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 476: 39, 39, 479: 39, 500: 39, 503: 39, 643: 39, 645: 39, 653: 39}, - {36, 36, 4: 36, 36, 36, 13: 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 70: 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 476: 36, 36, 479: 36, 500: 36, 503: 36, 643: 36, 645: 36, 653: 36}, + {40, 40, 4: 40, 40, 40, 13: 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 70: 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 477: 40, 40, 480: 40, 501: 40, 504: 40, 644: 40, 646: 40, 654: 40}, + {72: 6393, 74: 6394, 6391, 654: 6392}, + {483: 2035, 2035, 496: 4240, 506: 2035, 733: 6389}, + {37, 37, 4: 37, 37, 37, 13: 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 70: 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 477: 37, 37, 480: 37, 501: 37, 504: 37, 644: 37, 646: 37, 654: 37}, + {483: 2035, 2035, 496: 4240, 506: 2035, 733: 6387}, // 3880 - {33, 33, 4: 33, 33, 33, 13: 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 70: 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 476: 33, 33, 479: 33, 500: 33, 503: 33, 643: 33, 645: 33, 653: 33}, - {30, 30, 4: 30, 30, 30, 13: 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 70: 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 476: 30, 30, 479: 30, 500: 30, 503: 30, 643: 30, 645: 30, 653: 30}, - {482: 4009, 4008, 505: 2697, 729: 4005, 760: 4007, 809: 6383}, - {41, 41, 4: 41, 41, 41, 13: 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 70: 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 476: 41, 41, 479: 41, 500: 41, 503: 41, 643: 41, 645: 41, 653: 41}, - {482: 4009, 4008, 505: 2697, 729: 4005, 760: 4007, 809: 6387}, + {34, 34, 4: 34, 34, 34, 13: 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 70: 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 477: 34, 34, 480: 34, 501: 34, 504: 34, 644: 34, 646: 34, 654: 34}, + {32, 32, 4: 32, 32, 32, 13: 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 70: 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 477: 32, 32, 480: 32, 501: 32, 504: 32, 644: 32, 646: 32, 654: 32}, + {31, 31, 4: 31, 31, 31, 13: 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 70: 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 477: 31, 31, 480: 31, 501: 31, 504: 31, 644: 31, 646: 31, 654: 31}, + {483: 4018, 4019, 506: 2701, 730: 4015, 761: 4017, 810: 6388}, + {35, 35, 4: 35, 35, 35, 13: 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 70: 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 477: 35, 35, 480: 35, 501: 35, 504: 35, 644: 35, 646: 35, 654: 35}, // 3885 - {482: 4009, 4008, 505: 2697, 729: 4005, 760: 4007, 809: 6386}, - {42, 42, 4: 42, 42, 42, 13: 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 70: 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 476: 42, 42, 479: 42, 500: 42, 503: 42, 643: 42, 645: 42, 653: 42}, - {43, 43, 4: 43, 43, 43, 13: 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 70: 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 476: 43, 43, 479: 43, 500: 43, 503: 43, 643: 43, 645: 43, 653: 43}, - {482: 4009, 4008, 505: 2697, 729: 4005, 760: 4007, 809: 6391}, - {482: 4009, 4008, 505: 2697, 729: 4005, 760: 4007, 809: 6390}, + {483: 4018, 4019, 506: 2701, 730: 4015, 761: 4017, 810: 6390}, + {38, 38, 4: 38, 38, 38, 13: 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 70: 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 477: 38, 38, 480: 38, 501: 38, 504: 38, 644: 38, 646: 38, 654: 38}, + {39, 39, 4: 39, 39, 39, 13: 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 70: 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 477: 39, 39, 480: 39, 501: 39, 504: 39, 644: 39, 646: 39, 654: 39}, + {36, 36, 4: 36, 36, 36, 13: 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 70: 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 477: 36, 36, 480: 36, 501: 36, 504: 36, 644: 36, 646: 36, 654: 36}, + {33, 33, 4: 33, 33, 33, 13: 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 70: 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 477: 33, 33, 480: 33, 501: 33, 504: 33, 644: 33, 646: 33, 654: 33}, // 3890 - {44, 44, 4: 44, 44, 44, 13: 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 70: 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 476: 44, 44, 479: 44, 500: 44, 503: 44, 643: 44, 645: 44, 653: 44}, - {45, 45, 4: 45, 45, 45, 13: 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 70: 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 476: 45, 45, 479: 45, 500: 45, 503: 45, 643: 45, 645: 45, 653: 45}, - {46, 46, 4: 46, 46, 46, 13: 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 70: 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 476: 46, 46, 479: 46, 500: 46, 503: 46, 643: 46, 645: 46, 653: 46}, - {50, 50}, - {491: 6395}, + {30, 30, 4: 30, 30, 30, 13: 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 70: 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 477: 30, 30, 480: 30, 501: 30, 504: 30, 644: 30, 646: 30, 654: 30}, + {483: 4018, 4019, 506: 2701, 730: 4015, 761: 4017, 810: 6396}, + {41, 41, 4: 41, 41, 41, 13: 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 70: 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 477: 41, 41, 480: 41, 501: 41, 504: 41, 644: 41, 646: 41, 654: 41}, + {483: 4018, 4019, 506: 2701, 730: 4015, 761: 4017, 810: 6400}, + {483: 4018, 4019, 506: 2701, 730: 4015, 761: 4017, 810: 6399}, // 3895 - {470: 2551, 2550, 498: 2549, 504: 2535, 564: 2534, 566: 2548, 642: 2544, 650: 2652, 705: 5631, 735: 5629, 744: 5632, 2545, 2546, 2547, 2556, 752: 2554, 2553, 2552, 5630, 5634, 5633, 762: 5636, 768: 2651, 770: 5637, 5638, 5635, 841: 6396}, - {478: 6397}, - {470: 2551, 2550, 498: 2549, 504: 2535, 564: 2534, 566: 2548, 642: 2544, 650: 2652, 705: 5631, 735: 5629, 744: 5632, 2545, 2546, 2547, 2556, 752: 2554, 2553, 2552, 5630, 5634, 5633, 762: 5636, 768: 2651, 770: 5637, 5638, 5635, 841: 6398}, - {178, 178}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 5602, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 5607, 659: 3447, 2723, 2724, 2722, 734: 5130, 796: 5609, 816: 6401, 5608, 1116: 6402, 1276: 6400}, + {42, 42, 4: 42, 42, 42, 13: 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 70: 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 477: 42, 42, 480: 42, 501: 42, 504: 42, 644: 42, 646: 42, 654: 42}, + {43, 43, 4: 43, 43, 43, 13: 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 70: 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 477: 43, 43, 480: 43, 501: 43, 504: 43, 644: 43, 646: 43, 654: 43}, + {483: 4018, 4019, 506: 2701, 730: 4015, 761: 4017, 810: 6404}, + {483: 4018, 4019, 506: 2701, 730: 4015, 761: 4017, 810: 6403}, + {44, 44, 4: 44, 44, 44, 13: 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 70: 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 477: 44, 44, 480: 44, 501: 44, 504: 44, 644: 44, 646: 44, 654: 44}, // 3900 - {240, 240, 7: 6403}, + {45, 45, 4: 45, 45, 45, 13: 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 70: 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 477: 45, 45, 480: 45, 501: 45, 504: 45, 644: 45, 646: 45, 654: 45}, + {46, 46, 4: 46, 46, 46, 13: 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 70: 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 477: 46, 46, 480: 46, 501: 46, 504: 46, 644: 46, 646: 46, 654: 46}, + {50, 50}, + {492: 6408}, + {471: 2555, 2554, 499: 2553, 505: 2539, 565: 2538, 567: 2552, 643: 2548, 651: 2656, 706: 5643, 736: 5641, 745: 5644, 2549, 2550, 2551, 2560, 753: 2558, 2557, 2556, 5642, 5646, 5645, 763: 5648, 769: 2655, 771: 5649, 5650, 5647, 842: 6409}, + // 3905 + {479: 6410}, + {471: 2555, 2554, 499: 2553, 505: 2539, 565: 2538, 567: 2552, 643: 2548, 651: 2656, 706: 5643, 736: 5641, 745: 5644, 2549, 2550, 2551, 2560, 753: 2558, 2557, 2556, 5642, 5646, 5645, 763: 5648, 769: 2655, 771: 5649, 5650, 5647, 842: 6411}, + {178, 178}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 5613, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 5618, 660: 3453, 2727, 2728, 2726, 735: 5140, 797: 5620, 817: 6414, 5619, 1117: 6415, 1277: 6413}, + {240, 240, 7: 6416}, + // 3910 {189, 189, 7: 189}, {188, 188, 7: 188}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 5602, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 5607, 659: 3447, 2723, 2724, 2722, 734: 5130, 796: 5609, 816: 6401, 5608, 1116: 6404}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 5613, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 5618, 660: 3453, 2727, 2728, 2726, 735: 5140, 797: 5620, 817: 6414, 5619, 1117: 6417}, {187, 187, 7: 187}, - // 3905 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 3446, 567: 5176, 659: 3447, 2723, 2724, 2722, 734: 5175, 773: 5193, 886: 5194, 917: 6406}, - {223, 223, 7: 5196, 13: 223, 46: 223, 471: 223, 658: 5240, 955: 5239, 6407}, - {231, 231, 13: 231, 46: 231, 471: 6409, 1004: 6408}, - {210, 210, 13: 6426, 46: 6424, 948: 6425, 6423, 1096: 6422, 6421}, - {126: 6414, 6412, 6413, 6415, 1003: 6411, 1188: 6410}, - // 3910 - {230, 230, 13: 230, 46: 230, 126: 6414, 6412, 6413, 6415, 1003: 6420}, - {229, 229, 13: 229, 46: 229, 126: 229, 229, 229, 229}, - {505: 2697, 729: 4005, 760: 6419}, - {505: 2697, 729: 4005, 760: 6418}, - {505: 2697, 729: 4005, 760: 6417}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 3452, 568: 5186, 660: 3453, 2727, 2728, 2726, 735: 5185, 774: 5203, 887: 5204, 918: 6419}, // 3915 - {505: 2697, 729: 4005, 760: 6416}, + {223, 223, 7: 5206, 13: 223, 46: 223, 472: 223, 659: 5250, 956: 5249, 6420}, + {231, 231, 13: 231, 46: 231, 472: 6422, 1005: 6421}, + {210, 210, 13: 6439, 46: 6437, 949: 6438, 6436, 1097: 6435, 6434}, + {126: 6427, 6425, 6426, 6428, 1004: 6424, 1189: 6423}, + {230, 230, 13: 230, 46: 230, 126: 6427, 6425, 6426, 6428, 1004: 6433}, + // 3920 + {229, 229, 13: 229, 46: 229, 126: 229, 229, 229, 229}, + {506: 2701, 730: 4015, 761: 6432}, + {506: 2701, 730: 4015, 761: 6431}, + {506: 2701, 730: 4015, 761: 6430}, + {506: 2701, 730: 4015, 761: 6429}, + // 3925 {224, 224, 13: 224, 46: 224, 126: 224, 224, 224, 224}, {225, 225, 13: 225, 46: 225, 126: 225, 225, 225, 225}, {226, 226, 13: 226, 46: 226, 126: 226, 226, 226, 226}, {227, 227, 13: 227, 46: 227, 126: 227, 227, 227, 227}, - // 3920 {228, 228, 13: 228, 46: 228, 126: 228, 228, 228, 228}, + // 3930 {241, 241}, - {209, 209, 13: 6426, 46: 6424, 948: 6425, 6436}, + {209, 209, 13: 6439, 46: 6437, 949: 6438, 6449}, {208, 208, 13: 208, 46: 208}, - {493: 6435, 968: 6434}, - // 3925 - {204, 204, 13: 204, 46: 204, 206: 6430, 476: 6431, 578: 6429}, - {335: 6427}, - {199, 199, 13: 199, 46: 199, 206: 199, 476: 199, 578: 199, 1180: 6428}, - {200, 200, 13: 200, 46: 200, 206: 200, 476: 200, 578: 200}, - {505: 2697, 729: 4005, 760: 6432}, - // 3930 + {494: 6448, 969: 6447}, + {204, 204, 13: 204, 46: 204, 206: 6443, 477: 6444, 579: 6442}, + // 3935 + {335: 6440}, + {199, 199, 13: 199, 46: 199, 206: 199, 477: 199, 579: 199, 1181: 6441}, + {200, 200, 13: 200, 46: 200, 206: 200, 477: 200, 579: 200}, + {506: 2701, 730: 4015, 761: 6445}, {202, 202, 13: 202, 46: 202}, + // 3940 {201, 201, 13: 201, 46: 201}, - {106: 6433}, + {104: 6446}, {203, 203, 13: 203, 46: 203}, {206, 206, 13: 206, 46: 206}, - // 3935 {205, 205, 13: 205, 46: 205}, - {207, 207, 13: 207, 46: 207}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 6438, 2723, 2724, 2722}, - {495: 6439}, - {472: 6440}, - // 3940 - {1937, 1937, 15: 1937, 48: 1937, 50: 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 138: 6443, 469: 1937, 504: 6442, 649: 1937, 1037: 6441}, - {1994, 1994, 15: 1994, 48: 1994, 50: 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 469: 1994, 649: 1994, 893: 6448}, - {1936, 1936, 15: 1936, 48: 1936, 50: 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 469: 1936, 649: 1936}, - {198: 6446, 388: 6447, 621: 6445, 647: 6444}, - {1935, 1935, 15: 1935, 48: 1935, 50: 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 469: 1935, 649: 1935}, // 3945 - {1934, 1934, 15: 1934, 48: 1934, 50: 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 469: 1934, 649: 1934}, - {1933, 1933, 15: 1933, 48: 1933, 50: 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 469: 1933, 649: 1933}, - {1932, 1932, 15: 1932, 48: 1932, 50: 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 469: 1932, 649: 1932}, - {1949, 1949, 15: 6163, 48: 6139, 50: 6159, 6152, 6142, 6138, 6146, 6150, 6162, 6145, 6151, 6149, 6147, 6160, 6153, 6141, 6161, 6140, 6143, 6144, 6148, 469: 6154, 649: 6164, 889: 6156, 6155, 6158, 6137, 894: 6157}, - {16: 2078, 81: 2078, 99: 2078, 140: 2078, 664: 2078}, + {207, 207, 13: 207, 46: 207}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 6451, 2727, 2728, 2726}, + {497: 6452}, + {473: 6453}, + {1941, 1941, 15: 1941, 48: 1941, 50: 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 138: 6456, 470: 1941, 505: 6455, 650: 1941, 1038: 6454}, // 3950 - {99: 2073, 140: 6499, 664: 2073, 1326: 6498}, - {496: 6494}, - {160: 6453}, - {2: 1842, 1842, 1842, 1842, 1842, 8: 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 48: 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 563: 4772, 781: 6454}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 4932, 2723, 2724, 2722, 881: 6455}, + {1998, 1998, 15: 1998, 48: 1998, 50: 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 470: 1998, 650: 1998, 894: 6461}, + {1940, 1940, 15: 1940, 48: 1940, 50: 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 470: 1940, 650: 1940}, + {198: 6459, 389: 6460, 640: 6458, 648: 6457}, + {1939, 1939, 15: 1939, 48: 1939, 50: 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 470: 1939, 650: 1939}, + {1938, 1938, 15: 1938, 48: 1938, 50: 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 470: 1938, 650: 1938}, // 3955 - {86: 6459, 88: 6464, 6466, 6460, 6465, 6468, 6462, 6458, 6463, 6467, 6461, 869: 6456, 1098: 6457}, - {2494, 2494, 7: 2494, 86: 2494, 88: 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494}, - {52, 52, 7: 6492, 86: 6459, 88: 6464, 6466, 6460, 6465, 6468, 6462, 6458, 6463, 6467, 6461, 869: 6491}, - {472: 2031, 496: 4230, 732: 6489}, - {472: 2031, 496: 4230, 732: 6487}, + {1937, 1937, 15: 1937, 48: 1937, 50: 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 470: 1937, 650: 1937}, + {1936, 1936, 15: 1936, 48: 1936, 50: 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 470: 1936, 650: 1936}, + {1953, 1953, 15: 6176, 48: 6152, 50: 6172, 6165, 6155, 6151, 6159, 6163, 6175, 6158, 6164, 6162, 6160, 6173, 6166, 6154, 6174, 6153, 6156, 6157, 6161, 470: 6167, 650: 6177, 890: 6169, 6168, 6171, 6150, 895: 6170}, + {16: 2082, 81: 2082, 99: 2082, 140: 2082, 665: 2082}, + {99: 2077, 140: 6512, 665: 2077, 1327: 6511}, // 3960 - {496: 4230, 505: 2031, 732: 6485}, - {496: 4230, 505: 2031, 732: 6483}, - {496: 4230, 505: 2031, 732: 6481}, - {472: 2031, 496: 4230, 732: 6479}, - {472: 2031, 496: 4230, 732: 6477}, + {496: 6507}, + {160: 6466}, + {2: 1846, 1846, 1846, 1846, 1846, 8: 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 48: 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 564: 4782, 782: 6467}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 4942, 2727, 2728, 2726, 882: 6468}, + {86: 6472, 88: 6477, 6479, 6473, 6478, 6481, 6475, 6471, 6476, 6480, 6474, 870: 6469, 1099: 6470}, // 3965 - {472: 2031, 496: 4230, 732: 6475}, - {472: 2031, 496: 4230, 732: 6473}, - {472: 2031, 496: 4230, 732: 6471}, - {472: 2031, 496: 4230, 732: 6469}, - {472: 6470}, + {2498, 2498, 7: 2498, 86: 2498, 88: 2498, 2498, 2498, 2498, 2498, 2498, 2498, 2498, 2498, 2498}, + {52, 52, 7: 6505, 86: 6472, 88: 6477, 6479, 6473, 6478, 6481, 6475, 6471, 6476, 6480, 6474, 870: 6504}, + {473: 2035, 496: 4240, 733: 6502}, + {473: 2035, 496: 4240, 733: 6500}, + {496: 4240, 506: 2035, 733: 6498}, // 3970 - {2481, 2481, 7: 2481, 86: 2481, 88: 2481, 2481, 2481, 2481, 2481, 2481, 2481, 2481, 2481, 2481}, - {472: 6472}, - {2482, 2482, 7: 2482, 86: 2482, 88: 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482}, - {472: 6474}, - {2483, 2483, 7: 2483, 86: 2483, 88: 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483}, + {496: 4240, 506: 2035, 733: 6496}, + {496: 4240, 506: 2035, 733: 6494}, + {473: 2035, 496: 4240, 733: 6492}, + {473: 2035, 496: 4240, 733: 6490}, + {473: 2035, 496: 4240, 733: 6488}, // 3975 - {472: 6476}, - {2484, 2484, 7: 2484, 86: 2484, 88: 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484}, - {472: 6478}, + {473: 2035, 496: 4240, 733: 6486}, + {473: 2035, 496: 4240, 733: 6484}, + {473: 2035, 496: 4240, 733: 6482}, + {473: 6483}, {2485, 2485, 7: 2485, 86: 2485, 88: 2485, 2485, 2485, 2485, 2485, 2485, 2485, 2485, 2485, 2485}, - {472: 6480}, // 3980 + {473: 6485}, {2486, 2486, 7: 2486, 86: 2486, 88: 2486, 2486, 2486, 2486, 2486, 2486, 2486, 2486, 2486, 2486}, - {505: 2697, 729: 2696, 740: 6482}, + {473: 6487}, {2487, 2487, 7: 2487, 86: 2487, 88: 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487}, - {505: 2697, 729: 2696, 740: 6484}, - {2488, 2488, 7: 2488, 86: 2488, 88: 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488}, + {473: 6489}, // 3985 - {505: 2697, 729: 2696, 740: 6486}, + {2488, 2488, 7: 2488, 86: 2488, 88: 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488}, + {473: 6491}, {2489, 2489, 7: 2489, 86: 2489, 88: 2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489}, - {472: 6488}, + {473: 6493}, {2490, 2490, 7: 2490, 86: 2490, 88: 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490}, - {472: 6490}, // 3990 + {506: 2701, 730: 2700, 741: 6495}, {2491, 2491, 7: 2491, 86: 2491, 88: 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491}, - {2493, 2493, 7: 2493, 86: 2493, 88: 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493}, - {86: 6459, 88: 6464, 6466, 6460, 6465, 6468, 6462, 6458, 6463, 6467, 6461, 869: 6493}, + {506: 2701, 730: 2700, 741: 6497}, {2492, 2492, 7: 2492, 86: 2492, 88: 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492}, - {356: 6496, 394: 6497, 402: 6495}, + {506: 2701, 730: 2700, 741: 6499}, // 3995 - {99: 2076, 140: 2076, 664: 2076}, - {99: 2075, 140: 2075, 664: 2075}, - {99: 2074, 140: 2074, 664: 2074}, - {99: 2071, 664: 6503, 1329: 6502}, - {496: 6500}, + {2493, 2493, 7: 2493, 86: 2493, 88: 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493}, + {473: 6501}, + {2494, 2494, 7: 2494, 86: 2494, 88: 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494}, + {473: 6503}, + {2495, 2495, 7: 2495, 86: 2495, 88: 2495, 2495, 2495, 2495, 2495, 2495, 2495, 2495, 2495, 2495}, // 4000 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 3446, 567: 5176, 659: 3447, 2723, 2724, 2722, 734: 5175, 773: 6501}, - {99: 2072, 664: 2072}, - {99: 6507}, - {381: 6504}, - {140: 6505, 347: 6506}, + {2497, 2497, 7: 2497, 86: 2497, 88: 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497}, + {86: 6472, 88: 6477, 6479, 6473, 6478, 6481, 6475, 6471, 6476, 6480, 6474, 870: 6506}, + {2496, 2496, 7: 2496, 86: 2496, 88: 2496, 2496, 2496, 2496, 2496, 2496, 2496, 2496, 2496, 2496}, + {356: 6509, 395: 6510, 403: 6508}, + {99: 2080, 140: 2080, 665: 2080}, // 4005 - {99: 2070}, - {99: 2069}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3875, 2723, 2724, 2722, 733: 6509, 1328: 6508}, - {470: 6511, 475: 2067, 1327: 6510}, - {470: 2068, 475: 2068}, + {99: 2079, 140: 2079, 665: 2079}, + {99: 2078, 140: 2078, 665: 2078}, + {99: 2075, 665: 6516, 1330: 6515}, + {496: 6513}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 3452, 568: 5186, 660: 3453, 2727, 2728, 2726, 735: 5185, 774: 6514}, // 4010 - {475: 6517}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 6513, 2723, 2724, 2722, 1182: 6512}, - {7: 6515, 47: 6514}, - {7: 2065, 47: 2065}, - {475: 2066}, + {99: 2076, 665: 2076}, + {99: 6520}, + {381: 6517}, + {140: 6518, 347: 6519}, + {99: 2074}, // 4015 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 6516, 2723, 2724, 2722}, - {7: 2064, 47: 2064}, - {470: 2551, 2550, 498: 2549, 566: 2548, 642: 2544, 705: 6521, 744: 6519, 2545, 2546, 2547, 2556, 752: 2554, 2553, 2552, 3834, 6520, 6518, 1192: 6522}, - {2086, 2086, 471: 2086}, - {2085, 2085, 471: 2085, 477: 804, 485: 804, 804}, + {99: 2073}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3883, 2727, 2728, 2726, 734: 6522, 1329: 6521}, + {471: 6524, 476: 2071, 1328: 6523}, + {471: 2072, 476: 2072}, + {476: 6530}, // 4020 - {2084, 2084, 471: 2084}, - {2083, 2083, 471: 2083, 477: 803, 485: 803, 803, 490: 2689, 497: 2690, 499: 2686, 763: 3845, 3846}, - {2063, 2063, 471: 6524, 1325: 6523}, - {2080, 2080}, - {136: 6526, 316: 6525}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 6526, 2727, 2728, 2726, 1183: 6525}, + {7: 6528, 47: 6527}, + {7: 2069, 47: 2069}, + {476: 2070}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 6529, 2727, 2728, 2726}, // 4025 - {579: 6529}, - {579: 6527}, - {901: 6528}, - {2061, 2061}, - {901: 6530}, + {7: 2068, 47: 2068}, + {471: 2555, 2554, 499: 2553, 567: 2552, 643: 2548, 706: 6534, 745: 6532, 2549, 2550, 2551, 2560, 753: 2558, 2557, 2556, 3842, 6533, 6531, 1193: 6535}, + {2090, 2090, 472: 2090}, + {2089, 2089, 472: 2089, 478: 806, 486: 806, 806}, + {2088, 2088, 472: 2088}, // 4030 - {2062, 2062}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 5275, 2723, 2724, 2722, 811: 6532}, - {2159, 2159, 14: 2150, 16: 2150, 19: 2150, 476: 4189, 479: 2150, 501: 6536, 503: 2150, 643: 2150, 776: 6535, 788: 6534, 845: 6538, 927: 6537, 1193: 6533}, - {2168, 2168}, - {14: 3790, 16: 4148, 19: 6546, 479: 6545, 503: 3791, 643: 3789, 769: 6544, 776: 6547}, + {2087, 2087, 472: 2087, 478: 805, 486: 805, 805, 491: 2693, 498: 2694, 500: 2690, 764: 3853, 3854}, + {2067, 2067, 472: 6537, 1326: 6536}, + {2084, 2084}, + {136: 6539, 316: 6538}, + {580: 6542}, // 4035 - {2161, 2161, 14: 2161, 16: 2161, 19: 2161, 476: 2161, 479: 2161, 501: 2161, 503: 2161, 643: 2161}, - {217: 6540}, - {2158, 2158, 14: 2150, 16: 2150, 19: 2150, 476: 4189, 479: 2150, 501: 6536, 503: 2150, 643: 2150, 776: 6535, 788: 6534, 845: 6539}, - {2157, 2157, 14: 2157, 16: 2157, 19: 2157, 476: 2157, 479: 2157, 501: 2157, 503: 2157, 643: 2157}, - {2156, 2156, 14: 2156, 16: 2156, 19: 2156, 476: 2156, 479: 2156, 501: 2156, 503: 2156, 643: 2156}, + {580: 6540}, + {902: 6541}, + {2065, 2065}, + {902: 6543}, + {2066, 2066}, // 4040 - {213: 6541}, - {505: 2697, 729: 2696, 740: 6542}, - {2467, 2467, 14: 2467, 16: 2467, 19: 2467, 178: 4908, 476: 2467, 479: 2467, 501: 2467, 503: 2467, 643: 2467, 1072: 6543}, - {2160, 2160, 14: 2160, 16: 2160, 19: 2160, 476: 2160, 479: 2160, 501: 2160, 503: 2160, 643: 2160}, - {2: 2031, 2031, 2031, 2031, 2031, 8: 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 48: 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 472: 2031, 496: 4230, 541: 2031, 732: 6552}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 5285, 2727, 2728, 2726, 812: 6545}, + {2163, 2163, 14: 2154, 16: 2154, 19: 2154, 477: 4199, 480: 2154, 502: 6549, 504: 2154, 644: 2154, 777: 6548, 789: 6547, 846: 6551, 928: 6550, 1194: 6546}, + {2172, 2172}, + {14: 3798, 16: 4158, 19: 6559, 480: 6558, 504: 3799, 644: 3797, 770: 6557, 777: 6560}, + {2165, 2165, 14: 2165, 16: 2165, 19: 2165, 477: 2165, 480: 2165, 502: 2165, 504: 2165, 644: 2165}, // 4045 - {2: 2031, 2031, 2031, 2031, 2031, 8: 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 48: 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 472: 2031, 496: 4230, 541: 2031, 732: 6550}, - {472: 2031, 496: 4230, 732: 6548}, - {2162, 2162, 14: 2162, 16: 2162, 19: 2162, 476: 2162, 479: 2162, 501: 2162, 503: 2162, 643: 2162}, - {472: 4248, 1035: 6549}, - {2163, 2163, 14: 2163, 16: 2163, 19: 2163, 476: 2163, 479: 2163, 501: 2163, 503: 2163, 643: 2163}, + {217: 6553}, + {2162, 2162, 14: 2154, 16: 2154, 19: 2154, 477: 4199, 480: 2154, 502: 6549, 504: 2154, 644: 2154, 777: 6548, 789: 6547, 846: 6552}, + {2161, 2161, 14: 2161, 16: 2161, 19: 2161, 477: 2161, 480: 2161, 502: 2161, 504: 2161, 644: 2161}, + {2160, 2160, 14: 2160, 16: 2160, 19: 2160, 477: 2160, 480: 2160, 502: 2160, 504: 2160, 644: 2160}, + {213: 6554}, // 4050 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 3446, 541: 3445, 659: 3447, 2723, 2724, 2722, 734: 3444, 867: 6551}, - {2164, 2164, 14: 2164, 16: 2164, 19: 2164, 476: 2164, 479: 2164, 501: 2164, 503: 2164, 643: 2164}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 3446, 541: 3715, 659: 3447, 2723, 2724, 2722, 734: 3714, 803: 6553}, - {2165, 2165, 14: 2165, 16: 2165, 19: 2165, 476: 2165, 479: 2165, 501: 2165, 503: 2165, 643: 2165}, - {2: 1842, 1842, 1842, 1842, 1842, 8: 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 48: 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 563: 4772, 781: 6555}, + {506: 2701, 730: 2700, 741: 6555}, + {2471, 2471, 14: 2471, 16: 2471, 19: 2471, 178: 4918, 477: 2471, 480: 2471, 502: 2471, 504: 2471, 644: 2471, 1073: 6556}, + {2164, 2164, 14: 2164, 16: 2164, 19: 2164, 477: 2164, 480: 2164, 502: 2164, 504: 2164, 644: 2164}, + {2: 2035, 2035, 2035, 2035, 2035, 8: 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 48: 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 473: 2035, 496: 4240, 541: 2035, 733: 6565}, + {2: 2035, 2035, 2035, 2035, 2035, 8: 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 48: 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 473: 2035, 496: 4240, 541: 2035, 733: 6563}, // 4055 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 6556, 2723, 2724, 2722}, - {82: 4805, 469: 1825, 478: 4804, 853: 6558, 1225: 6557}, - {469: 6559}, - {469: 1824}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3875, 2723, 2724, 2722, 733: 6560}, + {473: 2035, 496: 4240, 733: 6561}, + {2166, 2166, 14: 2166, 16: 2166, 19: 2166, 477: 2166, 480: 2166, 502: 2166, 504: 2166, 644: 2166}, + {473: 4258, 1036: 6562}, + {2167, 2167, 14: 2167, 16: 2167, 19: 2167, 477: 2167, 480: 2167, 502: 2167, 504: 2167, 644: 2167}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 3452, 541: 3451, 660: 3453, 2727, 2728, 2726, 735: 3450, 868: 6564}, // 4060 - {470: 6561}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 470: 4566, 659: 4095, 2723, 2724, 2722, 739: 4565, 822: 4564, 831: 6562}, - {7: 4575, 47: 6563}, - {1836, 1836, 4: 1836, 17: 1836, 81: 1836, 1836, 1836, 1836, 1836, 87: 1836, 471: 1836, 478: 1836, 493: 1836, 875: 6564}, - {2179, 2179, 4: 4801, 17: 4798, 81: 4184, 4805, 4665, 4378, 4666, 87: 4377, 471: 4800, 478: 4804, 493: 4185, 851: 4802, 853: 4799, 864: 4803, 6338, 874: 4797, 878: 6337, 1059: 6565}, + {2168, 2168, 14: 2168, 16: 2168, 19: 2168, 477: 2168, 480: 2168, 502: 2168, 504: 2168, 644: 2168}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 3452, 541: 3723, 660: 3453, 2727, 2728, 2726, 735: 3722, 804: 6566}, + {2169, 2169, 14: 2169, 16: 2169, 19: 2169, 477: 2169, 480: 2169, 502: 2169, 504: 2169, 644: 2169}, + {2: 1846, 1846, 1846, 1846, 1846, 8: 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 48: 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 564: 4782, 782: 6568}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 6569, 2727, 2728, 2726}, // 4065 - {2186, 2186}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 6567, 2723, 2724, 2722}, - {470: 6568}, - {228: 4834, 236: 4836, 239: 4835, 1134: 6569}, - {47: 6570}, + {82: 4815, 470: 1829, 479: 4814, 854: 6571, 1226: 6570}, + {470: 6572}, + {470: 1828}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3883, 2727, 2728, 2726, 734: 6573}, + {471: 6574}, // 4070 - {469: 6571}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3875, 2723, 2724, 2722, 733: 6572}, - {470: 6573}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 4095, 2723, 2724, 2722, 739: 4096, 804: 6574}, - {7: 4098, 47: 6575}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 471: 4576, 660: 4105, 2727, 2728, 2726, 740: 4575, 824: 4574, 832: 6575}, + {7: 4585, 47: 6576}, + {1840, 1840, 4: 1840, 17: 1840, 81: 1840, 1840, 1840, 1840, 1840, 87: 1840, 472: 1840, 479: 1840, 494: 1840, 876: 6577}, + {2183, 2183, 4: 4811, 17: 4808, 81: 4194, 4815, 4675, 4388, 4676, 87: 4387, 472: 4810, 479: 4814, 494: 4195, 852: 4812, 854: 4809, 865: 4813, 6351, 875: 4807, 879: 6350, 1060: 6578}, + {2190, 2190}, // 4075 - {2188, 2188}, - {2288, 2288}, - {2313, 2313}, - {2319, 2319, 471: 6580, 667: 6579}, - {151: 6587, 683: 6586}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 6580, 2727, 2728, 2726}, + {471: 6581}, + {228: 4844, 236: 4846, 239: 4845, 1135: 6582}, + {47: 6583}, + {470: 6584}, // 4080 - {317: 6582, 325: 6581}, - {50: 6585}, - {324: 6583}, - {151: 6584}, - {2316, 2316}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3883, 2727, 2728, 2726, 734: 6585}, + {471: 6586}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 4105, 2727, 2728, 2726, 740: 4106, 805: 6587}, + {7: 4108, 47: 6588}, + {2192, 2192}, // 4085 + {2292, 2292}, {2317, 2317}, - {2318, 2318}, - {2315, 2315, 669: 5350, 919: 6588}, - {2314, 2314}, - {2321, 2321}, + {2323, 2323, 472: 6593, 668: 6592}, + {151: 6600, 684: 6599}, + {317: 6595, 325: 6594}, // 4090 + {50: 6598}, + {324: 6596}, + {151: 6597}, {2320, 2320}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3875, 2723, 2724, 2722, 733: 6604, 791: 6603}, - {566: 6593}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3875, 2723, 2724, 2722, 733: 6594}, - {488: 6596, 645: 6595}, + {2321, 2321}, // 4095 - {897, 897, 2963, 2808, 2844, 2965, 2735, 897, 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 471: 897, 581: 4956, 659: 4955, 2723, 2724, 2722, 852: 6601}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 4696, 2723, 2724, 2722, 785: 6597}, - {7: 4697, 645: 6598}, - {897, 897, 2963, 2808, 2844, 2965, 2735, 897, 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 471: 897, 581: 4956, 659: 4955, 2723, 2724, 2722, 852: 6599}, - {2337, 2337, 7: 4958, 471: 4939, 799: 6600}, + {2322, 2322}, + {2319, 2319, 670: 5360, 920: 6601}, + {2318, 2318}, + {2325, 2325}, + {2324, 2324}, // 4100 - {2345, 2345}, - {2337, 2337, 7: 4958, 471: 4939, 799: 6602}, - {2348, 2348}, - {2340, 2340, 7: 3878, 161: 6624, 471: 2340, 647: 6623, 976: 6634}, - {1042, 1042, 7: 1042, 98: 6609, 161: 1042, 471: 1042, 488: 6606, 645: 6605, 647: 1042, 650: 6607, 665: 6608}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3883, 2727, 2728, 2726, 734: 6617, 792: 6616}, + {567: 6606}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3883, 2727, 2728, 2726, 734: 6607}, + {489: 6609, 646: 6608}, + {899, 899, 2967, 2812, 2848, 2969, 2739, 899, 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 472: 899, 584: 4966, 660: 4965, 2727, 2728, 2726, 853: 6614}, // 4105 - {897, 897, 2963, 2808, 2844, 2965, 2735, 897, 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 471: 897, 581: 4956, 659: 4955, 2723, 2724, 2722, 852: 6632}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 4696, 2723, 2724, 2722, 785: 6619}, - {254: 6615}, - {254: 6612}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 5771, 2723, 2724, 2722, 872: 6610}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 4706, 2727, 2728, 2726, 786: 6610}, + {7: 4707, 646: 6611}, + {899, 899, 2967, 2812, 2848, 2969, 2739, 899, 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 472: 899, 584: 4966, 660: 4965, 2727, 2728, 2726, 853: 6612}, + {2341, 2341, 7: 4968, 472: 4949, 801: 6613}, + {2349, 2349}, // 4110 - {2337, 2337, 7: 5773, 471: 4939, 799: 6611}, - {2342, 2342}, - {469: 6613}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 5771, 2723, 2724, 2722, 872: 6614}, - {2343, 2343, 7: 5773}, + {2341, 2341, 7: 4968, 472: 4949, 801: 6615}, + {2352, 2352}, + {2344, 2344, 7: 3886, 161: 6637, 472: 2344, 648: 6636, 977: 6647}, + {1044, 1044, 7: 1044, 98: 6622, 161: 1044, 472: 1044, 489: 6619, 646: 6618, 648: 1044, 651: 6620, 666: 6621}, + {899, 899, 2967, 2812, 2848, 2969, 2739, 899, 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 472: 899, 584: 4966, 660: 4965, 2727, 2728, 2726, 853: 6645}, // 4115 - {469: 6616}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 5771, 2723, 2724, 2722, 872: 6617}, - {2337, 2337, 7: 5773, 471: 4939, 799: 6618}, - {2344, 2344}, - {2340, 2340, 7: 4697, 98: 6622, 161: 6624, 471: 2340, 645: 6621, 647: 6623, 976: 6620}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 4706, 2727, 2728, 2726, 786: 6632}, + {254: 6628}, + {254: 6625}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 5783, 2727, 2728, 2726, 873: 6623}, + {2341, 2341, 7: 5785, 472: 4949, 801: 6624}, // 4120 - {2337, 2337, 471: 4939, 799: 6631}, - {897, 897, 2963, 2808, 2844, 2965, 2735, 897, 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 471: 897, 581: 4956, 659: 4955, 2723, 2724, 2722, 852: 6629}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 5771, 2723, 2724, 2722, 872: 6627}, - {98: 6626}, - {98: 6625}, + {2346, 2346}, + {470: 6626}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 5783, 2727, 2728, 2726, 873: 6627}, + {2347, 2347, 7: 5785}, + {470: 6629}, // 4125 - {2338, 2338, 471: 2338}, - {2339, 2339, 471: 2339}, - {2337, 2337, 7: 5773, 471: 4939, 799: 6628}, - {2341, 2341}, - {2337, 2337, 7: 4958, 471: 4939, 799: 6630}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 5783, 2727, 2728, 2726, 873: 6630}, + {2341, 2341, 7: 5785, 472: 4949, 801: 6631}, + {2348, 2348}, + {2344, 2344, 7: 4707, 98: 6635, 161: 6637, 472: 2344, 646: 6634, 648: 6636, 977: 6633}, + {2341, 2341, 472: 4949, 801: 6644}, // 4130 - {2346, 2346}, - {2347, 2347}, - {2337, 2337, 7: 4958, 471: 4939, 799: 6633}, - {2349, 2349}, - {2337, 2337, 471: 4939, 799: 6635}, + {899, 899, 2967, 2812, 2848, 2969, 2739, 899, 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 472: 899, 584: 4966, 660: 4965, 2727, 2728, 2726, 853: 6642}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 5783, 2727, 2728, 2726, 873: 6640}, + {98: 6639}, + {98: 6638}, + {2342, 2342, 472: 2342}, // 4135 + {2343, 2343, 472: 2343}, + {2341, 2341, 7: 5785, 472: 4949, 801: 6641}, + {2345, 2345}, + {2341, 2341, 7: 4968, 472: 4949, 801: 6643}, {2350, 2350}, - {566: 6641}, - {491: 6639}, - {566: 2352}, - {488: 6640, 566: 2353}, // 4140 - {566: 2351}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3875, 2723, 2724, 2722, 733: 6642}, - {488: 5344, 552: 911, 645: 911, 655: 911, 855: 6643}, - {552: 6646, 645: 6645, 655: 6647, 1129: 6644}, - {2358, 2358}, + {2351, 2351}, + {2341, 2341, 7: 4968, 472: 4949, 801: 6646}, + {2353, 2353}, + {2341, 2341, 472: 4949, 801: 6648}, + {2354, 2354}, // 4145 - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 6654, 2723, 2724, 2722}, - {470: 3851, 835: 6649}, - {470: 3851, 835: 5912, 970: 6648}, - {2355, 2355, 7: 5913}, - {502: 6650}, + {567: 6654}, + {492: 6652}, + {567: 2356}, + {489: 6653, 567: 2357}, + {567: 2355}, // 4150 - {470: 3851, 835: 6651}, - {86: 6652}, - {505: 2697, 729: 4005, 760: 6653}, - {2356, 2356}, - {552: 6646, 655: 6647, 1129: 6655}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3883, 2727, 2728, 2726, 734: 6655}, + {489: 5354, 553: 913, 646: 913, 657: 913, 856: 6656}, + {553: 6659, 646: 6658, 657: 6660, 1130: 6657}, + {2362, 2362}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 6667, 2727, 2728, 2726}, // 4155 - {2357, 2357}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3875, 2723, 2724, 2722, 733: 6657}, - {2360, 2360, 646: 6659, 1209: 6658}, - {2361, 2361}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 6660, 2723, 2724, 2722}, + {471: 3859, 836: 6662}, + {471: 3859, 836: 5924, 971: 6661}, + {2359, 2359, 7: 5925}, + {503: 6663}, + {471: 3859, 836: 6664}, // 4160 - {2359, 2359}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 655: 6662, 659: 3875, 2723, 2724, 2722, 733: 6663}, - {260: 6665}, - {2363, 2363, 505: 2697, 729: 4005, 760: 6664}, - {2362, 2362}, + {86: 6665}, + {506: 2701, 730: 4015, 761: 6666}, + {2360, 2360}, + {553: 6659, 657: 6660, 1130: 6668}, + {2361, 2361}, // 4165 - {505: 2697, 729: 4005, 760: 6666}, - {2364, 2364}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3875, 2723, 2724, 2722, 733: 6678, 1144: 6677, 1314: 6676}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 3446, 567: 5176, 659: 3447, 2723, 2724, 2722, 734: 5175, 773: 6671, 1149: 6670, 1319: 6669}, - {2368, 2368, 7: 6674}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3883, 2727, 2728, 2726, 734: 6670}, + {2364, 2364, 647: 6672, 1210: 6671}, + {2365, 2365}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 6673, 2727, 2728, 2726}, + {2363, 2363}, // 4170 - {2367, 2367, 7: 2367}, - {646: 6672}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 3446, 567: 5176, 659: 3447, 2723, 2724, 2722, 734: 5175, 773: 6673}, - {2365, 2365, 7: 2365}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 3446, 567: 5176, 659: 3447, 2723, 2724, 2722, 734: 5175, 773: 6671, 1149: 6675}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 657: 6675, 660: 3883, 2727, 2728, 2726, 734: 6676}, + {260: 6678}, + {2367, 2367, 506: 2701, 730: 4015, 761: 6677}, + {2366, 2366}, + {506: 2701, 730: 4015, 761: 6679}, // 4175 - {2366, 2366, 7: 2366}, - {2372, 2372, 7: 6681}, + {2368, 2368}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3883, 2727, 2728, 2726, 734: 6691, 1145: 6690, 1315: 6689}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 3452, 568: 5186, 660: 3453, 2727, 2728, 2726, 735: 5185, 774: 6684, 1150: 6683, 1320: 6682}, + {2372, 2372, 7: 6687}, {2371, 2371, 7: 2371}, - {646: 6679}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3875, 2723, 2724, 2722, 733: 6680}, // 4180 + {647: 6685}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 3452, 568: 5186, 660: 3453, 2727, 2728, 2726, 735: 5185, 774: 6686}, {2369, 2369, 7: 2369}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3875, 2723, 2724, 2722, 733: 6678, 1144: 6682}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 3452, 568: 5186, 660: 3453, 2727, 2728, 2726, 735: 5185, 774: 6684, 1150: 6688}, {2370, 2370, 7: 2370}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 2150, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 476: 4189, 479: 2150, 501: 6536, 503: 2150, 643: 2150, 659: 5275, 2723, 2724, 2722, 776: 6535, 788: 6534, 811: 6732, 845: 6538, 927: 6733}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 6722, 2723, 2724, 2722}, // 4185 - {2: 1844, 1844, 1844, 1844, 1844, 8: 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 48: 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 472: 1844, 563: 4400, 567: 1844, 777: 6711}, - {274: 6705, 1227: 6704}, - {160: 6700}, - {2: 1844, 1844, 1844, 1844, 1844, 8: 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 48: 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 563: 4400, 777: 6689}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 3875, 2723, 2724, 2722, 733: 6690}, + {2376, 2376, 7: 6694}, + {2375, 2375, 7: 2375}, + {647: 6692}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3883, 2727, 2728, 2726, 734: 6693}, + {2373, 2373, 7: 2373}, // 4190 - {70: 6367, 6364, 6370, 6371, 6372, 6365, 6363, 6373, 6369, 6366, 6694, 653: 6368, 908: 6693, 982: 6692, 1162: 6691}, - {25, 25, 70: 6367, 6364, 6370, 6371, 6372, 6365, 6363, 6373, 6369, 6366, 6694, 653: 6368, 908: 6693, 982: 6699}, - {24, 24, 70: 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 653: 24}, - {22, 22, 70: 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 653: 22}, - {21, 21, 70: 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 471: 6696, 482: 2031, 2031, 496: 4230, 505: 2031, 653: 21, 732: 6695}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3883, 2727, 2728, 2726, 734: 6691, 1145: 6695}, + {2374, 2374, 7: 2374}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 2154, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 477: 4199, 480: 2154, 502: 6549, 504: 2154, 644: 2154, 660: 5285, 2727, 2728, 2726, 777: 6548, 789: 6547, 812: 6745, 846: 6551, 928: 6746}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 6735, 2727, 2728, 2726}, + {2: 1848, 1848, 1848, 1848, 1848, 8: 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 48: 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 473: 1848, 564: 4410, 568: 1848, 778: 6724}, // 4195 - {482: 4009, 4008, 505: 2697, 729: 4005, 760: 4007, 809: 6698}, - {482: 4009, 4008, 505: 2697, 729: 4005, 760: 4007, 809: 6697}, - {19, 19, 70: 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 653: 19}, - {20, 20, 70: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 653: 20}, - {23, 23, 70: 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 653: 23}, + {274: 6718, 1228: 6717}, + {160: 6713}, + {2: 1848, 1848, 1848, 1848, 1848, 8: 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 48: 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 564: 4410, 778: 6702}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 3883, 2727, 2728, 2726, 734: 6703}, + {70: 6380, 6377, 6383, 6384, 6385, 6378, 6376, 6386, 6382, 6379, 6707, 654: 6381, 909: 6706, 983: 6705, 1163: 6704}, // 4200 - {2: 1844, 1844, 1844, 1844, 1844, 8: 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 48: 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 563: 4400, 777: 6701}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 3335, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 659: 4932, 2723, 2724, 2722, 881: 6702}, - {86: 6459, 88: 6464, 6466, 6460, 6465, 6468, 6462, 6458, 6463, 6467, 6461, 869: 6456, 1098: 6703}, - {51, 51, 7: 6492, 86: 6459, 88: 6464, 6466, 6460, 6465, 6468, 6462, 6458, 6463, 6467, 6461, 869: 6491}, - {237, 237}, + {25, 25, 70: 6380, 6377, 6383, 6384, 6385, 6378, 6376, 6386, 6382, 6379, 6707, 654: 6381, 909: 6706, 983: 6712}, + {24, 24, 70: 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 654: 24}, + {22, 22, 70: 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 654: 22}, + {21, 21, 70: 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 472: 6709, 483: 2035, 2035, 496: 4240, 506: 2035, 654: 21, 733: 6708}, + {483: 4018, 4019, 506: 2701, 730: 4015, 761: 4017, 810: 6711}, // 4205 - {397: 6706}, - {236, 236, 70: 6707}, - {152: 6708}, - {469: 6709}, - {201: 6710}, + {483: 4018, 4019, 506: 2701, 730: 4015, 761: 4017, 810: 6710}, + {19, 19, 70: 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 654: 19}, + {20, 20, 70: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 654: 20}, + {23, 23, 70: 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 654: 23}, + {2: 1848, 1848, 1848, 1848, 1848, 8: 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 48: 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 564: 4410, 778: 6714}, // 4210 - {235, 235}, - {2: 2963, 2808, 2844, 2965, 2735, 8: 2781, 2736, 2867, 2982, 2975, 3328, 3323, 2847, 3129, 2849, 2823, 2767, 2770, 2759, 2792, 2851, 2852, 2959, 2846, 2983, 3086, 3085, 2734, 2845, 2848, 2859, 2799, 2803, 2855, 2968, 2814, 2895, 2732, 2733, 2894, 2967, 2731, 2980, 2940, 48: 3051, 2813, 2816, 3034, 3031, 3023, 3035, 3038, 3039, 3036, 3040, 3041, 3037, 3030, 3042, 3025, 3026, 3029, 3032, 3033, 3043, 3331, 2881, 2817, 3010, 3009, 3011, 3006, 3005, 3012, 3007, 3008, 2809, 2925, 2995, 3058, 2993, 3059, 3098, 2994, 3180, 3184, 3172, 3183, 3185, 3175, 3181, 3182, 3186, 3179, 2750, 2884, 2821, 3321, 2744, 2889, 2981, 3332, 3325, 2779, 3344, 2992, 2822, 3327, 3342, 3343, 3341, 3337, 2984, 2985, 2986, 2987, 2988, 2989, 2991, 2818, 3333, 2910, 2914, 2915, 2916, 2917, 2905, 2934, 2977, 2936, 2752, 2935, 2794, 2906, 3056, 2886, 2926, 2789, 2842, 3001, 2863, 2753, 2758, 2769, 2784, 3320, 2996, 2866, 2811, 2908, 2833, 2739, 2885, 2768, 2788, 3160, 3045, 3133, 2922, 2831, 6712, 2861, 2798, 3131, 2802, 2810, 2832, 3046, 2743, 2761, 3324, 2782, 2774, 2860, 2999, 3015, 2943, 3052, 3053, 3017, 2880, 3054, 2973, 3128, 3080, 3013, 2812, 2913, 3329, 2971, 2870, 2728, 2754, 2875, 2765, 2766, 2877, 2773, 2783, 2786, 3024, 2836, 2938, 3130, 2904, 2873, 2933, 2976, 2862, 2998, 3081, 2820, 3091, 3092, 3330, 2972, 3061, 3021, 3062, 2882, 2944, 2742, 3109, 3063, 3066, 2748, 3047, 3067, 3340, 2755, 2946, 3111, 3069, 2942, 2763, 3071, 2955, 2979, 2966, 2764, 3115, 3073, 3101, 2974, 2777, 3004, 3167, 3326, 2787, 2790, 2956, 3002, 3120, 2997, 3121, 2950, 3075, 3074, 3000, 3057, 2887, 3345, 3076, 3077, 2891, 2948, 3078, 3055, 2806, 2807, 2921, 3027, 2923, 3134, 3079, 2969, 2970, 2911, 2815, 2952, 3094, 3082, 2730, 3143, 2951, 3150, 3151, 3152, 3153, 3155, 3154, 3156, 3157, 3093, 2828, 2953, 3177, 3176, 2834, 2725, 2726, 3003, 3020, 2737, 3022, 3048, 2729, 2740, 2741, 3064, 3065, 2745, 2932, 2746, 2747, 2919, 3336, 3068, 2864, 2751, 2756, 2757, 3070, 3072, 2876, 3116, 2878, 2771, 2772, 2888, 2776, 2939, 3161, 2778, 2949, 2883, 2857, 3088, 2957, 2978, 2941, 2872, 3122, 2927, 2945, 2990, 2795, 2793, 2869, 2958, 2850, 3014, 2928, 2853, 2854, 3346, 2890, 2797, 2819, 3095, 3162, 2800, 2961, 2964, 3016, 3050, 3096, 3060, 2900, 2901, 2907, 3126, 3099, 3127, 3100, 3028, 3102, 2931, 2868, 2962, 2920, 3087, 3084, 3083, 3135, 2947, 3049, 2960, 3147, 3090, 2929, 2824, 2825, 3170, 3158, 2829, 2858, 2865, 2930, 3097, 2937, 3349, 2839, 3104, 3105, 3322, 3106, 3107, 3108, 3163, 3110, 3112, 3113, 3114, 2775, 2924, 3164, 2893, 3117, 2780, 3171, 3350, 3119, 3355, 3354, 3347, 3173, 3174, 3124, 3123, 2796, 3125, 3132, 2899, 2804, 2805, 3044, 2918, 3338, 3339, 3348, 2912, 2840, 2954, 2871, 2874, 3165, 3139, 3140, 3141, 3142, 3166, 3351, 3137, 3138, 2892, 3089, 3352, 3353, 3159, 3144, 3145, 3146, 3178, 3334, 472: 3446, 567: 5176, 659: 3447, 2723, 2724, 2722, 734: 5175, 773: 5193, 886: 5194, 917: 6713}, - {1696, 1696, 7: 1696, 13: 1696, 46: 1696, 142: 1696, 470: 6717, 1696, 565: 1696, 658: 1696, 663: 1696}, - {223, 223, 7: 5196, 13: 223, 46: 223, 471: 223, 658: 5240, 955: 5239, 6714}, - {231, 231, 13: 231, 46: 231, 471: 6409, 1004: 6715}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 3341, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 660: 4942, 2727, 2728, 2726, 882: 6715}, + {86: 6472, 88: 6477, 6479, 6473, 6478, 6481, 6475, 6471, 6476, 6480, 6474, 870: 6469, 1099: 6716}, + {51, 51, 7: 6505, 86: 6472, 88: 6477, 6479, 6473, 6478, 6481, 6475, 6471, 6476, 6480, 6474, 870: 6504}, + {237, 237}, + {398: 6719}, // 4215 - {210, 210, 13: 6426, 46: 6424, 948: 6425, 6423, 1096: 6422, 6716}, - {239, 239}, - {47: 6718}, - {142: 6719}, - {655: 6720}, + {236, 236, 70: 6720}, + {152: 6721}, + {470: 6722}, + {201: 6723}, + {235, 235}, // 4220 - {472: 5209, 888: 6721}, - {238, 238}, - {1937, 1937, 15: 1937, 48: 1937, 50: 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 138: 6443, 469: 1937, 504: 6442, 649: 1937, 1037: 6723}, - {1994, 1994, 15: 1994, 48: 1994, 50: 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 469: 1994, 649: 1994, 893: 6724}, - {1931, 1931, 15: 6163, 48: 6139, 50: 6159, 6152, 6142, 6138, 6146, 6150, 6162, 6145, 6151, 6149, 6147, 6160, 6153, 6141, 6161, 6140, 6143, 6144, 6148, 6726, 469: 6154, 649: 6164, 889: 6156, 6155, 6158, 6137, 894: 6157, 1221: 6725}, + {2: 2967, 2812, 2848, 2969, 2739, 8: 2785, 2740, 2871, 2986, 2979, 3334, 3329, 2851, 3134, 2853, 2827, 2771, 2774, 2763, 2796, 2855, 2856, 2963, 2850, 2987, 3091, 3090, 2738, 2849, 2852, 2863, 2803, 2807, 2859, 2972, 2818, 2899, 2736, 2737, 2898, 2971, 2735, 2984, 2944, 48: 3055, 2817, 2820, 3038, 3035, 3027, 3039, 3042, 3043, 3040, 3044, 3045, 3041, 3034, 3046, 3029, 3030, 3033, 3036, 3037, 3047, 3337, 2885, 2821, 3014, 3013, 3015, 3010, 3009, 3016, 3011, 3012, 2813, 2929, 2999, 3062, 2997, 3063, 3103, 2998, 3185, 3189, 3177, 3188, 3190, 3180, 3186, 3187, 3191, 3184, 2754, 2888, 2825, 3338, 3327, 2748, 3331, 2893, 2985, 2783, 3350, 2996, 3333, 3348, 3349, 3347, 3343, 2988, 2989, 2990, 2991, 2992, 2993, 2995, 2826, 3339, 2822, 2914, 2918, 2919, 2920, 2921, 2909, 2938, 2981, 2940, 2756, 2939, 2798, 2910, 3060, 2890, 2930, 2793, 2846, 3005, 2867, 2757, 2762, 2773, 2788, 3326, 3000, 2870, 2815, 2912, 2837, 2743, 2889, 2772, 2792, 3165, 3049, 3138, 2926, 2835, 6725, 2865, 2802, 3136, 2806, 2814, 2836, 3050, 2747, 2765, 3330, 2786, 2778, 2864, 3003, 3019, 2947, 3056, 3057, 3021, 2884, 3058, 2977, 3133, 3084, 3017, 2816, 2917, 3335, 2975, 2874, 2732, 2758, 2879, 2769, 2770, 2881, 2777, 2787, 2790, 3028, 2840, 2942, 3135, 2908, 2877, 2937, 2980, 2866, 3002, 3086, 2824, 3096, 3097, 3336, 2976, 3065, 3025, 3066, 2886, 2948, 2746, 3114, 3067, 3070, 2752, 3051, 3071, 3346, 2759, 2950, 3116, 3073, 2946, 2767, 3075, 2959, 2983, 2970, 2768, 3120, 3077, 3106, 2978, 2781, 3008, 3172, 3332, 2791, 2794, 2960, 3006, 3125, 3001, 3126, 2954, 3079, 3078, 3004, 3061, 2891, 3351, 3080, 3081, 2895, 2952, 3082, 3059, 2810, 2811, 2925, 3031, 2927, 3139, 3083, 2973, 2974, 2915, 2819, 2956, 3099, 3087, 2734, 3148, 2955, 3155, 3156, 3157, 3158, 3160, 3159, 3161, 3162, 3098, 2832, 2957, 3182, 3181, 2838, 2729, 2730, 3007, 3024, 2741, 3026, 3052, 2733, 2744, 2745, 3068, 3069, 2749, 2936, 2750, 2751, 2923, 3342, 3072, 2868, 2755, 2760, 2761, 3074, 3076, 2880, 3121, 2882, 2775, 2776, 2892, 2780, 2943, 3166, 2782, 2953, 2887, 2861, 3093, 2961, 2982, 2945, 2876, 3127, 2931, 2949, 2994, 2799, 2797, 2873, 2962, 2854, 3018, 2932, 2857, 2858, 3352, 2894, 2801, 2823, 3100, 3167, 2804, 2965, 2968, 3020, 3054, 3101, 3064, 2904, 2905, 2911, 3131, 3104, 3132, 3105, 3032, 3107, 2935, 2872, 3085, 2966, 2924, 3092, 3089, 3088, 3140, 2951, 3053, 2964, 3152, 3095, 2933, 2828, 2829, 3175, 3163, 2833, 2862, 2869, 2934, 3102, 2941, 3355, 2843, 3109, 3110, 3328, 3111, 3112, 3113, 3168, 3115, 3117, 3118, 3119, 2779, 2928, 3169, 2897, 3122, 2784, 3176, 3356, 3124, 3361, 3360, 3353, 3178, 3179, 3129, 3128, 2800, 3130, 3137, 2903, 2808, 2809, 3048, 2922, 3344, 3345, 3354, 2916, 2844, 2958, 2875, 2878, 3170, 3144, 3145, 3146, 3147, 3171, 3357, 3142, 3143, 2896, 3094, 3358, 3359, 3164, 3149, 3150, 3151, 3183, 3340, 473: 3452, 568: 5186, 660: 3453, 2727, 2728, 2726, 735: 5185, 774: 5203, 887: 5204, 918: 6726}, + {1700, 1700, 7: 1700, 13: 1700, 46: 1700, 142: 1700, 471: 6730, 1700, 566: 1700, 659: 1700, 664: 1700}, + {223, 223, 7: 5206, 13: 223, 46: 223, 472: 223, 659: 5250, 956: 5249, 6727}, + {231, 231, 13: 231, 46: 231, 472: 6422, 1005: 6728}, + {210, 210, 13: 6439, 46: 6437, 949: 6438, 6436, 1097: 6435, 6729}, // 4225 - {1946, 1946}, - {176: 6728, 647: 6727}, - {559, 559, 566: 6110, 964: 6730}, - {559, 559, 566: 6110, 964: 6729}, - {1929, 1929}, + {239, 239}, + {47: 6731}, + {142: 6732}, + {657: 6733}, + {473: 5219, 889: 6734}, // 4230 - {1930, 1930}, - {14: 1406, 16: 1406, 19: 1406, 160: 4925, 476: 1406, 479: 1406, 501: 1406, 503: 1406, 643: 1406}, - {14: 2150, 16: 2150, 19: 2150, 476: 4189, 479: 2150, 501: 6536, 503: 2150, 643: 2150, 776: 6535, 788: 6534, 845: 6538, 927: 6734}, - {2169, 2169, 14: 2150, 16: 2150, 19: 2150, 476: 4189, 479: 2150, 501: 6536, 503: 2150, 643: 2150, 776: 6535, 788: 6534, 845: 6539}, - {2170, 2170, 14: 2150, 16: 2150, 19: 2150, 476: 4189, 479: 2150, 501: 6536, 503: 2150, 643: 2150, 776: 6535, 788: 6534, 845: 6539}, + {238, 238}, + {1941, 1941, 15: 1941, 48: 1941, 50: 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 138: 6456, 470: 1941, 505: 6455, 650: 1941, 1038: 6736}, + {1998, 1998, 15: 1998, 48: 1998, 50: 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 470: 1998, 650: 1998, 894: 6737}, + {1935, 1935, 15: 6176, 48: 6152, 50: 6172, 6165, 6155, 6151, 6159, 6163, 6175, 6158, 6164, 6162, 6160, 6173, 6166, 6154, 6174, 6153, 6156, 6157, 6161, 6739, 470: 6167, 650: 6177, 890: 6169, 6168, 6171, 6150, 895: 6170, 1222: 6738}, + {1950, 1950}, // 4235 - {2029, 2029, 48: 2531, 69: 2650, 71: 2510, 80: 2542, 145: 2512, 152: 2540, 2525, 155: 2509, 168: 2536, 202: 2561, 207: 2663, 210: 2505, 220: 2560, 2527, 2659, 2511, 238: 2539, 243: 2515, 248: 2537, 250: 2506, 253: 2543, 271: 2529, 275: 2528, 282: 2541, 284: 2507, 287: 2530, 298: 2520, 470: 2551, 2550, 493: 2658, 498: 2549, 501: 2559, 504: 2535, 522: 2653, 526: 2523, 564: 2534, 566: 2548, 642: 2544, 645: 2662, 649: 2508, 2652, 657: 2503, 665: 2514, 670: 2513, 675: 2558, 682: 2504, 705: 2555, 735: 2516, 744: 2557, 2545, 2546, 2547, 2556, 752: 2554, 2553, 2552, 2519, 2630, 2629, 762: 2517, 768: 2651, 770: 2611, 2622, 2641, 775: 2518, 779: 2577, 795: 2526, 802: 2565, 805: 2656, 840: 2572, 844: 2575, 849: 2654, 854: 2614, 856: 2624, 858: 2619, 2628, 2631, 2532, 926: 2584, 930: 2521, 968: 2657, 975: 2563, 977: 2564, 2567, 2568, 981: 2570, 983: 2569, 985: 2566, 987: 2571, 2573, 2574, 992: 2533, 2610, 995: 2580, 1005: 2588, 2581, 2582, 2583, 2589, 2587, 2590, 2591, 1014: 2586, 2585, 1017: 2576, 2538, 2522, 2592, 2604, 2593, 2594, 2595, 2597, 2601, 2598, 2602, 2603, 2596, 2600, 2599, 1034: 2562, 1038: 2578, 1040: 2579, 2524, 1045: 2606, 2605, 1049: 2608, 2609, 2607, 1055: 2647, 2612, 1063: 2661, 2660, 2613, 1070: 2615, 1073: 2644, 1075: 2648, 1099: 2616, 2617, 1102: 2618, 1104: 2623, 1107: 2620, 2621, 1110: 2646, 2625, 2655, 2627, 2626, 1119: 2632, 1121: 2634, 2633, 2637, 1125: 2638, 1127: 2645, 1130: 2635, 6736, 1135: 2636, 1146: 2639, 2640, 2643, 1150: 2642}, + {176: 6741, 648: 6740}, + {559, 559, 567: 6123, 965: 6743}, + {559, 559, 567: 6123, 965: 6742}, + {1933, 1933}, + {1934, 1934}, + // 4240 + {14: 1409, 16: 1409, 19: 1409, 160: 4935, 477: 1409, 480: 1409, 502: 1409, 504: 1409, 644: 1409}, + {14: 2154, 16: 2154, 19: 2154, 477: 4199, 480: 2154, 502: 6549, 504: 2154, 644: 2154, 777: 6548, 789: 6547, 846: 6551, 928: 6747}, + {2173, 2173, 14: 2154, 16: 2154, 19: 2154, 477: 4199, 480: 2154, 502: 6549, 504: 2154, 644: 2154, 777: 6548, 789: 6547, 846: 6552}, + {2174, 2174, 14: 2154, 16: 2154, 19: 2154, 477: 4199, 480: 2154, 502: 6549, 504: 2154, 644: 2154, 777: 6548, 789: 6547, 846: 6552}, + {2033, 2033, 48: 2535, 69: 2654, 71: 2514, 80: 2546, 145: 2516, 152: 2544, 2529, 155: 2513, 168: 2540, 202: 2565, 207: 2667, 210: 2509, 220: 2564, 2531, 2663, 2515, 238: 2543, 243: 2519, 248: 2541, 250: 2510, 253: 2547, 271: 2533, 275: 2532, 282: 2545, 284: 2511, 287: 2534, 298: 2524, 471: 2555, 2554, 494: 2662, 499: 2553, 502: 2563, 505: 2539, 523: 2657, 527: 2527, 565: 2538, 567: 2552, 643: 2548, 646: 2666, 650: 2512, 2656, 658: 2507, 666: 2518, 671: 2517, 676: 2562, 683: 2508, 706: 2559, 736: 2520, 745: 2561, 2549, 2550, 2551, 2560, 753: 2558, 2557, 2556, 2523, 2634, 2633, 763: 2521, 769: 2655, 771: 2615, 2626, 2645, 776: 2522, 780: 2581, 796: 2530, 803: 2569, 806: 2660, 841: 2576, 845: 2579, 850: 2658, 855: 2618, 857: 2628, 859: 2623, 2632, 2635, 2536, 927: 2588, 931: 2525, 969: 2661, 976: 2567, 978: 2568, 2571, 2572, 982: 2574, 984: 2573, 986: 2570, 988: 2575, 2577, 2578, 993: 2537, 2614, 996: 2584, 1006: 2592, 2585, 2586, 2587, 2593, 2591, 2594, 2595, 1015: 2590, 2589, 1018: 2580, 2542, 2526, 2596, 2608, 2597, 2598, 2599, 2601, 2605, 2602, 2606, 2607, 2600, 2604, 2603, 1035: 2566, 1039: 2582, 1041: 2583, 2528, 1046: 2610, 2609, 1050: 2612, 2613, 2611, 1056: 2651, 2616, 1064: 2665, 2664, 2617, 1071: 2619, 1074: 2648, 1076: 2652, 1100: 2620, 2621, 1103: 2622, 1105: 2627, 1108: 2624, 2625, 1111: 2650, 2629, 2659, 2631, 2630, 1120: 2636, 1122: 2638, 2637, 2641, 1126: 2642, 1128: 2649, 1131: 2639, 6749, 1136: 2640, 1147: 2643, 2644, 2647, 1151: 2646}, + // 4245 {441, 441}, } ) @@ -11220,7 +11238,7 @@ func yylex1(yylex yyLexer, lval *yySymType) (n int) { } func yyParse(yylex yyLexer, parser *Parser) int { - const yyError = 1351 + const yyError = 1352 yyEx, _ := yylex.(yyLexerEx) var yyn int @@ -14999,13 +15017,13 @@ yynewstate: { parser.yyVAL.item = ast.IndexVisibilityInvisible } - case 1152: + case 1153: { parser.yyVAL.statement = &ast.CallStmt{ Procedure: yyS[yypt-0].expr.(*ast.FuncCallExpr), } } - case 1153: + case 1154: { parser.yyVAL.expr = &ast.FuncCallExpr{ Tp: ast.FuncCallExprTypeGeneric, @@ -15013,7 +15031,7 @@ yynewstate: Args: []ast.ExprNode{}, } } - case 1154: + case 1155: { parser.yyVAL.expr = &ast.FuncCallExpr{ Tp: ast.FuncCallExprTypeGeneric, @@ -15022,7 +15040,7 @@ yynewstate: Args: []ast.ExprNode{}, } } - case 1155: + case 1156: { parser.yyVAL.expr = &ast.FuncCallExpr{ Tp: ast.FuncCallExprTypeGeneric, @@ -15030,7 +15048,7 @@ yynewstate: Args: yyS[yypt-1].item.([]ast.ExprNode), } } - case 1156: + case 1157: { parser.yyVAL.expr = &ast.FuncCallExpr{ Tp: ast.FuncCallExprTypeGeneric, @@ -15039,7 +15057,7 @@ yynewstate: Args: yyS[yypt-1].item.([]ast.ExprNode), } } - case 1157: + case 1158: { x := yyS[yypt-1].item.(*ast.InsertStmt) x.Priority = yyS[yypt-6].item.(mysql.PriorityEnum) @@ -15056,17 +15074,13 @@ yynewstate: x.PartitionNames = yyS[yypt-2].item.([]model.CIStr) parser.yyVAL.statement = x } - case 1160: + case 1161: { parser.yyVAL.item = &ast.InsertStmt{ Columns: yyS[yypt-3].item.([]*ast.ColumnName), Lists: yyS[yypt-0].item.([][]ast.ExprNode), } } - case 1161: - { - parser.yyVAL.item = &ast.InsertStmt{Columns: yyS[yypt-2].item.([]*ast.ColumnName), Select: yyS[yypt-0].statement.(ast.ResultSetNode)} - } case 1162: { parser.yyVAL.item = &ast.InsertStmt{Columns: yyS[yypt-2].item.([]*ast.ColumnName), Select: yyS[yypt-0].statement.(ast.ResultSetNode)} @@ -15076,6 +15090,10 @@ yynewstate: parser.yyVAL.item = &ast.InsertStmt{Columns: yyS[yypt-2].item.([]*ast.ColumnName), Select: yyS[yypt-0].statement.(ast.ResultSetNode)} } case 1164: + { + parser.yyVAL.item = &ast.InsertStmt{Columns: yyS[yypt-2].item.([]*ast.ColumnName), Select: yyS[yypt-0].statement.(ast.ResultSetNode)} + } + case 1165: { var sel ast.ResultSetNode switch x := yyS[yypt-0].expr.(*ast.SubqueryExpr).Query.(type) { @@ -15088,13 +15106,9 @@ yynewstate: } parser.yyVAL.item = &ast.InsertStmt{Columns: yyS[yypt-2].item.([]*ast.ColumnName), Select: sel} } - case 1165: - { - parser.yyVAL.item = &ast.InsertStmt{Lists: yyS[yypt-0].item.([][]ast.ExprNode)} - } case 1166: { - parser.yyVAL.item = &ast.InsertStmt{Select: yyS[yypt-0].statement.(ast.ResultSetNode)} + parser.yyVAL.item = &ast.InsertStmt{Lists: yyS[yypt-0].item.([][]ast.ExprNode)} } case 1167: { @@ -15105,6 +15119,10 @@ yynewstate: parser.yyVAL.item = &ast.InsertStmt{Select: yyS[yypt-0].statement.(ast.ResultSetNode)} } case 1169: + { + parser.yyVAL.item = &ast.InsertStmt{Select: yyS[yypt-0].statement.(ast.ResultSetNode)} + } + case 1170: { var sel ast.ResultSetNode switch x := yyS[yypt-0].expr.(*ast.SubqueryExpr).Query.(type) { @@ -15117,66 +15135,66 @@ yynewstate: } parser.yyVAL.item = &ast.InsertStmt{Select: sel} } - case 1170: + case 1171: { parser.yyVAL.item = &ast.InsertStmt{Setlist: yyS[yypt-0].item.([]*ast.Assignment)} } - case 1173: + case 1174: { parser.yyVAL.item = [][]ast.ExprNode{yyS[yypt-0].item.([]ast.ExprNode)} } - case 1174: + case 1175: { parser.yyVAL.item = append(yyS[yypt-2].item.([][]ast.ExprNode), yyS[yypt-0].item.([]ast.ExprNode)) } - case 1175: + case 1176: { parser.yyVAL.item = yyS[yypt-1].item } - case 1176: + case 1177: { parser.yyVAL.item = []ast.ExprNode{} } - case 1178: + case 1179: { parser.yyVAL.item = append(yyS[yypt-2].item.([]ast.ExprNode), yyS[yypt-0].expr) } - case 1179: + case 1180: { parser.yyVAL.item = []ast.ExprNode{yyS[yypt-0].expr} } - case 1181: + case 1182: { parser.yyVAL.expr = &ast.DefaultExpr{} } - case 1182: + case 1183: { parser.yyVAL.item = &ast.Assignment{ Column: yyS[yypt-2].item.(*ast.ColumnName), Expr: yyS[yypt-0].expr, } } - case 1183: + case 1184: { parser.yyVAL.item = []*ast.Assignment{} } - case 1184: + case 1185: { parser.yyVAL.item = []*ast.Assignment{yyS[yypt-0].item.(*ast.Assignment)} } - case 1185: + case 1186: { parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.Assignment), yyS[yypt-0].item.(*ast.Assignment)) } - case 1186: + case 1187: { parser.yyVAL.item = nil } - case 1187: + case 1188: { parser.yyVAL.item = yyS[yypt-0].item } - case 1188: + case 1189: { x := yyS[yypt-0].item.(*ast.InsertStmt) x.IsReplace = true @@ -15186,31 +15204,31 @@ yynewstate: x.PartitionNames = yyS[yypt-1].item.([]model.CIStr) parser.yyVAL.statement = x } - case 1189: + case 1190: { parser.yyVAL.expr = ast.NewValueExpr(false, parser.charset, parser.collation) } - case 1190: + case 1191: { parser.yyVAL.expr = ast.NewValueExpr(nil, parser.charset, parser.collation) } - case 1191: + case 1192: { parser.yyVAL.expr = ast.NewValueExpr(true, parser.charset, parser.collation) } - case 1192: + case 1193: { parser.yyVAL.expr = ast.NewValueExpr(yyS[yypt-0].item, parser.charset, parser.collation) } - case 1193: + case 1194: { parser.yyVAL.expr = ast.NewValueExpr(yyS[yypt-0].item, parser.charset, parser.collation) } - case 1194: + case 1195: { parser.yyVAL.expr = ast.NewValueExpr(yyS[yypt-0].item, parser.charset, parser.collation) } - case 1196: + case 1197: { // See https://dev.mysql.com/doc/refman/5.7/en/charset-literal.html co, err := charset.GetDefaultCollationLegacy(yyS[yypt-1].ident) @@ -15227,15 +15245,15 @@ yynewstate: } parser.yyVAL.expr = expr } - case 1197: + case 1198: { parser.yyVAL.expr = ast.NewValueExpr(yyS[yypt-0].item, parser.charset, parser.collation) } - case 1198: + case 1199: { parser.yyVAL.expr = ast.NewValueExpr(yyS[yypt-0].item, parser.charset, parser.collation) } - case 1199: + case 1200: { co, err := charset.GetDefaultCollationLegacy(yyS[yypt-1].ident) if err != nil { @@ -15251,7 +15269,7 @@ yynewstate: } parser.yyVAL.expr = expr } - case 1200: + case 1201: { co, err := charset.GetDefaultCollationLegacy(yyS[yypt-1].ident) if err != nil { @@ -15267,12 +15285,12 @@ yynewstate: } parser.yyVAL.expr = expr } - case 1201: + case 1202: { expr := ast.NewValueExpr(yyS[yypt-0].ident, parser.charset, parser.collation) parser.yyVAL.expr = expr } - case 1202: + case 1203: { valExpr := yyS[yypt-1].expr.(ast.ValueExpr) strLit := valExpr.GetString() @@ -15285,31 +15303,31 @@ yynewstate: } parser.yyVAL.expr = expr } - case 1203: + case 1204: { parser.yyVAL.item = []*ast.AlterOrderItem{yyS[yypt-0].item.(*ast.AlterOrderItem)} } - case 1204: + case 1205: { parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.AlterOrderItem), yyS[yypt-0].item.(*ast.AlterOrderItem)) } - case 1205: + case 1206: { parser.yyVAL.item = &ast.AlterOrderItem{Column: yyS[yypt-1].item.(*ast.ColumnName), Desc: yyS[yypt-0].item.(bool)} } - case 1206: + case 1207: { parser.yyVAL.item = &ast.OrderByClause{Items: yyS[yypt-0].item.([]*ast.ByItem)} } - case 1207: + case 1208: { parser.yyVAL.item = []*ast.ByItem{yyS[yypt-0].item.(*ast.ByItem)} } - case 1208: + case 1209: { parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.ByItem), yyS[yypt-0].item.(*ast.ByItem)) } - case 1209: + case 1210: { expr := yyS[yypt-0].expr valueExpr, ok := expr.(ast.ValueExpr) @@ -15321,7 +15339,7 @@ yynewstate: } parser.yyVAL.item = &ast.ByItem{Expr: expr, NullOrder: true} } - case 1210: + case 1211: { expr := yyS[yypt-1].expr valueExpr, ok := expr.(ast.ValueExpr) @@ -15333,55 +15351,55 @@ yynewstate: } parser.yyVAL.item = &ast.ByItem{Expr: expr, Desc: yyS[yypt-0].item.(bool)} } - case 1211: + case 1212: { parser.yyVAL.item = false } - case 1212: + case 1213: { parser.yyVAL.item = true } - case 1213: + case 1214: { parser.yyVAL.item = false // ASC by default } - case 1214: + case 1215: { parser.yyVAL.item = false } - case 1215: + case 1216: { parser.yyVAL.item = true } - case 1216: + case 1217: { parser.yyVAL.item = nil } - case 1218: + case 1219: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.Or, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr} } - case 1219: + case 1220: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.And, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr} } - case 1220: + case 1221: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.LeftShift, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr} } - case 1221: + case 1222: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.RightShift, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr} } - case 1222: + case 1223: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.Plus, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr} } - case 1223: + case 1224: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.Minus, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr} } - case 1224: + case 1225: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr("DATE_ADD"), @@ -15392,7 +15410,7 @@ yynewstate: }, } } - case 1225: + case 1226: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr("DATE_SUB"), @@ -15403,44 +15421,55 @@ yynewstate: }, } } - case 1226: + case 1227: + { + parser.yyVAL.expr = &ast.FuncCallExpr{ + FnName: model.NewCIStr("DATE_ADD"), + Args: []ast.ExprNode{ + yyS[yypt-0].expr, + yyS[yypt-3].expr, + &ast.TimeUnitExpr{Unit: yyS[yypt-2].item.(ast.TimeUnitType)}, + }, + } + } + case 1228: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.Mul, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr} } - case 1227: + case 1229: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.Div, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr} } - case 1228: + case 1230: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.Mod, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr} } - case 1229: + case 1231: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.IntDiv, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr} } - case 1230: + case 1232: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.Mod, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr} } - case 1231: + case 1233: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.Xor, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr} } - case 1233: + case 1235: { parser.yyVAL.expr = &ast.ColumnNameExpr{Name: &ast.ColumnName{ Name: model.NewCIStr(yyS[yypt-0].ident), }} } - case 1234: + case 1236: { parser.yyVAL.expr = &ast.ColumnNameExpr{Name: &ast.ColumnName{ Table: model.NewCIStr(yyS[yypt-2].ident), Name: model.NewCIStr(yyS[yypt-0].ident), }} } - case 1235: + case 1237: { parser.yyVAL.expr = &ast.ColumnNameExpr{Name: &ast.ColumnName{ Schema: model.NewCIStr(yyS[yypt-4].ident), @@ -15448,39 +15477,39 @@ yynewstate: Name: model.NewCIStr(yyS[yypt-0].ident), }} } - case 1240: + case 1242: { parser.yyVAL.expr = &ast.SetCollationExpr{Expr: yyS[yypt-2].expr, Collate: yyS[yypt-0].ident} } - case 1243: + case 1245: { parser.yyVAL.expr = ast.NewParamMarkerExpr(yyS[yypt].offset) } - case 1246: + case 1248: { parser.yyVAL.expr = &ast.UnaryOperationExpr{Op: opcode.Not2, V: yyS[yypt-0].expr} } - case 1247: + case 1249: { parser.yyVAL.expr = &ast.UnaryOperationExpr{Op: opcode.BitNeg, V: yyS[yypt-0].expr} } - case 1248: + case 1250: { parser.yyVAL.expr = &ast.UnaryOperationExpr{Op: opcode.Minus, V: yyS[yypt-0].expr} } - case 1249: + case 1251: { parser.yyVAL.expr = &ast.UnaryOperationExpr{Op: opcode.Plus, V: yyS[yypt-0].expr} } - case 1250: + case 1252: { parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(ast.Concat), Args: []ast.ExprNode{yyS[yypt-2].expr, yyS[yypt-0].expr}} } - case 1251: + case 1253: { parser.yyVAL.expr = &ast.UnaryOperationExpr{Op: opcode.Not2, V: yyS[yypt-0].expr} } - case 1253: + case 1255: { startOffset := parser.startOffset(&yyS[yypt-1]) endOffset := parser.endOffset(&yyS[yypt]) @@ -15488,23 +15517,23 @@ yynewstate: expr.SetText(parser.lexer.client, parser.src[startOffset:endOffset]) parser.yyVAL.expr = &ast.ParenthesesExpr{Expr: expr} } - case 1254: + case 1256: { values := append(yyS[yypt-3].item.([]ast.ExprNode), yyS[yypt-1].expr) parser.yyVAL.expr = &ast.RowExpr{Values: values} } - case 1255: + case 1257: { values := append(yyS[yypt-3].item.([]ast.ExprNode), yyS[yypt-1].expr) parser.yyVAL.expr = &ast.RowExpr{Values: values} } - case 1256: + case 1258: { sq := yyS[yypt-0].expr.(*ast.SubqueryExpr) sq.Exists = true parser.yyVAL.expr = &ast.ExistsSubqueryExpr{Sel: sq} } - case 1257: + case 1259: { /* * ODBC escape syntax. @@ -15528,7 +15557,7 @@ yynewstate: parser.yyVAL.expr = yyS[yypt-1].expr } } - case 1258: + case 1260: { // See https://dev.mysql.com/doc/refman/5.7/en/cast-functions.html#operator_binary tp := types.NewFieldType(mysql.TypeString) @@ -15541,7 +15570,7 @@ yynewstate: FunctionType: ast.CastBinaryOperator, } } - case 1259: + case 1261: { /* See https://dev.mysql.com/doc/refman/5.7/en/cast-functions.html#function_cast */ tp := yyS[yypt-1].item.(*types.FieldType) @@ -15561,7 +15590,7 @@ yynewstate: ExplicitCharSet: explicitCharset, } } - case 1260: + case 1262: { x := &ast.CaseExpr{WhenClauses: yyS[yypt-2].item.([]*ast.WhenClause)} if yyS[yypt-3].expr != nil { @@ -15572,7 +15601,7 @@ yynewstate: } parser.yyVAL.expr = x } - case 1261: + case 1263: { // See https://dev.mysql.com/doc/refman/5.7/en/cast-functions.html#function_convert tp := yyS[yypt-1].item.(*types.FieldType) @@ -15592,7 +15621,7 @@ yynewstate: ExplicitCharSet: explicitCharset, } } - case 1262: + case 1264: { // See https://dev.mysql.com/doc/refman/5.7/en/cast-functions.html#function_convert charset1 := ast.NewValueExpr(yyS[yypt-1].ident, "", "") @@ -15601,62 +15630,62 @@ yynewstate: Args: []ast.ExprNode{yyS[yypt-3].expr, charset1}, } } - case 1263: + case 1265: { parser.yyVAL.expr = &ast.DefaultExpr{Name: yyS[yypt-1].expr.(*ast.ColumnNameExpr).Name} } - case 1264: + case 1266: { parser.yyVAL.expr = &ast.ValuesExpr{Column: yyS[yypt-1].expr.(*ast.ColumnNameExpr)} } - case 1265: + case 1267: { 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 1266: + case 1268: { 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 1269: + case 1271: { parser.yyVAL.item = false } - case 1270: + case 1272: { parser.yyVAL.item = true } - case 1271: + case 1273: { parser.yyVAL.item = false } - case 1273: + case 1275: { parser.yyVAL.item = true } - case 1276: + case 1278: { parser.yyVAL.item = true } - case 1318: + case 1320: { parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(yyS[yypt-3].ident), Args: yyS[yypt-1].item.([]ast.ExprNode)} } - case 1319: + case 1321: { parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(yyS[yypt-3].ident), Args: yyS[yypt-1].item.([]ast.ExprNode)} } - case 1320: + case 1322: { parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(yyS[yypt-1].ident)} } - case 1321: + case 1323: { parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(yyS[yypt-2].ident)} } - case 1322: + case 1324: { args := []ast.ExprNode{} if yyS[yypt-0].item != nil { @@ -15664,7 +15693,7 @@ yynewstate: } parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(yyS[yypt-1].ident), Args: args} } - case 1323: + case 1325: { nilVal := ast.NewValueExpr(nil, parser.charset, parser.collation) args := yyS[yypt-1].item.([]ast.ExprNode) @@ -15673,7 +15702,7 @@ yynewstate: Args: append(args, nilVal), } } - case 1324: + case 1326: { charset1 := ast.NewValueExpr(yyS[yypt-1].ident, "", "") args := yyS[yypt-3].item.([]ast.ExprNode) @@ -15682,42 +15711,42 @@ yynewstate: Args: append(args, charset1), } } - case 1325: + case 1327: { expr := ast.NewValueExpr(yyS[yypt-0].ident, "", "") parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(ast.DateLiteral), Args: []ast.ExprNode{expr}} } - case 1326: + case 1328: { expr := ast.NewValueExpr(yyS[yypt-0].ident, "", "") parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(ast.TimeLiteral), Args: []ast.ExprNode{expr}} } - case 1327: + case 1329: { expr := ast.NewValueExpr(yyS[yypt-0].ident, "", "") parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(ast.TimestampLiteral), Args: []ast.ExprNode{expr}} } - case 1328: + case 1330: { parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(ast.InsertFunc), Args: yyS[yypt-1].item.([]ast.ExprNode)} } - case 1329: + case 1331: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.Mod, L: yyS[yypt-3].expr, R: yyS[yypt-1].expr} } - case 1330: + case 1332: { parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(ast.PasswordFunc), Args: yyS[yypt-1].item.([]ast.ExprNode)} } - case 1331: + case 1333: { parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(yyS[yypt-3].ident), Args: yyS[yypt-1].item.([]ast.ExprNode)} } - case 1332: + case 1334: { parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(yyS[yypt-3].ident), Args: yyS[yypt-1].item.([]ast.ExprNode)} } - case 1333: + case 1335: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr(yyS[yypt-5].ident), @@ -15728,7 +15757,7 @@ yynewstate: }, } } - case 1334: + case 1336: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr(yyS[yypt-7].ident), @@ -15739,7 +15768,7 @@ yynewstate: }, } } - case 1335: + case 1337: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr(yyS[yypt-7].ident), @@ -15750,7 +15779,7 @@ yynewstate: }, } } - case 1336: + case 1338: { timeUnit := &ast.TimeUnitExpr{Unit: yyS[yypt-3].item.(ast.TimeUnitType)} parser.yyVAL.expr = &ast.FuncCallExpr{ @@ -15758,7 +15787,7 @@ yynewstate: Args: []ast.ExprNode{timeUnit, yyS[yypt-1].expr}, } } - case 1337: + case 1339: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr(yyS[yypt-5].ident), @@ -15768,67 +15797,67 @@ yynewstate: }, } } - case 1338: + case 1340: { parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(yyS[yypt-5].ident), Args: []ast.ExprNode{yyS[yypt-3].expr, yyS[yypt-1].expr}} } - case 1339: + case 1341: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr(yyS[yypt-5].ident), Args: []ast.ExprNode{yyS[yypt-3].expr, yyS[yypt-1].expr}, } } - case 1340: + case 1342: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr(yyS[yypt-5].ident), Args: []ast.ExprNode{yyS[yypt-3].expr, yyS[yypt-1].expr}, } } - case 1341: + case 1343: { 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 1342: + case 1344: { 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 1343: + case 1345: { 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 1344: + case 1346: { 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 1345: + case 1347: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr(yyS[yypt-3].ident), Args: []ast.ExprNode{yyS[yypt-1].expr}, } } - case 1346: + case 1348: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr(yyS[yypt-5].ident), Args: []ast.ExprNode{yyS[yypt-1].expr, yyS[yypt-3].expr}, } } - case 1347: + case 1349: { spaceVal := ast.NewValueExpr(" ", parser.charset, parser.collation) direction := &ast.TrimDirectionExpr{Direction: yyS[yypt-3].item.(ast.TrimDirectionType)} @@ -15837,7 +15866,7 @@ yynewstate: Args: []ast.ExprNode{yyS[yypt-1].expr, spaceVal, direction}, } } - case 1348: + case 1350: { direction := &ast.TrimDirectionExpr{Direction: yyS[yypt-4].item.(ast.TrimDirectionType)} parser.yyVAL.expr = &ast.FuncCallExpr{ @@ -15845,63 +15874,63 @@ yynewstate: Args: []ast.ExprNode{yyS[yypt-1].expr, yyS[yypt-3].expr, direction}, } } - case 1349: + case 1351: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr(yyS[yypt-3].ident), Args: []ast.ExprNode{yyS[yypt-1].expr}, } } - case 1350: + case 1352: { 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 1351: + case 1353: { 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 1353: + case 1355: { 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 1354: + case 1356: { parser.yyVAL.item = ast.GetFormatSelectorDate } - case 1355: + case 1357: { parser.yyVAL.item = ast.GetFormatSelectorDatetime } - case 1356: + case 1358: { parser.yyVAL.item = ast.GetFormatSelectorTime } - case 1357: + case 1359: { parser.yyVAL.item = ast.GetFormatSelectorDatetime } - case 1362: + case 1364: { parser.yyVAL.item = ast.TrimBoth } - case 1363: + case 1365: { parser.yyVAL.item = ast.TrimLeading } - case 1364: + case 1366: { parser.yyVAL.item = ast.TrimTrailing } - case 1365: + case 1367: { objNameExpr := &ast.TableNameExpr{ Name: yyS[yypt-1].item.(*ast.TableName), @@ -15911,7 +15940,7 @@ yynewstate: Args: []ast.ExprNode{objNameExpr}, } } - case 1366: + case 1368: { objNameExpr := &ast.TableNameExpr{ Name: yyS[yypt-3].item.(*ast.TableName), @@ -15922,7 +15951,7 @@ yynewstate: Args: []ast.ExprNode{objNameExpr, valueExpr}, } } - case 1368: + case 1370: { if yyS[yypt-0].item != nil { parser.yyVAL.expr = &ast.WindowFuncExpr{F: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Distinct: yyS[yypt-3].item.(bool), Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))} @@ -15930,15 +15959,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 1369: + case 1371: { parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-3].ident, Args: yyS[yypt-1].item.([]ast.ExprNode), Distinct: false} } - case 1370: + case 1372: { parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-3].ident, Args: yyS[yypt-1].item.([]ast.ExprNode)} } - case 1371: + case 1373: { if yyS[yypt-0].item != nil { parser.yyVAL.expr = &ast.WindowFuncExpr{F: yyS[yypt-4].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))} @@ -15946,7 +15975,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-4].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}} } } - case 1372: + case 1374: { if yyS[yypt-0].item != nil { parser.yyVAL.expr = &ast.WindowFuncExpr{F: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))} @@ -15954,7 +15983,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}} } } - case 1373: + case 1375: { if yyS[yypt-0].item != nil { parser.yyVAL.expr = &ast.WindowFuncExpr{F: yyS[yypt-4].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))} @@ -15962,7 +15991,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-4].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}} } } - case 1374: + case 1376: { if yyS[yypt-0].item != nil { parser.yyVAL.expr = &ast.WindowFuncExpr{F: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))} @@ -15970,7 +15999,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}} } } - case 1375: + case 1377: { if yyS[yypt-0].item != nil { parser.yyVAL.expr = &ast.WindowFuncExpr{F: yyS[yypt-4].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))} @@ -15978,7 +16007,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-4].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}} } } - case 1376: + case 1378: { if yyS[yypt-0].item != nil { parser.yyVAL.expr = &ast.WindowFuncExpr{F: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))} @@ -15986,11 +16015,11 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}} } } - case 1377: + case 1379: { parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-4].ident, Args: yyS[yypt-1].item.([]ast.ExprNode), Distinct: true} } - case 1378: + case 1380: { if yyS[yypt-0].item != nil { parser.yyVAL.expr = &ast.WindowFuncExpr{F: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))} @@ -15998,7 +16027,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}} } } - case 1379: + case 1381: { if yyS[yypt-0].item != nil { parser.yyVAL.expr = &ast.WindowFuncExpr{F: yyS[yypt-4].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))} @@ -16006,7 +16035,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-4].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}} } } - case 1380: + case 1382: { args := []ast.ExprNode{ast.NewValueExpr(1, parser.charset, parser.collation)} if yyS[yypt-0].item != nil { @@ -16015,7 +16044,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-4].ident, Args: args} } } - case 1381: + case 1383: { args := yyS[yypt-4].item.([]ast.ExprNode) args = append(args, yyS[yypt-2].item.(ast.ExprNode)) @@ -16029,7 +16058,7 @@ yynewstate: parser.yyVAL.expr = agg } } - case 1382: + case 1384: { if yyS[yypt-0].item != nil { parser.yyVAL.expr = &ast.WindowFuncExpr{F: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Distinct: yyS[yypt-3].item.(bool), Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))} @@ -16037,7 +16066,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 1383: + case 1385: { if yyS[yypt-0].item != nil { parser.yyVAL.expr = &ast.WindowFuncExpr{F: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Distinct: yyS[yypt-3].item.(bool), Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))} @@ -16045,7 +16074,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 1384: + case 1386: { if yyS[yypt-0].item != nil { parser.yyVAL.expr = &ast.WindowFuncExpr{F: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Distinct: yyS[yypt-3].item.(bool), Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))} @@ -16053,7 +16082,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 1385: + case 1387: { if yyS[yypt-0].item != nil { parser.yyVAL.expr = &ast.WindowFuncExpr{F: ast.AggFuncStddevPop, Args: []ast.ExprNode{yyS[yypt-2].expr}, Distinct: yyS[yypt-3].item.(bool), Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))} @@ -16061,7 +16090,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: ast.AggFuncStddevPop, Args: []ast.ExprNode{yyS[yypt-2].expr}, Distinct: yyS[yypt-3].item.(bool)} } } - case 1386: + case 1388: { if yyS[yypt-0].item != nil { parser.yyVAL.expr = &ast.WindowFuncExpr{F: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Distinct: yyS[yypt-3].item.(bool), Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))} @@ -16069,7 +16098,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 1387: + case 1389: { if yyS[yypt-0].item != nil { parser.yyVAL.expr = &ast.WindowFuncExpr{F: ast.AggFuncVarPop, Args: []ast.ExprNode{yyS[yypt-2].expr}, Distinct: yyS[yypt-3].item.(bool), Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))} @@ -16077,11 +16106,11 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: ast.AggFuncVarPop, Args: []ast.ExprNode{yyS[yypt-2].expr}, Distinct: yyS[yypt-3].item.(bool)} } } - case 1388: + case 1390: { parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Distinct: yyS[yypt-3].item.(bool)} } - case 1389: + case 1391: { if yyS[yypt-0].item != nil { parser.yyVAL.expr = &ast.WindowFuncExpr{F: yyS[yypt-4].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))} @@ -16089,7 +16118,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-4].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}} } } - case 1390: + case 1392: { if yyS[yypt-0].item != nil { parser.yyVAL.expr = &ast.WindowFuncExpr{F: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))} @@ -16097,7 +16126,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}} } } - case 1391: + case 1393: { if yyS[yypt-0].item != nil { parser.yyVAL.expr = &ast.WindowFuncExpr{F: yyS[yypt-6].ident, Args: []ast.ExprNode{yyS[yypt-4].expr, yyS[yypt-2].expr}, Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))} @@ -16105,7 +16134,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-6].ident, Args: []ast.ExprNode{yyS[yypt-4].expr, yyS[yypt-2].expr}} } } - case 1392: + case 1394: { if yyS[yypt-0].item != nil { parser.yyVAL.expr = &ast.WindowFuncExpr{F: yyS[yypt-7].ident, Args: []ast.ExprNode{yyS[yypt-4].expr, yyS[yypt-2].expr}, Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))} @@ -16113,7 +16142,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-7].ident, Args: []ast.ExprNode{yyS[yypt-4].expr, yyS[yypt-2].expr}} } } - case 1393: + case 1395: { if yyS[yypt-0].item != nil { parser.yyVAL.expr = &ast.WindowFuncExpr{F: yyS[yypt-7].ident, Args: []ast.ExprNode{yyS[yypt-5].expr, yyS[yypt-2].expr}, Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))} @@ -16121,7 +16150,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-7].ident, Args: []ast.ExprNode{yyS[yypt-5].expr, yyS[yypt-2].expr}} } } - case 1394: + case 1396: { if yyS[yypt-0].item != nil { parser.yyVAL.expr = &ast.WindowFuncExpr{F: yyS[yypt-8].ident, Args: []ast.ExprNode{yyS[yypt-5].expr, yyS[yypt-2].expr}, Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))} @@ -16129,22 +16158,22 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-8].ident, Args: []ast.ExprNode{yyS[yypt-5].expr, yyS[yypt-2].expr}} } } - case 1395: + case 1397: { parser.yyVAL.item = ast.NewValueExpr(",", "", "") } - case 1396: + case 1398: { parser.yyVAL.item = ast.NewValueExpr(yyS[yypt-0].ident, "", "") } - case 1397: + case 1399: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr(yyS[yypt-3].ident), Args: yyS[yypt-1].item.([]ast.ExprNode), } } - case 1398: + case 1400: { var tp ast.FuncCallExprType if isInTokenMap(yyS[yypt-3].ident) { @@ -16159,159 +16188,159 @@ yynewstate: Args: yyS[yypt-1].item.([]ast.ExprNode), } } - case 1399: + case 1401: { parser.yyVAL.item = nil } - case 1400: + case 1402: { parser.yyVAL.item = nil } - case 1401: + case 1403: { expr := ast.NewValueExpr(yyS[yypt-1].item, parser.charset, parser.collation) parser.yyVAL.item = expr } - case 1403: + case 1405: { parser.yyVAL.item = ast.TimeUnitSecondMicrosecond } - case 1404: + case 1406: { parser.yyVAL.item = ast.TimeUnitMinuteMicrosecond } - case 1405: + case 1407: { parser.yyVAL.item = ast.TimeUnitMinuteSecond } - case 1406: + case 1408: { parser.yyVAL.item = ast.TimeUnitHourMicrosecond } - case 1407: + case 1409: { parser.yyVAL.item = ast.TimeUnitHourSecond } - case 1408: + case 1410: { parser.yyVAL.item = ast.TimeUnitHourMinute } - case 1409: + case 1411: { parser.yyVAL.item = ast.TimeUnitDayMicrosecond } - case 1410: + case 1412: { parser.yyVAL.item = ast.TimeUnitDaySecond } - case 1411: + case 1413: { parser.yyVAL.item = ast.TimeUnitDayMinute } - case 1412: + case 1414: { parser.yyVAL.item = ast.TimeUnitDayHour } - case 1413: + case 1415: { parser.yyVAL.item = ast.TimeUnitYearMonth } - case 1414: + case 1416: { parser.yyVAL.item = ast.TimeUnitMicrosecond } - case 1415: + case 1417: { parser.yyVAL.item = ast.TimeUnitSecond } - case 1416: + case 1418: { parser.yyVAL.item = ast.TimeUnitMinute } - case 1417: + case 1419: { parser.yyVAL.item = ast.TimeUnitHour } - case 1418: + case 1420: { parser.yyVAL.item = ast.TimeUnitDay } - case 1419: + case 1421: { parser.yyVAL.item = ast.TimeUnitWeek } - case 1420: + case 1422: { parser.yyVAL.item = ast.TimeUnitMonth } - case 1421: + case 1423: { parser.yyVAL.item = ast.TimeUnitQuarter } - case 1422: + case 1424: { parser.yyVAL.item = ast.TimeUnitYear } - case 1423: + case 1425: { parser.yyVAL.item = ast.TimeUnitSecond } - case 1424: + case 1426: { parser.yyVAL.item = ast.TimeUnitMinute } - case 1425: + case 1427: { parser.yyVAL.item = ast.TimeUnitHour } - case 1426: + case 1428: { parser.yyVAL.item = ast.TimeUnitDay } - case 1427: + case 1429: { parser.yyVAL.item = ast.TimeUnitWeek } - case 1428: + case 1430: { parser.yyVAL.item = ast.TimeUnitMonth } - case 1429: + case 1431: { parser.yyVAL.item = ast.TimeUnitQuarter } - case 1430: + case 1432: { parser.yyVAL.item = ast.TimeUnitYear } - case 1431: + case 1433: { parser.yyVAL.expr = nil } - case 1433: + case 1435: { parser.yyVAL.item = []*ast.WhenClause{yyS[yypt-0].item.(*ast.WhenClause)} } - case 1434: + case 1436: { parser.yyVAL.item = append(yyS[yypt-1].item.([]*ast.WhenClause), yyS[yypt-0].item.(*ast.WhenClause)) } - case 1435: + case 1437: { parser.yyVAL.item = &ast.WhenClause{ Expr: yyS[yypt-2].expr, Result: yyS[yypt-0].expr, } } - case 1436: + case 1438: { parser.yyVAL.item = nil } - case 1437: + case 1439: { parser.yyVAL.item = yyS[yypt-0].expr } - case 1438: + case 1440: { tp := types.NewFieldType(mysql.TypeVarString) tp.SetFlen(yyS[yypt-0].item.(int)) // TODO: Flen should be the flen of expression @@ -16323,7 +16352,7 @@ yynewstate: tp.AddFlag(mysql.BinaryFlag) parser.yyVAL.item = tp } - case 1439: + case 1441: { tp := types.NewFieldType(mysql.TypeVarString) tp.SetFlen(yyS[yypt-1].item.(int)) // TODO: Flen should be the flen of expression @@ -16346,7 +16375,7 @@ yynewstate: } parser.yyVAL.item = tp } - case 1440: + case 1442: { tp := types.NewFieldType(mysql.TypeDate) tp.SetCharset(charset.CharsetBin) @@ -16354,7 +16383,7 @@ yynewstate: tp.AddFlag(mysql.BinaryFlag) parser.yyVAL.item = tp } - case 1441: + case 1443: { tp := types.NewFieldType(mysql.TypeYear) tp.SetCharset(charset.CharsetBin) @@ -16362,7 +16391,7 @@ yynewstate: tp.AddFlag(mysql.BinaryFlag) parser.yyVAL.item = tp } - case 1442: + case 1444: { tp := types.NewFieldType(mysql.TypeDatetime) flen, _ := mysql.GetDefaultFieldLengthAndDecimalForCast(mysql.TypeDatetime) @@ -16376,7 +16405,7 @@ yynewstate: tp.AddFlag(mysql.BinaryFlag) parser.yyVAL.item = tp } - case 1443: + case 1445: { fopt := yyS[yypt-0].item.(*ast.FloatOpt) tp := types.NewFieldType(mysql.TypeNewDecimal) @@ -16387,7 +16416,7 @@ yynewstate: tp.AddFlag(mysql.BinaryFlag) parser.yyVAL.item = tp } - case 1444: + case 1446: { tp := types.NewFieldType(mysql.TypeDuration) flen, _ := mysql.GetDefaultFieldLengthAndDecimalForCast(mysql.TypeDuration) @@ -16401,7 +16430,7 @@ yynewstate: tp.AddFlag(mysql.BinaryFlag) parser.yyVAL.item = tp } - case 1445: + case 1447: { tp := types.NewFieldType(mysql.TypeLonglong) tp.SetCharset(charset.CharsetBin) @@ -16409,7 +16438,7 @@ yynewstate: tp.AddFlag(mysql.BinaryFlag) parser.yyVAL.item = tp } - case 1446: + case 1448: { tp := types.NewFieldType(mysql.TypeLonglong) tp.AddFlag(mysql.UnsignedFlag | mysql.BinaryFlag) @@ -16417,7 +16446,7 @@ yynewstate: tp.SetCollate(charset.CollationBin) parser.yyVAL.item = tp } - case 1447: + case 1449: { tp := types.NewFieldType(mysql.TypeJSON) tp.AddFlag(mysql.BinaryFlag | mysql.ParseToJSONFlag) @@ -16425,7 +16454,7 @@ yynewstate: tp.SetCollate(mysql.DefaultCollationName) parser.yyVAL.item = tp } - case 1448: + case 1450: { tp := types.NewFieldType(mysql.TypeDouble) flen, decimal := mysql.GetDefaultFieldLengthAndDecimalForCast(mysql.TypeDouble) @@ -16436,7 +16465,7 @@ yynewstate: tp.SetCollate(charset.CollationBin) parser.yyVAL.item = tp } - case 1449: + case 1451: { tp := types.NewFieldType(mysql.TypeFloat) fopt := yyS[yypt-0].item.(*ast.FloatOpt) @@ -16453,7 +16482,7 @@ yynewstate: tp.SetCollate(charset.CollationBin) parser.yyVAL.item = tp } - case 1450: + case 1452: { var tp *types.FieldType if parser.lexer.GetSQLMode().HasRealAsFloatMode() { @@ -16469,65 +16498,65 @@ yynewstate: tp.SetCollate(charset.CollationBin) parser.yyVAL.item = tp } - case 1451: + case 1453: { parser.yyVAL.item = mysql.LowPriority } - case 1452: + case 1454: { parser.yyVAL.item = mysql.HighPriority } - case 1453: + case 1455: { parser.yyVAL.item = mysql.DelayedPriority } - case 1454: + case 1456: { parser.yyVAL.item = mysql.NoPriority } - case 1456: + case 1458: { parser.yyVAL.item = &ast.TableName{Name: model.NewCIStr(yyS[yypt-0].ident)} } - case 1457: + case 1459: { parser.yyVAL.item = &ast.TableName{Schema: model.NewCIStr(yyS[yypt-2].ident), Name: model.NewCIStr(yyS[yypt-0].ident)} } - case 1458: + case 1460: { tbl := []*ast.TableName{yyS[yypt-0].item.(*ast.TableName)} parser.yyVAL.item = tbl } - case 1459: + case 1461: { parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.TableName), yyS[yypt-0].item.(*ast.TableName)) } - case 1460: + case 1462: { parser.yyVAL.item = &ast.TableName{Name: model.NewCIStr(yyS[yypt-1].ident)} } - case 1461: + case 1463: { parser.yyVAL.item = &ast.TableName{Schema: model.NewCIStr(yyS[yypt-3].ident), Name: model.NewCIStr(yyS[yypt-1].ident)} } - case 1462: + case 1464: { tbl := []*ast.TableName{yyS[yypt-0].item.(*ast.TableName)} parser.yyVAL.item = tbl } - case 1463: + case 1465: { parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.TableName), yyS[yypt-0].item.(*ast.TableName)) } - case 1466: + case 1468: { parser.yyVAL.item = false } - case 1467: + case 1469: { parser.yyVAL.item = true } - case 1468: + case 1470: { var sqlText string var sqlVar *ast.VariableExpr @@ -16543,94 +16572,94 @@ yynewstate: SQLVar: sqlVar, } } - case 1469: + case 1471: { parser.yyVAL.item = yyS[yypt-0].ident } - case 1470: + case 1472: { parser.yyVAL.item = yyS[yypt-0].expr } - case 1471: + case 1473: { parser.yyVAL.statement = &ast.ExecuteStmt{Name: yyS[yypt-0].ident} } - case 1472: + case 1474: { parser.yyVAL.statement = &ast.ExecuteStmt{ Name: yyS[yypt-2].ident, UsingVars: yyS[yypt-0].item.([]ast.ExprNode), } } - case 1473: + case 1475: { parser.yyVAL.item = []ast.ExprNode{yyS[yypt-0].expr} } - case 1474: + case 1476: { parser.yyVAL.item = append(yyS[yypt-2].item.([]ast.ExprNode), yyS[yypt-0].expr) } - case 1475: + case 1477: { parser.yyVAL.statement = &ast.DeallocateStmt{Name: yyS[yypt-0].ident} } - case 1478: + case 1480: { parser.yyVAL.statement = &ast.RollbackStmt{} } - case 1479: + case 1481: { parser.yyVAL.statement = &ast.RollbackStmt{CompletionType: yyS[yypt-0].item.(ast.CompletionType)} } - case 1480: + case 1482: { parser.yyVAL.statement = &ast.RollbackStmt{SavepointName: yyS[yypt-0].ident} } - case 1481: + case 1483: { parser.yyVAL.statement = &ast.RollbackStmt{SavepointName: yyS[yypt-0].ident} } - case 1482: + case 1484: { parser.yyVAL.item = ast.CompletionTypeChain } - case 1483: + case 1485: { parser.yyVAL.item = ast.CompletionTypeRelease } - case 1484: + case 1486: { parser.yyVAL.item = ast.CompletionTypeDefault } - case 1485: + case 1487: { parser.yyVAL.item = ast.CompletionTypeChain } - case 1486: + case 1488: { parser.yyVAL.item = ast.CompletionTypeDefault } - case 1487: + case 1489: { parser.yyVAL.item = ast.CompletionTypeRelease } - case 1488: + case 1490: { parser.yyVAL.item = ast.CompletionTypeDefault } - case 1489: + case 1491: { parser.yyVAL.statement = &ast.ShutdownStmt{} } - case 1490: + case 1492: { parser.yyVAL.statement = &ast.RestartStmt{} } - case 1491: + case 1493: { parser.yyVAL.statement = &ast.HelpStmt{Topic: yyS[yypt-0].ident} } - case 1492: + case 1494: { st := &ast.SelectStmt{ SelectStmtOpts: yyS[yypt-2].item.(*ast.SelectStmtOpts), @@ -16646,7 +16675,7 @@ yynewstate: } parser.yyVAL.item = st } - case 1493: + case 1495: { st := yyS[yypt-2].item.(*ast.SelectStmt) lastField := st.Fields.Fields[len(st.Fields.Fields)-1] @@ -16658,7 +16687,7 @@ yynewstate: st.Where = yyS[yypt-0].item.(ast.ExprNode) } } - case 1494: + case 1496: { st := yyS[yypt-6].item.(*ast.SelectStmt) st.From = yyS[yypt-4].item.(*ast.TableRefsClause) @@ -16681,11 +16710,11 @@ yynewstate: } parser.yyVAL.item = st } - case 1495: + case 1497: { parser.yyVAL.item = nil } - case 1496: + case 1498: { var repSeed ast.ExprNode if yyS[yypt-0].expr != nil { @@ -16698,7 +16727,7 @@ yynewstate: RepeatableSeed: repSeed, } } - case 1497: + case 1499: { var repSeed ast.ExprNode if yyS[yypt-0].expr != nil { @@ -16709,43 +16738,43 @@ yynewstate: RepeatableSeed: repSeed, } } - case 1498: + case 1500: { parser.yyVAL.item = ast.SampleMethodTypeNone } - case 1499: + case 1501: { parser.yyVAL.item = ast.SampleMethodTypeSystem } - case 1500: + case 1502: { parser.yyVAL.item = ast.SampleMethodTypeBernoulli } - case 1501: + case 1503: { parser.yyVAL.item = ast.SampleMethodTypeTiDBRegion } - case 1502: + case 1504: { parser.yyVAL.item = ast.SampleClauseUnitTypeDefault } - case 1503: + case 1505: { parser.yyVAL.item = ast.SampleClauseUnitTypeRow } - case 1504: + case 1506: { parser.yyVAL.item = ast.SampleClauseUnitTypePercent } - case 1505: + case 1507: { parser.yyVAL.expr = nil } - case 1506: + case 1508: { parser.yyVAL.expr = yyS[yypt-1].expr } - case 1507: + case 1509: { st := yyS[yypt-6].item.(*ast.SelectStmt) if yyS[yypt-1].item != nil { @@ -16792,7 +16821,7 @@ yynewstate: } parser.yyVAL.statement = st } - case 1508: + case 1510: { st := yyS[yypt-5].item.(*ast.SelectStmt) if yyS[yypt-4].item != nil { @@ -16812,7 +16841,7 @@ yynewstate: } parser.yyVAL.statement = st } - case 1509: + case 1511: { st := yyS[yypt-4].item.(*ast.SelectStmt) if yyS[yypt-1].item != nil { @@ -16829,7 +16858,7 @@ yynewstate: } parser.yyVAL.statement = st } - case 1510: + case 1512: { st := &ast.SelectStmt{ Kind: ast.SelectStmtKindTable, @@ -16851,7 +16880,7 @@ yynewstate: } parser.yyVAL.statement = st } - case 1511: + case 1513: { st := &ast.SelectStmt{ Kind: ast.SelectStmtKindValues, @@ -16872,13 +16901,13 @@ yynewstate: } parser.yyVAL.statement = st } - case 1512: + case 1514: { sel := yyS[yypt-0].statement.(*ast.SelectStmt) sel.With = yyS[yypt-1].item.(*ast.WithClause) parser.yyVAL.statement = sel } - case 1513: + case 1515: { var sel ast.StmtNode switch x := yyS[yypt-0].expr.(*ast.SubqueryExpr).Query.(type) { @@ -16894,11 +16923,11 @@ yynewstate: } parser.yyVAL.statement = sel } - case 1514: + case 1516: { parser.yyVAL.item = yyS[yypt-0].item } - case 1515: + case 1517: { ws := yyS[yypt-0].item.(*ast.WithClause) ws.IsRecursive = true @@ -16907,20 +16936,20 @@ yynewstate: } parser.yyVAL.item = ws } - case 1516: + case 1518: { ws := yyS[yypt-2].item.(*ast.WithClause) ws.CTEs = append(ws.CTEs, yyS[yypt-0].item.(*ast.CommonTableExpression)) parser.yyVAL.item = ws } - case 1517: + case 1519: { 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 1518: + case 1520: { cte := &ast.CommonTableExpression{} cte.Name = model.NewCIStr(yyS[yypt-3].ident) @@ -16928,37 +16957,37 @@ yynewstate: cte.Query = yyS[yypt-0].expr.(*ast.SubqueryExpr) parser.yyVAL.item = cte } - case 1520: + case 1522: { parser.yyVAL.item = nil } - case 1521: + case 1523: { parser.yyVAL.item = yyS[yypt-0].item.([]ast.WindowSpec) } - case 1522: + case 1524: { parser.yyVAL.item = []ast.WindowSpec{yyS[yypt-0].item.(ast.WindowSpec)} } - case 1523: + case 1525: { parser.yyVAL.item = append(yyS[yypt-2].item.([]ast.WindowSpec), yyS[yypt-0].item.(ast.WindowSpec)) } - case 1524: + case 1526: { var spec = yyS[yypt-0].item.(ast.WindowSpec) spec.Name = yyS[yypt-2].item.(model.CIStr) parser.yyVAL.item = spec } - case 1525: + case 1527: { parser.yyVAL.item = model.NewCIStr(yyS[yypt-0].ident) } - case 1526: + case 1528: { parser.yyVAL.item = yyS[yypt-1].item.(ast.WindowSpec) } - case 1527: + case 1529: { spec := ast.WindowSpec{Ref: yyS[yypt-3].item.(model.CIStr)} if yyS[yypt-2].item != nil { @@ -16972,138 +17001,138 @@ yynewstate: } parser.yyVAL.item = spec } - case 1528: + case 1530: { parser.yyVAL.item = model.CIStr{} } - case 1530: + case 1532: { parser.yyVAL.item = nil } - case 1531: + case 1533: { parser.yyVAL.item = &ast.PartitionByClause{Items: yyS[yypt-0].item.([]*ast.ByItem)} } - case 1532: + case 1534: { parser.yyVAL.item = nil } - case 1533: + case 1535: { parser.yyVAL.item = &ast.OrderByClause{Items: yyS[yypt-0].item.([]*ast.ByItem)} } - case 1534: + case 1536: { parser.yyVAL.item = nil } - case 1535: + case 1537: { parser.yyVAL.item = &ast.FrameClause{ Type: yyS[yypt-1].item.(ast.FrameType), Extent: yyS[yypt-0].item.(ast.FrameExtent), } } - case 1536: + case 1538: { parser.yyVAL.item = ast.FrameType(ast.Rows) } - case 1537: + case 1539: { parser.yyVAL.item = ast.FrameType(ast.Ranges) } - case 1538: + case 1540: { parser.yyVAL.item = ast.FrameType(ast.Groups) } - case 1539: + case 1541: { parser.yyVAL.item = ast.FrameExtent{ Start: yyS[yypt-0].item.(ast.FrameBound), End: ast.FrameBound{Type: ast.CurrentRow}, } } - case 1541: + case 1543: { parser.yyVAL.item = ast.FrameBound{Type: ast.Preceding, UnBounded: true} } - case 1542: + case 1544: { parser.yyVAL.item = ast.FrameBound{Type: ast.Preceding, Expr: ast.NewValueExpr(yyS[yypt-1].item, parser.charset, parser.collation)} } - case 1543: + case 1545: { parser.yyVAL.item = ast.FrameBound{Type: ast.Preceding, Expr: ast.NewParamMarkerExpr(yyS[yypt].offset)} } - case 1544: + case 1546: { parser.yyVAL.item = ast.FrameBound{Type: ast.Preceding, Expr: yyS[yypt-2].expr, Unit: yyS[yypt-1].item.(ast.TimeUnitType)} } - case 1545: + case 1547: { parser.yyVAL.item = ast.FrameBound{Type: ast.CurrentRow} } - case 1546: + case 1548: { parser.yyVAL.item = ast.FrameExtent{Start: yyS[yypt-2].item.(ast.FrameBound), End: yyS[yypt-0].item.(ast.FrameBound)} } - case 1548: + case 1550: { parser.yyVAL.item = ast.FrameBound{Type: ast.Following, UnBounded: true} } - case 1549: + case 1551: { parser.yyVAL.item = ast.FrameBound{Type: ast.Following, Expr: ast.NewValueExpr(yyS[yypt-1].item, parser.charset, parser.collation)} } - case 1550: + case 1552: { parser.yyVAL.item = ast.FrameBound{Type: ast.Following, Expr: ast.NewParamMarkerExpr(yyS[yypt].offset)} } - case 1551: + case 1553: { parser.yyVAL.item = ast.FrameBound{Type: ast.Following, Expr: yyS[yypt-2].expr, Unit: yyS[yypt-1].item.(ast.TimeUnitType)} } - case 1552: + case 1554: { parser.yyVAL.item = nil } - case 1553: + case 1555: { spec := yyS[yypt-0].item.(ast.WindowSpec) parser.yyVAL.item = &spec } - case 1554: + case 1556: { parser.yyVAL.item = yyS[yypt-0].item.(ast.WindowSpec) } - case 1555: + case 1557: { parser.yyVAL.item = ast.WindowSpec{Name: yyS[yypt-0].item.(model.CIStr), OnlyAlias: true} } - case 1557: + case 1559: { parser.yyVAL.expr = &ast.WindowFuncExpr{F: yyS[yypt-3].ident, Spec: yyS[yypt-0].item.(ast.WindowSpec)} } - case 1558: + case 1560: { parser.yyVAL.expr = &ast.WindowFuncExpr{F: yyS[yypt-3].ident, Spec: yyS[yypt-0].item.(ast.WindowSpec)} } - case 1559: + case 1561: { parser.yyVAL.expr = &ast.WindowFuncExpr{F: yyS[yypt-3].ident, Spec: yyS[yypt-0].item.(ast.WindowSpec)} } - case 1560: + case 1562: { parser.yyVAL.expr = &ast.WindowFuncExpr{F: yyS[yypt-3].ident, Spec: yyS[yypt-0].item.(ast.WindowSpec)} } - case 1561: + case 1563: { parser.yyVAL.expr = &ast.WindowFuncExpr{F: yyS[yypt-3].ident, Spec: yyS[yypt-0].item.(ast.WindowSpec)} } - case 1562: + case 1564: { parser.yyVAL.expr = &ast.WindowFuncExpr{F: yyS[yypt-4].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Spec: yyS[yypt-0].item.(ast.WindowSpec)} } - case 1563: + case 1565: { args := []ast.ExprNode{yyS[yypt-4].expr} if yyS[yypt-3].item != nil { @@ -17111,7 +17140,7 @@ yynewstate: } parser.yyVAL.expr = &ast.WindowFuncExpr{F: yyS[yypt-6].ident, Args: args, IgnoreNull: yyS[yypt-1].item.(bool), Spec: yyS[yypt-0].item.(ast.WindowSpec)} } - case 1564: + case 1566: { args := []ast.ExprNode{yyS[yypt-4].expr} if yyS[yypt-3].item != nil { @@ -17119,23 +17148,23 @@ yynewstate: } parser.yyVAL.expr = &ast.WindowFuncExpr{F: yyS[yypt-6].ident, Args: args, IgnoreNull: yyS[yypt-1].item.(bool), Spec: yyS[yypt-0].item.(ast.WindowSpec)} } - case 1565: + case 1567: { parser.yyVAL.expr = &ast.WindowFuncExpr{F: 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 1566: + case 1568: { parser.yyVAL.expr = &ast.WindowFuncExpr{F: 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 1567: + case 1569: { parser.yyVAL.expr = &ast.WindowFuncExpr{F: 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 1568: + case 1570: { parser.yyVAL.item = nil } - case 1569: + case 1571: { args := []ast.ExprNode{ast.NewValueExpr(yyS[yypt-1].item, parser.charset, parser.collation)} if yyS[yypt-0].item != nil { @@ -17143,7 +17172,7 @@ yynewstate: } parser.yyVAL.item = args } - case 1570: + case 1572: { args := []ast.ExprNode{ast.NewParamMarkerExpr(yyS[yypt-1].offset)} if yyS[yypt-0].item != nil { @@ -17151,43 +17180,43 @@ yynewstate: } parser.yyVAL.item = args } - case 1571: + case 1573: { parser.yyVAL.item = nil } - case 1572: + case 1574: { parser.yyVAL.item = yyS[yypt-0].expr } - case 1573: + case 1575: { parser.yyVAL.item = false } - case 1574: + case 1576: { parser.yyVAL.item = false } - case 1575: + case 1577: { parser.yyVAL.item = true } - case 1576: + case 1578: { parser.yyVAL.item = false } - case 1577: + case 1579: { parser.yyVAL.item = false } - case 1578: + case 1580: { parser.yyVAL.item = true } - case 1579: + case 1581: { parser.yyVAL.item = &ast.TableRefsClause{TableRefs: yyS[yypt-0].item.(*ast.Join)} } - case 1580: + case 1582: { if j, ok := yyS[yypt-0].item.(*ast.Join); ok { // if $1 is Join, use it directly @@ -17196,12 +17225,12 @@ yynewstate: parser.yyVAL.item = &ast.Join{Left: yyS[yypt-0].item.(ast.ResultSetNode), Right: nil} } } - case 1581: + case 1583: { /* 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 1583: + case 1585: { /* * ODBC escape syntax for outer join is { OJ join_table } @@ -17209,7 +17238,7 @@ yynewstate: */ parser.yyVAL.item = yyS[yypt-1].item } - case 1586: + case 1588: { tn := yyS[yypt-5].item.(*ast.TableName) tn.PartitionNames = yyS[yypt-4].item.([]model.CIStr) @@ -17222,66 +17251,66 @@ yynewstate: } parser.yyVAL.item = &ast.TableSource{Source: tn, AsName: yyS[yypt-3].item.(model.CIStr)} } - case 1587: + case 1589: { resultNode := yyS[yypt-1].expr.(*ast.SubqueryExpr).Query parser.yyVAL.item = &ast.TableSource{Source: resultNode, AsName: yyS[yypt-0].item.(model.CIStr)} } - case 1588: + case 1590: { j := yyS[yypt-1].item.(*ast.Join) j.ExplicitParens = true parser.yyVAL.item = yyS[yypt-1].item } - case 1589: + case 1591: { parser.yyVAL.item = []model.CIStr{} } - case 1590: + case 1592: { parser.yyVAL.item = yyS[yypt-1].item } - case 1591: + case 1593: { parser.yyVAL.item = model.CIStr{} } - case 1593: + case 1595: { parser.yyVAL.item = model.NewCIStr(yyS[yypt-0].ident) } - case 1594: + case 1596: { parser.yyVAL.item = model.NewCIStr(yyS[yypt-0].ident) } - case 1595: + case 1597: { parser.yyVAL.item = ast.HintUse } - case 1596: + case 1598: { parser.yyVAL.item = ast.HintIgnore } - case 1597: + case 1599: { parser.yyVAL.item = ast.HintForce } - case 1598: + case 1600: { parser.yyVAL.item = ast.HintForScan } - case 1599: + case 1601: { parser.yyVAL.item = ast.HintForJoin } - case 1600: + case 1602: { parser.yyVAL.item = ast.HintForOrderBy } - case 1601: + case 1603: { parser.yyVAL.item = ast.HintForGroupBy } - case 1602: + case 1604: { parser.yyVAL.item = &ast.IndexHint{ IndexNames: yyS[yypt-1].item.([]model.CIStr), @@ -17289,134 +17318,134 @@ yynewstate: HintScope: yyS[yypt-3].item.(ast.IndexHintScope), } } - case 1603: + case 1605: { var nameList []model.CIStr parser.yyVAL.item = nameList } - case 1604: + case 1606: { parser.yyVAL.item = []model.CIStr{model.NewCIStr(yyS[yypt-0].ident)} } - case 1605: + case 1607: { parser.yyVAL.item = append(yyS[yypt-2].item.([]model.CIStr), model.NewCIStr(yyS[yypt-0].ident)) } - case 1606: + case 1608: { parser.yyVAL.item = []model.CIStr{model.NewCIStr(yyS[yypt-0].ident)} } - case 1607: + case 1609: { parser.yyVAL.item = append(yyS[yypt-2].item.([]model.CIStr), model.NewCIStr(yyS[yypt-0].ident)) } - case 1608: + case 1610: { parser.yyVAL.item = []*ast.IndexHint{yyS[yypt-0].item.(*ast.IndexHint)} } - case 1609: + case 1611: { parser.yyVAL.item = append(yyS[yypt-1].item.([]*ast.IndexHint), yyS[yypt-0].item.(*ast.IndexHint)) } - case 1610: + case 1612: { parser.yyVAL.item = []*ast.IndexHint{} } - case 1612: + case 1614: { parser.yyVAL.item = ast.NewCrossJoin(yyS[yypt-2].item.(ast.ResultSetNode), yyS[yypt-0].item.(ast.ResultSetNode)) } - case 1613: + case 1615: { 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 1614: + case 1616: { 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 1615: + case 1617: { 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 1616: + case 1618: { 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 1617: + case 1619: { parser.yyVAL.item = &ast.Join{Left: yyS[yypt-3].item.(ast.ResultSetNode), Right: yyS[yypt-0].item.(ast.ResultSetNode), NaturalJoin: true} } - case 1618: + case 1620: { 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 1619: + case 1621: { parser.yyVAL.item = &ast.Join{Left: yyS[yypt-2].item.(ast.ResultSetNode), Right: yyS[yypt-0].item.(ast.ResultSetNode), StraightJoin: true} } - case 1620: + case 1622: { 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 1621: + case 1623: { parser.yyVAL.item = ast.LeftJoin } - case 1622: + case 1624: { parser.yyVAL.item = ast.RightJoin } - case 1628: + case 1630: { parser.yyVAL.item = nil } - case 1629: + case 1631: { parser.yyVAL.item = &ast.Limit{Count: yyS[yypt-0].item.(ast.ValueExpr)} } - case 1630: + case 1632: { parser.yyVAL.item = ast.NewValueExpr(yyS[yypt-0].item, parser.charset, parser.collation) } - case 1631: + case 1633: { parser.yyVAL.item = ast.NewParamMarkerExpr(yyS[yypt].offset) } - case 1636: + case 1638: { parser.yyVAL.item = ast.NewValueExpr(uint64(1), parser.charset, parser.collation) } - case 1638: + case 1640: { parser.yyVAL.item = &ast.Limit{Count: yyS[yypt-0].item.(ast.ExprNode)} } - case 1639: + case 1641: { parser.yyVAL.item = &ast.Limit{Offset: yyS[yypt-2].item.(ast.ExprNode), Count: yyS[yypt-0].item.(ast.ExprNode)} } - case 1640: + case 1642: { parser.yyVAL.item = &ast.Limit{Offset: yyS[yypt-0].item.(ast.ExprNode), Count: yyS[yypt-2].item.(ast.ExprNode)} } - case 1641: + case 1643: { parser.yyVAL.item = &ast.Limit{Count: yyS[yypt-2].item.(ast.ExprNode)} } - case 1642: + case 1644: { parser.yyVAL.item = nil } - case 1644: + case 1646: { opt := &ast.SelectStmtOpts{} opt.SQLCache = true opt.TableHints = yyS[yypt-0].item.([]*ast.TableOptimizerHint) parser.yyVAL.item = opt } - case 1645: + case 1647: { opt := &ast.SelectStmtOpts{} opt.SQLCache = true @@ -17428,61 +17457,61 @@ yynewstate: } parser.yyVAL.item = opt } - case 1646: + case 1648: { opt := &ast.SelectStmtOpts{} opt.SQLCache = true opt.Priority = yyS[yypt-0].item.(mysql.PriorityEnum) parser.yyVAL.item = opt } - case 1647: + case 1649: { opt := &ast.SelectStmtOpts{} opt.SQLCache = true opt.SQLSmallResult = true parser.yyVAL.item = opt } - case 1648: + case 1650: { opt := &ast.SelectStmtOpts{} opt.SQLCache = true opt.SQLBigResult = true parser.yyVAL.item = opt } - case 1649: + case 1651: { opt := &ast.SelectStmtOpts{} opt.SQLCache = true opt.SQLBufferResult = true parser.yyVAL.item = opt } - case 1650: + case 1652: { opt := &ast.SelectStmtOpts{} opt.SQLCache = yyS[yypt-0].item.(bool) parser.yyVAL.item = opt } - case 1651: + case 1653: { opt := &ast.SelectStmtOpts{} opt.SQLCache = true opt.CalcFoundRows = true parser.yyVAL.item = opt } - case 1652: + case 1654: { opt := &ast.SelectStmtOpts{} opt.SQLCache = true opt.StraightJoin = true parser.yyVAL.item = opt } - case 1653: + case 1655: { opt := &ast.SelectStmtOpts{} opt.SQLCache = true parser.yyVAL.item = opt } - case 1655: + case 1657: { opts := yyS[yypt-1].item.(*ast.SelectStmtOpts) opt := yyS[yypt-0].item.(*ast.SelectStmtOpts) @@ -17527,7 +17556,7 @@ yynewstate: parser.yyVAL.item = opts } - case 1657: + case 1659: { hints, warns := parser.parseHint(yyS[yypt-0].ident) for _, w := range warns { @@ -17536,31 +17565,31 @@ yynewstate: } parser.yyVAL.item = hints } - case 1658: + case 1660: { parser.yyVAL.item = nil } - case 1660: + case 1662: { parser.yyVAL.item = true } - case 1661: + case 1663: { parser.yyVAL.item = false } - case 1662: + case 1664: { parser.yyVAL.item = &ast.FieldList{Fields: yyS[yypt-0].item.([]*ast.SelectField)} } - case 1663: + case 1665: { parser.yyVAL.item = nil } - case 1665: + case 1667: { parser.yyVAL.item = nil } - case 1666: + case 1668: { x := &ast.SelectIntoOption{ Tp: ast.SelectIntoOutfile, @@ -17575,7 +17604,7 @@ yynewstate: parser.yyVAL.item = x } - case 1667: + case 1669: { rs := yyS[yypt-1].statement.(*ast.SelectStmt) endOffset := parser.endOffset(&yyS[yypt]) @@ -17585,14 +17614,14 @@ yynewstate: rs.SetText(parser.lexer.client, src[yyS[yypt-1].offset:yyS[yypt].offset]) parser.yyVAL.expr = &ast.SubqueryExpr{Query: rs} } - case 1668: + case 1670: { 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 1669: + case 1671: { rs := yyS[yypt-1].statement.(*ast.SelectStmt) endOffset := parser.endOffset(&yyS[yypt]) @@ -17602,7 +17631,7 @@ yynewstate: rs.SetText(parser.lexer.client, src[yyS[yypt-1].offset:yyS[yypt].offset]) parser.yyVAL.expr = &ast.SubqueryExpr{Query: rs} } - case 1670: + case 1672: { subQuery := yyS[yypt-1].expr.(*ast.SubqueryExpr).Query isRecursive := true @@ -17625,32 +17654,32 @@ yynewstate: parser.yyVAL.expr = &ast.SubqueryExpr{Query: rs} } } - case 1671: + case 1673: { parser.yyVAL.item = nil } - case 1672: + case 1674: { parser.yyVAL.item = &ast.SelectLockInfo{ LockType: ast.SelectLockForUpdate, Tables: yyS[yypt-0].item.([]*ast.TableName), } } - case 1673: + case 1675: { parser.yyVAL.item = &ast.SelectLockInfo{ LockType: ast.SelectLockForShare, Tables: yyS[yypt-0].item.([]*ast.TableName), } } - case 1674: + case 1676: { parser.yyVAL.item = &ast.SelectLockInfo{ LockType: ast.SelectLockForUpdateNoWait, Tables: yyS[yypt-1].item.([]*ast.TableName), } } - case 1675: + case 1677: { parser.yyVAL.item = &ast.SelectLockInfo{ LockType: ast.SelectLockForUpdateWaitN, @@ -17658,55 +17687,55 @@ yynewstate: Tables: yyS[yypt-2].item.([]*ast.TableName), } } - case 1676: + case 1678: { parser.yyVAL.item = &ast.SelectLockInfo{ LockType: ast.SelectLockForShareNoWait, Tables: yyS[yypt-1].item.([]*ast.TableName), } } - case 1677: + case 1679: { parser.yyVAL.item = &ast.SelectLockInfo{ LockType: ast.SelectLockForUpdateSkipLocked, Tables: yyS[yypt-2].item.([]*ast.TableName), } } - case 1678: + case 1680: { parser.yyVAL.item = &ast.SelectLockInfo{ LockType: ast.SelectLockForShareSkipLocked, Tables: yyS[yypt-2].item.([]*ast.TableName), } } - case 1679: + case 1681: { parser.yyVAL.item = &ast.SelectLockInfo{ LockType: ast.SelectLockForShare, Tables: []*ast.TableName{}, } } - case 1680: + case 1682: { parser.yyVAL.item = []*ast.TableName{} } - case 1681: + case 1683: { parser.yyVAL.item = yyS[yypt-0].item.([]*ast.TableName) } - case 1684: + case 1686: { setOpr := yyS[yypt-0].statement.(*ast.SetOprStmt) setOpr.With = yyS[yypt-1].item.(*ast.WithClause) parser.yyVAL.statement = setOpr } - case 1685: + case 1687: { setOpr := yyS[yypt-0].statement.(*ast.SetOprStmt) setOpr.With = yyS[yypt-1].item.(*ast.WithClause) parser.yyVAL.statement = setOpr } - case 1686: + case 1688: { setOprList1 := yyS[yypt-2].item.([]ast.Node) if sel, isSelect := setOprList1[len(setOprList1)-1].(*ast.SelectStmt); isSelect && !sel.IsInBraces { @@ -17723,7 +17752,7 @@ yynewstate: setOpr.SelectList.Selects = append(setOpr.SelectList.Selects, st) parser.yyVAL.statement = setOpr } - case 1687: + case 1689: { setOprList1 := yyS[yypt-2].item.([]ast.Node) if sel, isSelect := setOprList1[len(setOprList1)-1].(*ast.SelectStmt); isSelect && !sel.IsInBraces { @@ -17746,7 +17775,7 @@ yynewstate: setOpr := &ast.SetOprStmt{SelectList: &ast.SetOprSelectList{Selects: setOprList}} parser.yyVAL.statement = setOpr } - case 1688: + case 1690: { setOprList1 := yyS[yypt-3].item.([]ast.Node) if sel, isSelect := setOprList1[len(setOprList1)-1].(*ast.SelectStmt); isSelect && !sel.IsInBraces { @@ -17770,7 +17799,7 @@ yynewstate: setOpr.OrderBy = yyS[yypt-0].item.(*ast.OrderByClause) parser.yyVAL.statement = setOpr } - case 1689: + case 1691: { setOprList1 := yyS[yypt-3].item.([]ast.Node) if sel, isSelect := setOprList1[len(setOprList1)-1].(*ast.SelectStmt); isSelect && !sel.IsInBraces { @@ -17794,7 +17823,7 @@ yynewstate: setOpr.Limit = yyS[yypt-0].item.(*ast.Limit) parser.yyVAL.statement = setOpr } - case 1690: + case 1692: { setOprList1 := yyS[yypt-4].item.([]ast.Node) if sel, isSelect := setOprList1[len(setOprList1)-1].(*ast.SelectStmt); isSelect && !sel.IsInBraces { @@ -17819,7 +17848,7 @@ yynewstate: setOpr.Limit = yyS[yypt-0].item.(*ast.Limit) parser.yyVAL.statement = setOpr } - case 1691: + case 1693: { var setOprList []ast.Node var with *ast.WithClause @@ -17835,7 +17864,7 @@ yynewstate: setOpr.OrderBy = yyS[yypt-0].item.(*ast.OrderByClause) parser.yyVAL.statement = setOpr } - case 1692: + case 1694: { var setOprList []ast.Node var with *ast.WithClause @@ -17851,7 +17880,7 @@ yynewstate: setOpr.Limit = yyS[yypt-0].item.(*ast.Limit) parser.yyVAL.statement = setOpr } - case 1693: + case 1695: { var setOprList []ast.Node var with *ast.WithClause @@ -17868,7 +17897,7 @@ yynewstate: setOpr.Limit = yyS[yypt-0].item.(*ast.Limit) parser.yyVAL.statement = setOpr } - case 1695: + case 1697: { setOprList1 := yyS[yypt-2].item.([]ast.Node) setOprList2 := yyS[yypt-0].item.([]ast.Node) @@ -17884,11 +17913,11 @@ yynewstate: } parser.yyVAL.item = append(setOprList1, setOprList2...) } - case 1696: + case 1698: { parser.yyVAL.item = []ast.Node{yyS[yypt-0].statement.(*ast.SelectStmt)} } - case 1697: + case 1699: { var setOprList []ast.Node switch x := yyS[yypt-0].expr.(*ast.SubqueryExpr).Query.(type) { @@ -17899,7 +17928,7 @@ yynewstate: } parser.yyVAL.item = setOprList } - case 1698: + case 1700: { var tp ast.SetOprType tp = ast.Union @@ -17908,7 +17937,7 @@ yynewstate: } parser.yyVAL.item = &tp } - case 1699: + case 1701: { var tp ast.SetOprType tp = ast.Except @@ -17917,7 +17946,7 @@ yynewstate: } parser.yyVAL.item = &tp } - case 1700: + case 1702: { var tp ast.SetOprType tp = ast.Intersect @@ -17926,7 +17955,7 @@ yynewstate: } parser.yyVAL.item = &tp } - case 1702: + case 1704: { parser.yyVAL.statement = &ast.ChangeStmt{ NodeType: ast.PumpType, @@ -17934,7 +17963,7 @@ yynewstate: NodeID: yyS[yypt-0].ident, } } - case 1703: + case 1705: { parser.yyVAL.statement = &ast.ChangeStmt{ NodeType: ast.DrainerType, @@ -17942,19 +17971,19 @@ yynewstate: NodeID: yyS[yypt-0].ident, } } - case 1704: + case 1706: { parser.yyVAL.statement = &ast.SetStmt{Variables: yyS[yypt-0].item.([]*ast.VariableAssignment)} } - case 1705: + case 1707: { parser.yyVAL.statement = &ast.SetPwdStmt{Password: yyS[yypt-0].ident} } - case 1706: + case 1708: { parser.yyVAL.statement = &ast.SetPwdStmt{User: yyS[yypt-2].item.(*auth.UserIdentity), Password: yyS[yypt-0].ident} } - case 1707: + case 1709: { vars := yyS[yypt-0].item.([]*ast.VariableAssignment) for _, v := range vars { @@ -17962,11 +17991,11 @@ yynewstate: } parser.yyVAL.statement = &ast.SetStmt{Variables: vars} } - case 1708: + case 1710: { parser.yyVAL.statement = &ast.SetStmt{Variables: yyS[yypt-0].item.([]*ast.VariableAssignment)} } - case 1709: + case 1711: { assigns := yyS[yypt-0].item.([]*ast.VariableAssignment) for i := 0; i < len(assigns); i++ { @@ -17977,19 +18006,23 @@ yynewstate: } parser.yyVAL.statement = &ast.SetStmt{Variables: assigns} } - case 1710: + case 1712: { parser.yyVAL.statement = &ast.SetConfigStmt{Type: strings.ToLower(yyS[yypt-3].ident), Name: yyS[yypt-2].ident, Value: yyS[yypt-0].expr} } - case 1711: + case 1713: { parser.yyVAL.statement = &ast.SetConfigStmt{Instance: yyS[yypt-3].ident, Name: yyS[yypt-2].ident, Value: yyS[yypt-0].expr} } - case 1712: + case 1714: + { + parser.yyVAL.statement = &ast.SetSessionStatesStmt{SessionStates: yyS[yypt-0].ident} + } + case 1715: { parser.yyVAL.statement = yyS[yypt-0].item.(*ast.SetRoleStmt) } - case 1713: + case 1716: { tmp := yyS[yypt-2].item.(*ast.SetRoleStmt) parser.yyVAL.statement = &ast.SetDefaultRoleStmt{ @@ -17998,27 +18031,27 @@ yynewstate: UserList: yyS[yypt-0].item.([]*auth.UserIdentity), } } - case 1714: + case 1717: { parser.yyVAL.item = &ast.SetRoleStmt{SetRoleOpt: ast.SetRoleNone, RoleList: nil} } - case 1715: + case 1718: { parser.yyVAL.item = &ast.SetRoleStmt{SetRoleOpt: ast.SetRoleAll, RoleList: nil} } - case 1716: + case 1719: { parser.yyVAL.item = &ast.SetRoleStmt{SetRoleOpt: ast.SetRoleRegular, RoleList: yyS[yypt-0].item.([]*auth.RoleIdentity)} } - case 1717: + case 1720: { parser.yyVAL.item = &ast.SetRoleStmt{SetRoleOpt: ast.SetRoleAllExcept, RoleList: yyS[yypt-0].item.([]*auth.RoleIdentity)} } - case 1719: + case 1722: { parser.yyVAL.item = &ast.SetRoleStmt{SetRoleOpt: ast.SetRoleDefault, RoleList: nil} } - case 1720: + case 1723: { if yyS[yypt-0].item != nil { parser.yyVAL.item = yyS[yypt-0].item @@ -18026,7 +18059,7 @@ yynewstate: parser.yyVAL.item = []*ast.VariableAssignment{} } } - case 1721: + case 1724: { if yyS[yypt-0].item != nil { varAssigns := yyS[yypt-0].item.([]*ast.VariableAssignment) @@ -18035,28 +18068,28 @@ yynewstate: parser.yyVAL.item = yyS[yypt-2].item } } - case 1722: + case 1725: { 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 1723: + case 1726: { 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 1724: + case 1727: { 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 1725: + case 1728: { varAssigns := []*ast.VariableAssignment{} asof := yyS[yypt-0].item.(*ast.AsOfClause) @@ -18065,59 +18098,59 @@ yynewstate: } parser.yyVAL.item = varAssigns } - case 1726: + case 1729: { parser.yyVAL.ident = ast.RepeatableRead } - case 1727: + case 1730: { parser.yyVAL.ident = ast.ReadCommitted } - case 1728: + case 1731: { parser.yyVAL.ident = ast.ReadUncommitted } - case 1729: + case 1732: { parser.yyVAL.ident = ast.Serializable } - case 1730: + case 1733: { parser.yyVAL.expr = ast.NewValueExpr("ON", parser.charset, parser.collation) } - case 1731: + case 1734: { parser.yyVAL.expr = ast.NewValueExpr("BINARY", parser.charset, parser.collation) } - case 1736: + case 1739: { parser.yyVAL.ident = yyS[yypt-2].ident + "." + yyS[yypt-0].ident } - case 1738: + case 1741: { parser.yyVAL.ident = yyS[yypt-2].ident + "." + yyS[yypt-0].ident } - case 1739: + case 1742: { parser.yyVAL.ident = yyS[yypt-2].ident + "-" + yyS[yypt-0].ident } - case 1740: + case 1743: { parser.yyVAL.item = &ast.VariableAssignment{Name: yyS[yypt-2].ident, Value: yyS[yypt-0].expr, IsSystem: true} } - case 1741: + case 1744: { parser.yyVAL.item = &ast.VariableAssignment{Name: yyS[yypt-2].ident, Value: yyS[yypt-0].expr, IsGlobal: true, IsSystem: true} } - case 1742: + case 1745: { parser.yyVAL.item = &ast.VariableAssignment{Name: yyS[yypt-2].ident, Value: yyS[yypt-0].expr, IsSystem: true} } - case 1743: + case 1746: { parser.yyVAL.item = &ast.VariableAssignment{Name: yyS[yypt-2].ident, Value: yyS[yypt-0].expr, IsSystem: true} } - case 1744: + case 1747: { v := strings.ToLower(yyS[yypt-2].ident) var isGlobal bool @@ -18133,27 +18166,27 @@ yynewstate: } parser.yyVAL.item = &ast.VariableAssignment{Name: v, Value: yyS[yypt-0].expr, IsGlobal: isGlobal, IsSystem: true} } - case 1745: + case 1748: { v := yyS[yypt-2].ident v = strings.TrimPrefix(v, "@") parser.yyVAL.item = &ast.VariableAssignment{Name: v, Value: yyS[yypt-0].expr} } - case 1746: + case 1749: { parser.yyVAL.item = &ast.VariableAssignment{ Name: ast.SetNames, Value: ast.NewValueExpr(yyS[yypt-0].ident, "", ""), } } - case 1747: + case 1750: { parser.yyVAL.item = &ast.VariableAssignment{ Name: ast.SetNames, Value: ast.NewValueExpr(yyS[yypt-2].ident, "", ""), } } - case 1748: + case 1751: { parser.yyVAL.item = &ast.VariableAssignment{ Name: ast.SetNames, @@ -18161,24 +18194,24 @@ yynewstate: ExtendValue: ast.NewValueExpr(yyS[yypt-0].ident, "", ""), } } - case 1749: + case 1752: { v := &ast.DefaultExpr{} parser.yyVAL.item = &ast.VariableAssignment{Name: ast.SetNames, Value: v} } - case 1750: + case 1753: { parser.yyVAL.item = &ast.VariableAssignment{Name: ast.SetCharset, Value: yyS[yypt-0].expr} } - case 1751: + case 1754: { parser.yyVAL.expr = ast.NewValueExpr(yyS[yypt-0].ident, "", "") } - case 1752: + case 1755: { parser.yyVAL.expr = &ast.DefaultExpr{} } - case 1753: + case 1756: { // Validate input charset name to keep the same behavior as parser of MySQL. cs, err := charset.GetCharsetInfo(yyS[yypt-0].ident) @@ -18190,11 +18223,11 @@ yynewstate: // to keep lower case of input for generated column restore. parser.yyVAL.ident = cs.Name } - case 1754: + case 1757: { parser.yyVAL.ident = charset.CharsetBin } - case 1755: + case 1758: { info, err := charset.GetCollationByName(yyS[yypt-0].ident) if err != nil { @@ -18203,19 +18236,19 @@ yynewstate: } parser.yyVAL.ident = info.Name } - case 1756: + case 1759: { parser.yyVAL.ident = charset.CollationBin } - case 1757: + case 1760: { parser.yyVAL.item = []*ast.VariableAssignment{yyS[yypt-0].item.(*ast.VariableAssignment)} } - case 1758: + case 1761: { parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.VariableAssignment), yyS[yypt-0].item.(*ast.VariableAssignment)) } - case 1761: + case 1764: { v := strings.ToLower(yyS[yypt-0].ident) var isGlobal bool @@ -18232,77 +18265,77 @@ yynewstate: } parser.yyVAL.expr = &ast.VariableExpr{Name: v, IsGlobal: isGlobal, IsSystem: true, ExplicitScope: explicitScope} } - case 1762: + case 1765: { v := yyS[yypt-0].ident v = strings.TrimPrefix(v, "@") parser.yyVAL.expr = &ast.VariableExpr{Name: v, IsGlobal: false, IsSystem: false} } - case 1763: + case 1766: { parser.yyVAL.item = &auth.UserIdentity{Username: yyS[yypt-0].ident, Hostname: "%"} } - case 1764: + case 1767: { parser.yyVAL.item = &auth.UserIdentity{Username: yyS[yypt-2].ident, Hostname: strings.ToLower(yyS[yypt-0].ident)} } - case 1765: + case 1768: { parser.yyVAL.item = &auth.UserIdentity{Username: yyS[yypt-1].ident, Hostname: strings.ToLower(strings.TrimPrefix(yyS[yypt-0].ident, "@"))} } - case 1766: + case 1769: { parser.yyVAL.item = &auth.UserIdentity{CurrentUser: true} } - case 1767: + case 1770: { parser.yyVAL.item = []*auth.UserIdentity{yyS[yypt-0].item.(*auth.UserIdentity)} } - case 1768: + case 1771: { parser.yyVAL.item = append(yyS[yypt-2].item.([]*auth.UserIdentity), yyS[yypt-0].item.(*auth.UserIdentity)) } - case 1770: + case 1773: { parser.yyVAL.ident = yyS[yypt-1].ident } - case 1774: + case 1777: { parser.yyVAL.item = &auth.RoleIdentity{Username: yyS[yypt-2].ident, Hostname: strings.ToLower(yyS[yypt-0].ident)} } - case 1775: + case 1778: { parser.yyVAL.item = &auth.RoleIdentity{Username: yyS[yypt-1].ident, Hostname: strings.ToLower(strings.TrimPrefix(yyS[yypt-0].ident, "@"))} } - case 1776: + case 1779: { parser.yyVAL.item = &auth.RoleIdentity{Username: yyS[yypt-0].ident, Hostname: "%"} } - case 1777: + case 1780: { parser.yyVAL.item = yyS[yypt-0].item } - case 1778: + case 1781: { parser.yyVAL.item = &auth.RoleIdentity{Username: yyS[yypt-0].ident, Hostname: "%"} } - case 1779: + case 1782: { parser.yyVAL.item = yyS[yypt-0].item } - case 1780: + case 1783: { parser.yyVAL.item = []*auth.RoleIdentity{yyS[yypt-0].item.(*auth.RoleIdentity)} } - case 1781: + case 1784: { parser.yyVAL.item = append(yyS[yypt-2].item.([]*auth.RoleIdentity), yyS[yypt-0].item.(*auth.RoleIdentity)) } - case 1782: + case 1785: { parser.yyVAL.statement = &ast.AdminStmt{Tp: ast.AdminShowDDL} } - case 1783: + case 1786: { stmt := &ast.AdminStmt{Tp: ast.AdminShowDDLJobs} if yyS[yypt-0].item != nil { @@ -18310,7 +18343,7 @@ yynewstate: } parser.yyVAL.statement = stmt } - case 1784: + case 1787: { stmt := &ast.AdminStmt{ Tp: ast.AdminShowDDLJobs, @@ -18321,21 +18354,21 @@ yynewstate: } parser.yyVAL.statement = stmt } - case 1785: + case 1788: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminShowNextRowID, Tables: []*ast.TableName{yyS[yypt-1].item.(*ast.TableName)}, } } - case 1786: + case 1789: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminCheckTable, Tables: yyS[yypt-0].item.([]*ast.TableName), } } - case 1787: + case 1790: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminCheckIndex, @@ -18343,7 +18376,7 @@ yynewstate: Index: string(yyS[yypt-0].ident), } } - case 1788: + case 1791: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminRecoverIndex, @@ -18351,7 +18384,7 @@ yynewstate: Index: string(yyS[yypt-0].ident), } } - case 1789: + case 1792: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminCleanupIndex, @@ -18359,7 +18392,7 @@ yynewstate: Index: string(yyS[yypt-0].ident), } } - case 1790: + case 1793: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminCheckIndexRange, @@ -18368,136 +18401,136 @@ yynewstate: HandleRanges: yyS[yypt-0].item.([]ast.HandleRange), } } - case 1791: + case 1794: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminChecksumTable, Tables: yyS[yypt-0].item.([]*ast.TableName), } } - case 1792: + case 1795: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminCancelDDLJobs, JobIDs: yyS[yypt-0].item.([]int64), } } - case 1793: + case 1796: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminShowDDLJobQueries, JobIDs: yyS[yypt-0].item.([]int64), } } - case 1794: + case 1797: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminShowSlow, ShowSlow: yyS[yypt-0].item.(*ast.ShowSlow), } } - case 1795: + case 1798: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminReloadExprPushdownBlacklist, } } - case 1796: + case 1799: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminReloadOptRuleBlacklist, } } - case 1797: + case 1800: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminPluginEnable, Plugins: yyS[yypt-0].item.([]string), } } - case 1798: + case 1801: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminPluginDisable, Plugins: yyS[yypt-0].item.([]string), } } - case 1799: + case 1802: { parser.yyVAL.statement = &ast.CleanupTableLockStmt{ Tables: yyS[yypt-0].item.([]*ast.TableName), } } - case 1800: + case 1803: { parser.yyVAL.statement = &ast.RepairTableStmt{ Table: yyS[yypt-1].item.(*ast.TableName), CreateStmt: yyS[yypt-0].statement.(*ast.CreateTableStmt), } } - case 1801: + case 1804: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminFlushBindings, } } - case 1802: + case 1805: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminCaptureBindings, } } - case 1803: + case 1806: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminEvolveBindings, } } - case 1804: + case 1807: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminReloadBindings, } } - case 1805: + case 1808: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminReloadStatistics, } } - case 1806: + case 1809: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminReloadStatistics, } } - case 1807: + case 1810: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminShowTelemetry, } } - case 1808: + case 1811: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminResetTelemetryID, } } - case 1809: + case 1812: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminFlushPlanCache, StatementScope: yyS[yypt-1].item.(ast.StatementScope), } } - case 1810: + case 1813: { parser.yyVAL.item = &ast.ShowSlow{ Tp: ast.ShowSlowRecent, Count: getUint64FromNUM(yyS[yypt-0].item), } } - case 1811: + case 1814: { parser.yyVAL.item = &ast.ShowSlow{ Tp: ast.ShowSlowTop, @@ -18505,7 +18538,7 @@ yynewstate: Count: getUint64FromNUM(yyS[yypt-0].item), } } - case 1812: + case 1815: { parser.yyVAL.item = &ast.ShowSlow{ Tp: ast.ShowSlowTop, @@ -18513,7 +18546,7 @@ yynewstate: Count: getUint64FromNUM(yyS[yypt-0].item), } } - case 1813: + case 1816: { parser.yyVAL.item = &ast.ShowSlow{ Tp: ast.ShowSlowTop, @@ -18521,27 +18554,27 @@ yynewstate: Count: getUint64FromNUM(yyS[yypt-0].item), } } - case 1814: + case 1817: { parser.yyVAL.item = []ast.HandleRange{yyS[yypt-0].item.(ast.HandleRange)} } - case 1815: + case 1818: { parser.yyVAL.item = append(yyS[yypt-2].item.([]ast.HandleRange), yyS[yypt-0].item.(ast.HandleRange)) } - case 1816: + case 1819: { parser.yyVAL.item = ast.HandleRange{Begin: yyS[yypt-3].item.(int64), End: yyS[yypt-1].item.(int64)} } - case 1817: + case 1820: { parser.yyVAL.item = []int64{yyS[yypt-0].item.(int64)} } - case 1818: + case 1821: { parser.yyVAL.item = append(yyS[yypt-2].item.([]int64), yyS[yypt-0].item.(int64)) } - case 1819: + case 1822: { stmt := yyS[yypt-1].item.(*ast.ShowStmt) if yyS[yypt-0].item != nil { @@ -18553,21 +18586,21 @@ yynewstate: } parser.yyVAL.statement = stmt } - case 1820: + case 1823: { parser.yyVAL.statement = &ast.ShowStmt{ Tp: ast.ShowCreateTable, Table: yyS[yypt-0].item.(*ast.TableName), } } - case 1821: + case 1824: { parser.yyVAL.statement = &ast.ShowStmt{ Tp: ast.ShowCreateView, Table: yyS[yypt-0].item.(*ast.TableName), } } - case 1822: + case 1825: { parser.yyVAL.statement = &ast.ShowStmt{ Tp: ast.ShowCreateDatabase, @@ -18575,21 +18608,21 @@ yynewstate: DBName: yyS[yypt-0].ident, } } - case 1823: + case 1826: { parser.yyVAL.statement = &ast.ShowStmt{ Tp: ast.ShowCreateSequence, Table: yyS[yypt-0].item.(*ast.TableName), } } - case 1824: + case 1827: { parser.yyVAL.statement = &ast.ShowStmt{ Tp: ast.ShowCreatePlacementPolicy, DBName: yyS[yypt-0].ident, } } - case 1825: + case 1828: { // See https://dev.mysql.com/doc/refman/5.7/en/show-create-user.html parser.yyVAL.statement = &ast.ShowStmt{ @@ -18597,14 +18630,14 @@ yynewstate: User: yyS[yypt-0].item.(*auth.UserIdentity), } } - case 1826: + case 1829: { parser.yyVAL.statement = &ast.ShowStmt{ Tp: ast.ShowCreateImport, DBName: yyS[yypt-0].ident, // we reuse DBName of ShowStmt } } - case 1827: + case 1830: { stmt := &ast.ShowStmt{ Tp: ast.ShowRegions, @@ -18616,14 +18649,14 @@ yynewstate: } parser.yyVAL.statement = stmt } - case 1828: + case 1831: { parser.yyVAL.statement = &ast.ShowStmt{ Tp: ast.ShowTableNextRowId, Table: yyS[yypt-1].item.(*ast.TableName), } } - case 1829: + case 1832: { stmt := &ast.ShowStmt{ Tp: ast.ShowRegions, @@ -18636,12 +18669,12 @@ yynewstate: } parser.yyVAL.statement = stmt } - case 1830: + case 1833: { // See https://dev.mysql.com/doc/refman/5.7/en/show-grants.html parser.yyVAL.statement = &ast.ShowStmt{Tp: ast.ShowGrants} } - case 1831: + case 1834: { // See https://dev.mysql.com/doc/refman/5.7/en/show-grants.html if yyS[yypt-0].item != nil { @@ -18658,26 +18691,26 @@ yynewstate: } } } - case 1832: + case 1835: { parser.yyVAL.statement = &ast.ShowStmt{ Tp: ast.ShowMasterStatus, } } - case 1833: + case 1836: { parser.yyVAL.statement = &ast.ShowStmt{ Tp: ast.ShowProcessList, Full: yyS[yypt-1].item.(bool), } } - case 1834: + case 1837: { parser.yyVAL.statement = &ast.ShowStmt{ Tp: ast.ShowProfiles, } } - case 1835: + case 1838: { v := &ast.ShowStmt{ Tp: ast.ShowProfile, @@ -18693,37 +18726,37 @@ yynewstate: } parser.yyVAL.statement = v } - case 1836: + case 1839: { parser.yyVAL.statement = &ast.ShowStmt{ Tp: ast.ShowPrivileges, } } - case 1837: + case 1840: { parser.yyVAL.statement = &ast.ShowStmt{ Tp: ast.ShowBuiltins, } } - case 1838: + case 1841: { parser.yyVAL.statement = yyS[yypt-0].item.(*ast.ShowStmt) } - case 1839: + case 1842: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowPlacementForDatabase, DBName: yyS[yypt-0].ident, } } - case 1840: + case 1843: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowPlacementForTable, Table: yyS[yypt-0].item.(*ast.TableName), } } - case 1841: + case 1844: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowPlacementForPartition, @@ -18731,90 +18764,90 @@ yynewstate: Partition: model.NewCIStr(yyS[yypt-0].ident), } } - case 1842: + case 1845: { parser.yyVAL.item = nil } - case 1844: + case 1847: { parser.yyVAL.item = []int{yyS[yypt-0].item.(int)} } - case 1845: + case 1848: { l := yyS[yypt-2].item.([]int) l = append(l, yyS[yypt-0].item.(int)) parser.yyVAL.item = l } - case 1846: + case 1849: { parser.yyVAL.item = ast.ProfileTypeCPU } - case 1847: + case 1850: { parser.yyVAL.item = ast.ProfileTypeMemory } - case 1848: + case 1851: { parser.yyVAL.item = ast.ProfileTypeBlockIo } - case 1849: + case 1852: { parser.yyVAL.item = ast.ProfileTypeContextSwitch } - case 1850: + case 1853: { parser.yyVAL.item = ast.ProfileTypePageFaults } - case 1851: + case 1854: { parser.yyVAL.item = ast.ProfileTypeIpc } - case 1852: + case 1855: { parser.yyVAL.item = ast.ProfileTypeSwaps } - case 1853: + case 1856: { parser.yyVAL.item = ast.ProfileTypeSource } - case 1854: + case 1857: { parser.yyVAL.item = ast.ProfileTypeAll } - case 1855: + case 1858: { parser.yyVAL.item = nil } - case 1856: + case 1859: { v := yyS[yypt-0].item.(int64) parser.yyVAL.item = &v } - case 1857: + case 1860: { parser.yyVAL.item = nil } - case 1858: + case 1861: { parser.yyVAL.item = yyS[yypt-0].item.([]*auth.RoleIdentity) } - case 1864: + case 1867: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowEngines} } - case 1865: + case 1868: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowDatabases} } - case 1866: + case 1869: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowConfig} } - case 1867: + case 1870: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowCharset} } - case 1868: + case 1871: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowTables, @@ -18822,28 +18855,28 @@ yynewstate: Full: yyS[yypt-2].item.(bool), } } - case 1869: + case 1872: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowOpenTables, DBName: yyS[yypt-0].ident, } } - case 1870: + case 1873: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowTableStatus, DBName: yyS[yypt-0].ident, } } - case 1871: + case 1874: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowIndex, Table: yyS[yypt-0].item.(*ast.TableName), } } - case 1872: + case 1875: { show := &ast.ShowStmt{ Tp: ast.ShowIndex, @@ -18851,7 +18884,7 @@ yynewstate: } parser.yyVAL.item = show } - case 1873: + case 1876: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowColumns, @@ -18860,7 +18893,7 @@ yynewstate: Full: yyS[yypt-3].item.(bool), } } - case 1874: + case 1877: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowColumns, @@ -18870,81 +18903,81 @@ yynewstate: Extended: true, } } - case 1875: + case 1878: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowWarnings, CountWarningsOrErrors: true} } - case 1876: + case 1879: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowWarnings} } - case 1877: + case 1880: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowErrors, CountWarningsOrErrors: true} } - case 1878: + case 1881: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowErrors} } - case 1879: + case 1882: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowVariables, GlobalScope: yyS[yypt-1].item.(bool), } } - case 1880: + case 1883: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowStatus, GlobalScope: yyS[yypt-1].item.(bool), } } - case 1881: + case 1884: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowBindings, GlobalScope: yyS[yypt-1].item.(bool), } } - case 1882: + case 1885: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowCollation, } } - case 1883: + case 1886: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowTriggers, DBName: yyS[yypt-0].ident, } } - case 1884: + case 1887: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowBindingCacheStatus, } } - case 1885: + case 1888: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowProcedureStatus, } } - case 1886: + case 1889: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowPumpStatus, } } - case 1887: + case 1890: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowDrainerStatus, } } - case 1888: + case 1891: { // 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 @@ -18954,185 +18987,189 @@ yynewstate: Tp: ast.ShowProcedureStatus, } } - case 1889: + case 1892: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowEvents, DBName: yyS[yypt-0].ident, } } - case 1890: + case 1893: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowPlugins, } } - case 1891: + case 1894: + { + parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowSessionStates} + } + case 1895: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowStatsExtended} } - case 1892: + case 1896: { - parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowStatsMeta} + parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowStatsMeta, Table: &ast.TableName{Name: model.NewCIStr("STATS_META"), Schema: model.NewCIStr(mysql.SystemDB)}} } - case 1893: + case 1897: { - parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowStatsHistograms} + parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowStatsHistograms, Table: &ast.TableName{Name: model.NewCIStr("STATS_HISTOGRAMS"), Schema: model.NewCIStr(mysql.SystemDB)}} } - case 1894: + case 1898: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowStatsTopN} } - case 1895: + case 1899: { - parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowStatsBuckets} + parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowStatsBuckets, Table: &ast.TableName{Name: model.NewCIStr("STATS_BUCKETS"), Schema: model.NewCIStr(mysql.SystemDB)}} } - case 1896: + case 1900: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowStatsHealthy} } - case 1897: + case 1901: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowHistogramsInFlight} } - case 1898: + case 1902: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowColumnStatsUsage} } - case 1899: + case 1903: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowAnalyzeStatus} } - case 1900: + case 1904: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowBackups} } - case 1901: + case 1905: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowRestores} } - case 1902: + case 1906: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowImports} } - case 1903: + case 1907: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowPlacement} } - case 1904: + case 1908: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowPlacementLabels} } - case 1905: + case 1909: { parser.yyVAL.item = nil } - case 1906: + case 1910: { parser.yyVAL.item = &ast.PatternLikeExpr{ Pattern: yyS[yypt-0].expr, Escape: '\\', } } - case 1907: + case 1911: { parser.yyVAL.item = yyS[yypt-0].expr } - case 1908: + case 1912: { parser.yyVAL.item = false } - case 1909: + case 1913: { parser.yyVAL.item = true } - case 1910: + case 1914: { parser.yyVAL.item = false } - case 1911: + case 1915: { parser.yyVAL.item = ast.StatementScopeSession } - case 1912: + case 1916: { parser.yyVAL.item = ast.StatementScopeGlobal } - case 1913: + case 1917: { parser.yyVAL.item = ast.StatementScopeInstance } - case 1914: + case 1918: { parser.yyVAL.item = ast.StatementScopeSession } - case 1915: + case 1919: { parser.yyVAL.item = false } - case 1916: + case 1920: { parser.yyVAL.item = true } - case 1917: + case 1921: { parser.yyVAL.ident = "" } - case 1918: + case 1922: { parser.yyVAL.ident = yyS[yypt-0].ident } - case 1919: + case 1923: { parser.yyVAL.item = yyS[yypt-0].item.(*ast.TableName) } - case 1920: + case 1924: { tmp := yyS[yypt-0].item.(*ast.FlushStmt) tmp.NoWriteToBinLog = yyS[yypt-1].item.(bool) parser.yyVAL.statement = tmp } - case 1921: + case 1925: { parser.yyVAL.item = []string{yyS[yypt-0].ident} } - case 1922: + case 1926: { parser.yyVAL.item = append(yyS[yypt-2].item.([]string), yyS[yypt-0].ident) } - case 1923: + case 1927: { parser.yyVAL.item = &ast.FlushStmt{ Tp: ast.FlushPrivileges, } } - case 1924: + case 1928: { parser.yyVAL.item = &ast.FlushStmt{ Tp: ast.FlushStatus, } } - case 1925: + case 1929: { parser.yyVAL.item = &ast.FlushStmt{ Tp: ast.FlushTiDBPlugin, Plugins: yyS[yypt-0].item.([]string), } } - case 1926: + case 1930: { parser.yyVAL.item = &ast.FlushStmt{ Tp: ast.FlushHosts, } } - case 1927: + case 1931: { parser.yyVAL.item = &ast.FlushStmt{ Tp: ast.FlushLogs, LogType: yyS[yypt-1].item.(ast.LogType), } } - case 1928: + case 1932: { parser.yyVAL.item = &ast.FlushStmt{ Tp: ast.FlushTables, @@ -19140,69 +19177,69 @@ yynewstate: ReadLock: yyS[yypt-0].item.(bool), } } - case 1929: + case 1933: { parser.yyVAL.item = &ast.FlushStmt{ Tp: ast.FlushClientErrorsSummary, } } - case 1930: + case 1934: { parser.yyVAL.item = ast.LogTypeDefault } - case 1931: + case 1935: { parser.yyVAL.item = ast.LogTypeBinary } - case 1932: + case 1936: { parser.yyVAL.item = ast.LogTypeEngine } - case 1933: + case 1937: { parser.yyVAL.item = ast.LogTypeError } - case 1934: + case 1938: { parser.yyVAL.item = ast.LogTypeGeneral } - case 1935: + case 1939: { parser.yyVAL.item = ast.LogTypeSlow } - case 1936: + case 1940: { parser.yyVAL.item = false } - case 1937: + case 1941: { parser.yyVAL.item = true } - case 1938: + case 1942: { parser.yyVAL.item = true } - case 1939: + case 1943: { parser.yyVAL.item = []*ast.TableName{} } - case 1941: + case 1945: { parser.yyVAL.item = []*ast.TableName{} } - case 1942: + case 1946: { parser.yyVAL.item = yyS[yypt-0].item } - case 1943: + case 1947: { parser.yyVAL.item = false } - case 1944: + case 1948: { parser.yyVAL.item = true } - case 2015: + case 2019: { var sel ast.StmtNode switch x := yyS[yypt-0].expr.(*ast.SubqueryExpr).Query.(type) { @@ -19215,7 +19252,7 @@ yynewstate: } parser.yyVAL.statement = sel } - case 2041: + case 2045: { var sel ast.StmtNode switch x := yyS[yypt-0].expr.(*ast.SubqueryExpr).Query.(type) { @@ -19228,7 +19265,7 @@ yynewstate: } parser.yyVAL.statement = sel } - case 2056: + case 2060: { var sel ast.StmtNode switch x := yyS[yypt-0].expr.(*ast.SubqueryExpr).Query.(type) { @@ -19241,7 +19278,7 @@ yynewstate: } parser.yyVAL.statement = sel } - case 2058: + case 2062: { if yyS[yypt-0].statement != nil { s := yyS[yypt-0].statement @@ -19251,7 +19288,7 @@ yynewstate: parser.result = append(parser.result, s) } } - case 2059: + case 2063: { if yyS[yypt-0].statement != nil { s := yyS[yypt-0].statement @@ -19261,7 +19298,7 @@ yynewstate: parser.result = append(parser.result, s) } } - case 2060: + case 2064: { cst := yyS[yypt-0].item.(*ast.Constraint) if yyS[yypt-1].item != nil { @@ -19269,7 +19306,7 @@ yynewstate: } parser.yyVAL.item = cst } - case 2065: + case 2069: { if yyS[yypt-0].item != nil { parser.yyVAL.item = []interface{}{yyS[yypt-0].item.(interface{})} @@ -19277,7 +19314,7 @@ yynewstate: parser.yyVAL.item = []interface{}{} } } - case 2066: + case 2070: { if yyS[yypt-0].item != nil { parser.yyVAL.item = append(yyS[yypt-2].item.([]interface{}), yyS[yypt-0].item) @@ -19285,7 +19322,7 @@ yynewstate: parser.yyVAL.item = yyS[yypt-2].item } } - case 2067: + case 2071: { var columnDefs []*ast.ColumnDef var constraints []*ast.Constraint @@ -19294,7 +19331,7 @@ yynewstate: Constraints: constraints, } } - case 2068: + case 2072: { tes := yyS[yypt-1].item.([]interface{}) var columnDefs []*ast.ColumnDef @@ -19312,69 +19349,69 @@ yynewstate: Constraints: constraints, } } - case 2070: + case 2074: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionCharset, StrValue: yyS[yypt-0].ident, UintValue: ast.TableOptionCharsetWithoutConvertTo} } - case 2071: + case 2075: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionCollate, StrValue: yyS[yypt-0].ident, UintValue: ast.TableOptionCharsetWithoutConvertTo} } - case 2072: + case 2076: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionAutoIncrement, UintValue: yyS[yypt-0].item.(uint64), BoolValue: yyS[yypt-3].item.(bool)} } - case 2073: + case 2077: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionAutoIdCache, UintValue: yyS[yypt-0].item.(uint64)} } - case 2074: + case 2078: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionAutoRandomBase, UintValue: yyS[yypt-0].item.(uint64), BoolValue: yyS[yypt-3].item.(bool)} } - case 2075: + case 2079: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionAvgRowLength, UintValue: yyS[yypt-0].item.(uint64)} } - case 2076: + case 2080: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionConnection, StrValue: yyS[yypt-0].ident} } - case 2077: + case 2081: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionCheckSum, UintValue: yyS[yypt-0].item.(uint64)} } - case 2078: + case 2082: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionTableCheckSum, UintValue: yyS[yypt-0].item.(uint64)} } - case 2079: + case 2083: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionPassword, StrValue: yyS[yypt-0].ident} } - case 2080: + case 2084: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionCompression, StrValue: yyS[yypt-0].ident} } - case 2081: + case 2085: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionKeyBlockSize, UintValue: yyS[yypt-0].item.(uint64)} } - case 2082: + case 2086: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionDelayKeyWrite, UintValue: yyS[yypt-0].item.(uint64)} } - case 2083: + case 2087: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionRowFormat, UintValue: yyS[yypt-0].item.(uint64)} } - case 2084: + case 2088: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionStatsPersistent} } - case 2085: + case 2089: { n := yyS[yypt-0].item.(uint64) if n != 0 && n != 1 { @@ -19385,13 +19422,13 @@ yynewstate: yylex.AppendError(yylex.Errorf("The STATS_AUTO_RECALC is parsed but ignored by all storage engines.")) parser.lastErrorAsWarn() } - case 2086: + case 2090: { 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 2087: + case 2091: { // Parse it but will ignore it. // In MySQL, STATS_SAMPLE_PAGES=N(Where 0 1 { @@ -21096,7 +21133,7 @@ yynewstate: OptEnclosed: true, } } - case 2408: + case 2412: { str := yyS[yypt-0].ident if str != "\\" && len(str) > 1 { @@ -21108,7 +21145,7 @@ yynewstate: Value: str, } } - case 2409: + case 2413: { str := yyS[yypt-0].ident if str != "\\" && len(str) > 1 { @@ -21120,104 +21157,104 @@ yynewstate: Value: str, } } - case 2411: + case 2415: { parser.yyVAL.ident = yyS[yypt-0].item.(ast.BinaryLiteral).ToString() } - case 2412: + case 2416: { parser.yyVAL.ident = yyS[yypt-0].item.(ast.BinaryLiteral).ToString() } - case 2413: + case 2417: { parser.yyVAL.item = &ast.LinesClause{Terminated: "\n"} } - case 2414: + case 2418: { parser.yyVAL.item = &ast.LinesClause{Starting: yyS[yypt-1].ident, Terminated: yyS[yypt-0].ident} } - case 2415: + case 2419: { parser.yyVAL.ident = "" } - case 2416: + case 2420: { parser.yyVAL.ident = yyS[yypt-0].ident } - case 2417: + case 2421: { parser.yyVAL.ident = "\n" } - case 2418: + case 2422: { parser.yyVAL.ident = yyS[yypt-0].ident } - case 2419: + case 2423: { parser.yyVAL.item = nil } - case 2420: + case 2424: { parser.yyVAL.item = yyS[yypt-0].item } - case 2421: + case 2425: { l := yyS[yypt-2].item.([]*ast.Assignment) parser.yyVAL.item = append(l, yyS[yypt-0].item.(*ast.Assignment)) } - case 2422: + case 2426: { parser.yyVAL.item = []*ast.Assignment{yyS[yypt-0].item.(*ast.Assignment)} } - case 2423: + case 2427: { parser.yyVAL.item = &ast.Assignment{ Column: yyS[yypt-2].expr.(*ast.ColumnNameExpr).Name, Expr: yyS[yypt-0].expr, } } - case 2424: + case 2428: { parser.yyVAL.statement = &ast.UnlockTablesStmt{} } - case 2425: + case 2429: { parser.yyVAL.statement = &ast.LockTablesStmt{ TableLocks: yyS[yypt-0].item.([]ast.TableLock), } } - case 2428: + case 2432: { parser.yyVAL.item = ast.TableLock{ Table: yyS[yypt-1].item.(*ast.TableName), Type: yyS[yypt-0].item.(model.TableLockType), } } - case 2429: + case 2433: { parser.yyVAL.item = model.TableLockRead } - case 2430: + case 2434: { parser.yyVAL.item = model.TableLockReadLocal } - case 2431: + case 2435: { parser.yyVAL.item = model.TableLockWrite } - case 2432: + case 2436: { parser.yyVAL.item = model.TableLockWriteLocal } - case 2433: + case 2437: { parser.yyVAL.item = []ast.TableLock{yyS[yypt-0].item.(ast.TableLock)} } - case 2434: + case 2438: { parser.yyVAL.item = append(yyS[yypt-2].item.([]ast.TableLock), yyS[yypt-0].item.(ast.TableLock)) } - case 2435: + case 2439: { parser.yyVAL.statement = &ast.NonTransactionalDeleteStmt{ DryRun: yyS[yypt-1].item.(int), @@ -21226,41 +21263,41 @@ yynewstate: DeleteStmt: yyS[yypt-0].statement.(*ast.DeleteStmt), } } - case 2436: + case 2440: { parser.yyVAL.item = ast.NoDryRun } - case 2437: + case 2441: { parser.yyVAL.item = ast.DryRunSplitDml } - case 2438: + case 2442: { parser.yyVAL.item = ast.DryRunQuery } - case 2439: + case 2443: { parser.yyVAL.item = (*ast.ColumnName)(nil) } - case 2440: + case 2444: { parser.yyVAL.item = yyS[yypt-0].item.(*ast.ColumnName) } - case 2441: + case 2445: { parser.yyVAL.statement = &ast.KillStmt{ ConnectionID: getUint64FromNUM(yyS[yypt-0].item), TiDBExtension: yyS[yypt-1].item.(bool), } } - case 2442: + case 2446: { parser.yyVAL.statement = &ast.KillStmt{ ConnectionID: getUint64FromNUM(yyS[yypt-0].item), TiDBExtension: yyS[yypt-2].item.(bool), } } - case 2443: + case 2447: { parser.yyVAL.statement = &ast.KillStmt{ ConnectionID: getUint64FromNUM(yyS[yypt-0].item), @@ -21268,28 +21305,28 @@ yynewstate: TiDBExtension: yyS[yypt-2].item.(bool), } } - case 2444: + case 2448: { parser.yyVAL.item = false } - case 2445: + case 2449: { parser.yyVAL.item = true } - case 2446: + case 2450: { parser.yyVAL.statement = &ast.LoadStatsStmt{ Path: yyS[yypt-0].ident, } } - case 2447: + case 2451: { parser.yyVAL.statement = &ast.DropPlacementPolicyStmt{ IfExists: yyS[yypt-1].item.(bool), PolicyName: model.NewCIStr(yyS[yypt-0].ident), } } - case 2448: + case 2452: { parser.yyVAL.statement = &ast.CreatePlacementPolicyStmt{ OrReplace: yyS[yypt-5].item.(bool), @@ -21298,7 +21335,7 @@ yynewstate: PlacementOptions: yyS[yypt-0].item.([]*ast.PlacementOption), } } - case 2449: + case 2453: { parser.yyVAL.statement = &ast.AlterPlacementPolicyStmt{ IfExists: yyS[yypt-2].item.(bool), @@ -21306,7 +21343,7 @@ yynewstate: PlacementOptions: yyS[yypt-0].item.([]*ast.PlacementOption), } } - case 2450: + case 2454: { parser.yyVAL.statement = &ast.CreateSequenceStmt{ IfNotExists: yyS[yypt-3].item.(bool), @@ -21315,87 +21352,87 @@ yynewstate: TblOptions: yyS[yypt-0].item.([]*ast.TableOption), } } - case 2451: + case 2455: { parser.yyVAL.item = []*ast.SequenceOption{} } - case 2453: + case 2457: { parser.yyVAL.item = []*ast.SequenceOption{yyS[yypt-0].item.(*ast.SequenceOption)} } - case 2454: + case 2458: { parser.yyVAL.item = append(yyS[yypt-1].item.([]*ast.SequenceOption), yyS[yypt-0].item.(*ast.SequenceOption)) } - case 2455: + case 2459: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceOptionIncrementBy, IntValue: yyS[yypt-0].item.(int64)} } - case 2456: + case 2460: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceOptionIncrementBy, IntValue: yyS[yypt-0].item.(int64)} } - case 2457: + case 2461: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceStartWith, IntValue: yyS[yypt-0].item.(int64)} } - case 2458: + case 2462: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceStartWith, IntValue: yyS[yypt-0].item.(int64)} } - case 2459: + case 2463: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceMinValue, IntValue: yyS[yypt-0].item.(int64)} } - case 2460: + case 2464: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceNoMinValue} } - case 2461: + case 2465: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceNoMinValue} } - case 2462: + case 2466: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceMaxValue, IntValue: yyS[yypt-0].item.(int64)} } - case 2463: + case 2467: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceNoMaxValue} } - case 2464: + case 2468: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceNoMaxValue} } - case 2465: + case 2469: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceCache, IntValue: yyS[yypt-0].item.(int64)} } - case 2466: + case 2470: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceNoCache} } - case 2467: + case 2471: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceNoCache} } - case 2468: + case 2472: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceCycle} } - case 2469: + case 2473: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceNoCycle} } - case 2470: + case 2474: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceNoCycle} } - case 2472: + case 2476: { parser.yyVAL.item = yyS[yypt-0].item } - case 2473: + case 2477: { unsigned_num := getUint64FromNUM(yyS[yypt-0].item) if unsigned_num > 9223372036854775808 { @@ -21408,14 +21445,14 @@ yynewstate: parser.yyVAL.item = -int64(unsigned_num) } } - case 2474: + case 2478: { parser.yyVAL.statement = &ast.DropSequenceStmt{ IfExists: yyS[yypt-1].item.(bool), Sequences: yyS[yypt-0].item.([]*ast.TableName), } } - case 2475: + case 2479: { parser.yyVAL.statement = &ast.AlterSequenceStmt{ IfExists: yyS[yypt-2].item.(bool), @@ -21423,27 +21460,27 @@ yynewstate: SeqOptions: yyS[yypt-0].item.([]*ast.SequenceOption), } } - case 2476: + case 2480: { parser.yyVAL.item = []*ast.SequenceOption{yyS[yypt-0].item.(*ast.SequenceOption)} } - case 2477: + case 2481: { parser.yyVAL.item = append(yyS[yypt-1].item.([]*ast.SequenceOption), yyS[yypt-0].item.(*ast.SequenceOption)) } - case 2479: + case 2483: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceRestart} } - case 2480: + case 2484: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceRestartWith, IntValue: yyS[yypt-0].item.(int64)} } - case 2481: + case 2485: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceRestartWith, IntValue: yyS[yypt-0].item.(int64)} } - case 2482: + case 2486: { x := &ast.IndexAdviseStmt{ Path: yyS[yypt-3].ident, @@ -21460,42 +21497,42 @@ yynewstate: } parser.yyVAL.statement = x } - case 2483: + case 2487: { parser.yyVAL.item = uint64(ast.UnspecifiedSize) } - case 2484: + case 2488: { parser.yyVAL.item = getUint64FromNUM(yyS[yypt-0].item) } - case 2485: + case 2489: { parser.yyVAL.item = nil } - case 2486: + case 2490: { parser.yyVAL.item = &ast.MaxIndexNumClause{ PerTable: yyS[yypt-1].item.(uint64), PerDB: yyS[yypt-0].item.(uint64), } } - case 2487: + case 2491: { parser.yyVAL.item = uint64(ast.UnspecifiedSize) } - case 2488: + case 2492: { parser.yyVAL.item = getUint64FromNUM(yyS[yypt-0].item) } - case 2489: + case 2493: { parser.yyVAL.item = uint64(ast.UnspecifiedSize) } - case 2490: + case 2494: { parser.yyVAL.item = getUint64FromNUM(yyS[yypt-0].item) } - case 2491: + case 2495: { // Parse it but will ignore it switch yyS[yypt-0].ident { @@ -21510,19 +21547,19 @@ yynewstate: } parser.yyVAL.ident = yyS[yypt-0].ident } - case 2492: + case 2496: { parser.yyVAL.item = append([]*ast.RowExpr{}, yyS[yypt-0].item.(*ast.RowExpr)) } - case 2493: + case 2497: { parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.RowExpr), yyS[yypt-0].item.(*ast.RowExpr)) } - case 2494: + case 2498: { parser.yyVAL.item = &ast.RowExpr{Values: yyS[yypt-0].item.([]ast.ExprNode)} } - case 2495: + case 2499: { x := &ast.PlanReplayerStmt{ Stmt: yyS[yypt-0].statement, @@ -21538,7 +21575,7 @@ yynewstate: parser.yyVAL.statement = x } - case 2496: + case 2500: { x := &ast.PlanReplayerStmt{ Stmt: yyS[yypt-0].statement, @@ -21554,7 +21591,7 @@ yynewstate: parser.yyVAL.statement = x } - case 2497: + case 2501: { x := &ast.PlanReplayerStmt{ Stmt: nil, @@ -21574,7 +21611,7 @@ yynewstate: parser.yyVAL.statement = x } - case 2498: + case 2502: { x := &ast.PlanReplayerStmt{ Stmt: nil, @@ -21594,7 +21631,7 @@ yynewstate: parser.yyVAL.statement = x } - case 2499: + case 2503: { x := &ast.PlanReplayerStmt{ Stmt: nil, diff --git a/parser/parser.y b/parser/parser.y index b038edb412934..465a2c69101aa 100644 --- a/parser/parser.y +++ b/parser/parser.y @@ -738,6 +738,7 @@ import ( run "RUN" samples "SAMPLES" sampleRate "SAMPLERATE" + sessionStates "SESSION_STATES" statistics "STATISTICS" stats "STATS" statsMeta "STATS_META" @@ -6179,6 +6180,7 @@ TiDBKeyword: | "PUMP" | "SAMPLES" | "SAMPLERATE" +| "SESSION_STATES" | "STATISTICS" | "STATS" | "STATS_META" @@ -6766,6 +6768,17 @@ BitExpr: }, } } +| "INTERVAL" Expression TimeUnit '+' BitExpr %prec '+' + { + $$ = &ast.FuncCallExpr{ + FnName: model.NewCIStr("DATE_ADD"), + Args: []ast.ExprNode{ + $5, + $2, + &ast.TimeUnitExpr{Unit: $3.(ast.TimeUnitType)}, + }, + } + } | BitExpr '*' BitExpr %prec '*' { $$ = &ast.BinaryOperationExpr{Op: opcode.Mul, L: $1, R: $3} @@ -9709,6 +9722,10 @@ SetStmt: { $$ = &ast.SetConfigStmt{Instance: $3, Name: $4, Value: $6} } +| "SET" "SESSION_STATES" stringLit + { + $$ = &ast.SetSessionStatesStmt{SessionStates: $3} + } SetRoleStmt: "SET" "ROLE" SetRoleOpt @@ -10794,17 +10811,21 @@ ShowTargetFilterable: Tp: ast.ShowPlugins, } } +| "SESSION_STATES" + { + $$ = &ast.ShowStmt{Tp: ast.ShowSessionStates} + } | "STATS_EXTENDED" { $$ = &ast.ShowStmt{Tp: ast.ShowStatsExtended} } | "STATS_META" { - $$ = &ast.ShowStmt{Tp: ast.ShowStatsMeta} + $$ = &ast.ShowStmt{Tp: ast.ShowStatsMeta, Table: &ast.TableName{Name: model.NewCIStr("STATS_META"), Schema: model.NewCIStr(mysql.SystemDB)}} } | "STATS_HISTOGRAMS" { - $$ = &ast.ShowStmt{Tp: ast.ShowStatsHistograms} + $$ = &ast.ShowStmt{Tp: ast.ShowStatsHistograms, Table: &ast.TableName{Name: model.NewCIStr("STATS_HISTOGRAMS"), Schema: model.NewCIStr(mysql.SystemDB)}} } | "STATS_TOPN" { @@ -10812,7 +10833,7 @@ ShowTargetFilterable: } | "STATS_BUCKETS" { - $$ = &ast.ShowStmt{Tp: ast.ShowStatsBuckets} + $$ = &ast.ShowStmt{Tp: ast.ShowStatsBuckets, Table: &ast.TableName{Name: model.NewCIStr("STATS_BUCKETS"), Schema: model.NewCIStr(mysql.SystemDB)}} } | "STATS_HEALTHY" { diff --git a/parser/parser_test.go b/parser/parser_test.go index 110b5f71e9e13..3ab44e1a232c0 100644 --- a/parser/parser_test.go +++ b/parser/parser_test.go @@ -1037,6 +1037,13 @@ AAAAAAAAAAAA5gm5Mg== {"SHOW PLACEMENT LABELS", true, "SHOW PLACEMENT LABELS"}, {"SHOW PLACEMENT LABELS LIKE '%zone%'", true, "SHOW PLACEMENT LABELS LIKE _UTF8MB4'%zone%'"}, {"SHOW PLACEMENT LABELS WHERE label='l123'", true, "SHOW PLACEMENT LABELS WHERE `label`=_UTF8MB4'l123'"}, + + // for show/set session_states + {"SHOW SESSION_STATES", true, "SHOW SESSION_STATES"}, + {"SET SESSION_STATES 'x'", true, "SET SESSION_STATES 'x'"}, + {"SET SESSION_STATES", false, ""}, + {"SET SESSION_STATES 1", false, ""}, + {"SET SESSION_STATES now()", false, ""}, } RunTest(t, table, false) } @@ -1864,6 +1871,7 @@ func TestBuiltin(t *testing.T) { // interval {`select "2011-11-11 10:10:10.123456" + interval 10 second`, true, "SELECT DATE_ADD(_UTF8MB4'2011-11-11 10:10:10.123456', INTERVAL 10 SECOND)"}, {`select "2011-11-11 10:10:10.123456" - interval 10 second`, true, "SELECT DATE_SUB(_UTF8MB4'2011-11-11 10:10:10.123456', INTERVAL 10 SECOND)"}, + {`select interval 10 second + "2011-11-11 10:10:10.123456"`, true, "SELECT DATE_ADD(_UTF8MB4'2011-11-11 10:10:10.123456', INTERVAL 10 SECOND)"}, // for date_add {`select date_add("2011-11-11 10:10:10.123456", interval 10 microsecond)`, true, "SELECT DATE_ADD(_UTF8MB4'2011-11-11 10:10:10.123456', INTERVAL 10 MICROSECOND)"}, {`select date_add("2011-11-11 10:10:10.123456", interval 10 second)`, true, "SELECT DATE_ADD(_UTF8MB4'2011-11-11 10:10:10.123456', INTERVAL 10 SECOND)"}, @@ -3952,6 +3960,23 @@ func TestOptimizerHints(t *testing.T) { require.Equal(t, "t3", hints[1].Tables[0].TableName.L) require.Equal(t, "t4", hints[1].Tables[1].TableName.L) + // Test ORDERED_HASH_JOIN + stmt, _, err = p.Parse("select /*+ ORDERED_HASH_JOIN(t1, T2), ordered_hash_join(t3, t4) */ c1, c2 from t1, t2 where t1.c1 = t2.c1", "", "") + require.NoError(t, err) + selectStmt = stmt[0].(*ast.SelectStmt) + + hints = selectStmt.TableHints + require.Len(t, hints, 2) + require.Equal(t, "ordered_hash_join", hints[0].HintName.L) + require.Len(t, hints[0].Tables, 2) + require.Equal(t, "t1", hints[0].Tables[0].TableName.L) + require.Equal(t, "t2", hints[0].Tables[1].TableName.L) + + require.Equal(t, "ordered_hash_join", hints[1].HintName.L) + require.Len(t, hints[1].Tables, 2) + require.Equal(t, "t3", hints[1].Tables[0].TableName.L) + require.Equal(t, "t4", hints[1].Tables[1].TableName.L) + // Test HASH_JOIN with SWAP_JOIN_INPUTS/NO_SWAP_JOIN_INPUTS // t1 for build, t4 for probe stmt, _, err = p.Parse("select /*+ HASH_JOIN(t1, T2), hash_join(t3, t4), SWAP_JOIN_INPUTS(t1), NO_SWAP_JOIN_INPUTS(t4) */ c1, c2 from t1, t2 where t1.c1 = t2.c1", "", "") @@ -5710,6 +5735,7 @@ func TestNotExistsSubquery(t *testing.T) { } func TestWindowFunctionIdentifier(t *testing.T) { + //nolint: prealloc var table []testCase for key := range parser.WindowFuncTokenMapForTest { table = append(table, testCase{fmt.Sprintf("select 1 %s", key), false, fmt.Sprintf("SELECT 1 AS `%s`", key)}) diff --git a/parser/terror/BUILD.bazel b/parser/terror/BUILD.bazel new file mode 100644 index 0000000000000..2979755682264 --- /dev/null +++ b/parser/terror/BUILD.bazel @@ -0,0 +1,24 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "terror", + srcs = ["terror.go"], + importpath = "github.com/pingcap/tidb/parser/terror", + visibility = ["//visibility:public"], + deps = [ + "//parser/mysql", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_log//:log", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "terror_test", + srcs = ["terror_test.go"], + embed = [":terror"], + deps = [ + "@com_github_pingcap_errors//:errors", + "@com_github_stretchr_testify//require", + ], +) diff --git a/parser/test_driver/BUILD.bazel b/parser/test_driver/BUILD.bazel new file mode 100644 index 0000000000000..270069665738a --- /dev/null +++ b/parser/test_driver/BUILD.bazel @@ -0,0 +1,21 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "test_driver", + srcs = [ + "test_driver.go", + "test_driver_datum.go", + "test_driver_helper.go", + "test_driver_mydecimal.go", + ], + importpath = "github.com/pingcap/tidb/parser/test_driver", + visibility = ["//visibility:public"], + deps = [ + "//parser/ast", + "//parser/charset", + "//parser/format", + "//parser/mysql", + "//parser/types", + "@com_github_pingcap_errors//:errors", + ], +) diff --git a/parser/tidb/BUILD.bazel b/parser/tidb/BUILD.bazel new file mode 100644 index 0000000000000..a5624aef73caa --- /dev/null +++ b/parser/tidb/BUILD.bazel @@ -0,0 +1,8 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "tidb", + srcs = ["features.go"], + importpath = "github.com/pingcap/tidb/parser/tidb", + visibility = ["//visibility:public"], +) diff --git a/parser/types/BUILD.bazel b/parser/types/BUILD.bazel new file mode 100644 index 0000000000000..a771b96fced49 --- /dev/null +++ b/parser/types/BUILD.bazel @@ -0,0 +1,36 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "types", + srcs = [ + "etc.go", + "eval_type.go", + "field_type.go", + ], + importpath = "github.com/pingcap/tidb/parser/types", + visibility = ["//visibility:public"], + deps = [ + "//parser/charset", + "//parser/format", + "//parser/mysql", + "//parser/terror", + "@com_github_cznic_mathutil//:mathutil", + ], +) + +go_test( + name = "types_test", + srcs = [ + "etc_test.go", + "field_type_test.go", + ], + embed = [":types"], + deps = [ + "//parser", + "//parser/ast", + "//parser/charset", + "//parser/mysql", + "//parser/test_driver", + "@com_github_stretchr_testify//require", + ], +) diff --git a/parser/types/field_type.go b/parser/types/field_type.go index 99810355ee045..aa984e2a945b6 100644 --- a/parser/types/field_type.go +++ b/parser/types/field_type.go @@ -19,6 +19,7 @@ import ( "io" "strings" + "github.com/cznic/mathutil" "github.com/pingcap/tidb/parser/charset" "github.com/pingcap/tidb/parser/format" "github.com/pingcap/tidb/parser/mysql" @@ -64,7 +65,12 @@ func NewFieldType(tp byte) *FieldType { decimal: UnspecifiedLength, } } - +func (ft *FieldType) IsDecimalValid() bool { + if ft.tp == mysql.TypeNewDecimal && (ft.decimal < 0 || ft.decimal > mysql.MaxDecimalScale || ft.flen <= 0 || ft.flen > mysql.MaxDecimalWidth || ft.flen < ft.decimal) { + return false + } + return true +} func (ft *FieldType) GetType() byte { return ft.tp } @@ -121,10 +127,43 @@ func (ft *FieldType) SetFlen(flen int) { ft.flen = flen } +func (ft *FieldType) SetFlenUnderLimit(flen int) { + if ft.tp == mysql.TypeNewDecimal { + ft.flen = mathutil.Min(flen, mysql.MaxDecimalWidth) + } else { + ft.flen = flen + } +} + func (ft *FieldType) SetDecimal(decimal int) { ft.decimal = decimal } +func (ft *FieldType) SetDecimalUnderLimit(decimal int) { + if ft.tp == mysql.TypeNewDecimal { + ft.decimal = mathutil.Min(decimal, mysql.MaxDecimalScale) + } else { + ft.decimal = decimal + } +} + +func (ft *FieldType) UpdateFlenAndDecimalUnderLimit(old *FieldType, deltaDecimal int, deltaFlen int) { + if ft.tp != mysql.TypeNewDecimal { + return + } + if old.decimal < 0 { + deltaFlen += mysql.MaxDecimalScale + ft.decimal = mysql.MaxDecimalScale + } else { + ft.SetDecimal(old.decimal + deltaDecimal) + } + if old.flen < 0 { + ft.flen = mysql.MaxDecimalWidth + } else { + ft.SetFlenUnderLimit(old.flen + deltaFlen) + } +} + func (ft *FieldType) SetCharset(charset string) { ft.charset = charset } diff --git a/parser/yy_parser.go b/parser/yy_parser.go index 808b4a216ebeb..221dd7a26e790 100644 --- a/parser/yy_parser.go +++ b/parser/yy_parser.go @@ -148,8 +148,7 @@ func (parser *Parser) ParseSQL(sql string, params ...ParseParam) (stmt []ast.Stm parser.src = sql parser.result = parser.result[:0] - var l yyLexer - l = &parser.lexer + var l yyLexer = &parser.lexer yyParse(l, parser) warns, errs := l.Errors() diff --git a/planner/BUILD.bazel b/planner/BUILD.bazel new file mode 100644 index 0000000000000..ded7773a3bb1b --- /dev/null +++ b/planner/BUILD.bazel @@ -0,0 +1,32 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "planner", + srcs = ["optimize.go"], + importpath = "github.com/pingcap/tidb/planner", + visibility = ["//visibility:public"], + deps = [ + "//bindinfo", + "//domain", + "//infoschema", + "//kv", + "//metrics", + "//parser", + "//parser/ast", + "//planner/cascades", + "//planner/core", + "//privilege", + "//sessionctx", + "//sessionctx/stmtctx", + "//sessionctx/variable", + "//sessiontxn", + "//types", + "//util/hint", + "//util/logutil", + "//util/parser", + "//util/topsql", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@org_uber_go_zap//:zap", + ], +) diff --git a/planner/cascades/BUILD.bazel b/planner/cascades/BUILD.bazel new file mode 100644 index 0000000000000..1ce0a7eb7ac23 --- /dev/null +++ b/planner/cascades/BUILD.bazel @@ -0,0 +1,60 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "cascades", + srcs = [ + "enforcer_rules.go", + "implementation_rules.go", + "optimize.go", + "stringer.go", + "transformation_rules.go", + ], + importpath = "github.com/pingcap/tidb/planner/cascades", + visibility = ["//visibility:public"], + deps = [ + "//expression", + "//expression/aggregation", + "//kv", + "//parser/ast", + "//parser/mysql", + "//planner/core", + "//planner/implementation", + "//planner/memo", + "//planner/property", + "//planner/util", + "//sessionctx", + "//types", + "//util/ranger", + "//util/set", + ], +) + +go_test( + name = "cascades_test", + srcs = [ + "enforcer_rules_test.go", + "integration_test.go", + "main_test.go", + "optimize_test.go", + "stringer_test.go", + "transformation_rules_test.go", + ], + data = glob(["testdata/**"]), + embed = [":cascades"], + deps = [ + "//domain", + "//expression", + "//infoschema", + "//parser", + "//parser/model", + "//planner/core", + "//planner/memo", + "//planner/property", + "//sessionctx/variable", + "//testkit", + "//testkit/testdata", + "//testkit/testsetup", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/planner/cascades/testdata/transformation_rules_suite_out.json b/planner/cascades/testdata/transformation_rules_suite_out.json index 13a9b993d5da2..6324f66d98f21 100644 --- a/planner/cascades/testdata/transformation_rules_suite_out.json +++ b/planner/cascades/testdata/transformation_rules_suite_out.json @@ -357,7 +357,8 @@ "Group#2 Schema:[test.t.a,test.t.b,test.t.c], UniqueKey:[test.t.a]", " TiKVSingleGather_5 input:[Group#4], table:t", "Group#4 Schema:[test.t.a,test.t.b,test.t.c], UniqueKey:[test.t.a]", - " TableScan_4 table:t, pk col:test.t.a", "Group#3 Schema:[Column#15,Column#14,test.t.b]", + " TableScan_4 table:t, pk col:test.t.a", + "Group#3 Schema:[Column#15,Column#14,test.t.b]", " TiKVSingleGather_5 input:[Group#5], table:t", "Group#5 Schema:[Column#15,Column#14,test.t.b]", " Aggregation_6 input:[Group#4], group by:plus(sin(cast(test.t.b, double BINARY)), sin(cast(test.t.c, double BINARY))), test.t.b, funcs:sum(test.t.a)" diff --git a/planner/core/BUILD.bazel b/planner/core/BUILD.bazel new file mode 100644 index 0000000000000..7c7186892db2d --- /dev/null +++ b/planner/core/BUILD.bazel @@ -0,0 +1,248 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "core", + srcs = [ + "cache.go", + "cacheable_checker.go", + "collect_column_stats_usage.go", + "common_plans.go", + "encode.go", + "errors.go", + "exhaust_physical_plans.go", + "explain.go", + "expression_rewriter.go", + "find_best_task.go", + "fragment.go", + "handle_cols.go", + "hashcode.go", + "hints.go", + "initialize.go", + "logical_plan_builder.go", + "logical_plans.go", + "memtable_predicate_extractor.go", + "mock.go", + "optimizer.go", + "partition_prune.go", + "pb_to_plan.go", + "physical_plans.go", + "plan.go", + "plan_cost.go", + "plan_stats.go", + "plan_to_pb.go", + "planbuilder.go", + "point_get_plan.go", + "preprocess.go", + "property_cols_prune.go", + "resolve_indices.go", + "rule_aggregation_elimination.go", + "rule_aggregation_push_down.go", + "rule_build_key_info.go", + "rule_column_pruning.go", + "rule_decorrelate.go", + "rule_eliminate_projection.go", + "rule_generate_column_substitute.go", + "rule_inject_extra_projection.go", + "rule_join_elimination.go", + "rule_join_reorder.go", + "rule_join_reorder_dp.go", + "rule_join_reorder_greedy.go", + "rule_max_min_eliminate.go", + "rule_partition_processor.go", + "rule_predicate_push_down.go", + "rule_result_reorder.go", + "rule_topn_push_down.go", + "show_predicate_extractor.go", + "stats.go", + "stringer.go", + "task.go", + "telemetry.go", + "trace.go", + "util.go", + ], + importpath = "github.com/pingcap/tidb/planner/core", + visibility = ["//visibility:public"], + deps = [ + "//bindinfo", + "//config", + "//ddl", + "//distsql", + "//domain", + "//errno", + "//expression", + "//expression/aggregation", + "//infoschema", + "//kv", + "//lock", + "//meta/autoid", + "//metrics", + "//parser", + "//parser/ast", + "//parser/auth", + "//parser/charset", + "//parser/format", + "//parser/model", + "//parser/mysql", + "//parser/opcode", + "//parser/terror", + "//parser/types", + "//planner/funcdep", + "//planner/property", + "//planner/util", + "//privilege", + "//sessionctx", + "//sessionctx/stmtctx", + "//sessionctx/variable", + "//sessiontxn", + "//sessiontxn/staleread", + "//statistics", + "//statistics/handle", + "//table", + "//table/tables", + "//table/temptable", + "//tablecodec", + "//types", + "//types/parser_driver", + "//util", + "//util/chunk", + "//util/codec", + "//util/collate", + "//util/dbterror", + "//util/disjointset", + "//util/domainutil", + "//util/execdetails", + "//util/hack", + "//util/hint", + "//util/kvcache", + "//util/logutil", + "//util/mathutil", + "//util/mock", + "//util/paging", + "//util/parser", + "//util/plancodec", + "//util/ranger", + "//util/rowcodec", + "//util/sem", + "//util/set", + "//util/sqlexec", + "//util/stringutil", + "//util/texttree", + "//util/tracing", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_pingcap_kvproto//pkg/coprocessor", + "@com_github_pingcap_tipb//go-tipb", + "@com_github_tikv_client_go_v2//kv", + "@com_github_tikv_client_go_v2//oracle", + "@com_github_tikv_client_go_v2//tikv", + "@org_golang_x_exp//slices", + "@org_uber_go_atomic//:atomic", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "core_test", + srcs = [ + "cache_test.go", + "cacheable_checker_test.go", + "cbo_test.go", + "collect_column_stats_usage_test.go", + "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", + "indexmerge_test.go", + "integration_partition_test.go", + "integration_test.go", + "logical_plan_test.go", + "logical_plan_trace_test.go", + "logical_plans_test.go", + "main_test.go", + "memtable_predicate_extractor_test.go", + "optimizer_test.go", + "partition_pruner_test.go", + "partition_pruning_test.go", + "physical_plan_test.go", + "physical_plan_trace_test.go", + "plan_cost_test.go", + "plan_stats_test.go", + "plan_test.go", + "plan_to_pb_test.go", + "planbuilder_test.go", + "point_get_plan_test.go", + "prepare_test.go", + "preprocess_test.go", + "rule_inject_extra_projection_test.go", + "rule_join_reorder_dp_test.go", + "rule_join_reorder_test.go", + "rule_result_reorder_test.go", + "stats_test.go", + "stringer_test.go", + "window_push_down_test.go", + ], + data = glob(["testdata/**"]), + embed = [":core"], + flaky = True, + shard_count = 50, + deps = [ + "//config", + "//ddl", + "//domain", + "//errno", + "//executor", + "//expression", + "//expression/aggregation", + "//infoschema", + "//kv", + "//meta/autoid", + "//metrics", + "//parser", + "//parser/ast", + "//parser/auth", + "//parser/charset", + "//parser/format", + "//parser/model", + "//parser/mysql", + "//parser/terror", + "//planner", + "//planner/property", + "//planner/util", + "//session", + "//sessionctx", + "//sessionctx/stmtctx", + "//sessionctx/variable", + "//sessiontxn", + "//statistics", + "//statistics/handle", + "//table", + "//testkit", + "//testkit/testdata", + "//testkit/testmain", + "//testkit/testsetup", + "//testkit/testutil", + "//types", + "//types/parser_driver", + "//util", + "//util/chunk", + "//util/collate", + "//util/dbterror", + "//util/hint", + "//util/kvcache", + "//util/mock", + "//util/plancodec", + "//util/ranger", + "//util/set", + "//util/tracing", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_pingcap_tipb//go-tipb", + "@com_github_prometheus_client_golang//prometheus", + "@com_github_prometheus_client_model//go", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/planner/core/cbo_test.go b/planner/core/cbo_test.go index a0aa419b95b86..a135eadf959a0 100644 --- a/planner/core/cbo_test.go +++ b/planner/core/cbo_test.go @@ -230,6 +230,9 @@ func TestIndexRead(t *testing.T) { testKit.MustExec("create index ts on t (ts)") testKit.MustExec("create table t1 (a int, b int, index idx(a), index idxx(b))") + // Default RPC encoding may cause statistics explain result differ and then the test unstable. + testKit.MustExec("set @@tidb_enable_chunk_rpc = on") + // This stats is generated by following format: // fill (a, b, c, e) as (i*100+j, i, i+j, i*100+j), i and j is dependent and range of this two are [0, 99]. require.NoError(t, loadTableStats("analyzesSuiteTestIndexReadT.json", dom)) @@ -819,6 +822,10 @@ func TestLimitIndexEstimation(t *testing.T) { SQL string Plan []string } + // When paging is used, there is a 'paging:true' makes the explain output differ. + // IndexLookUp 0.00 root paging:true + tk.MustExec("set @@tidb_enable_paging = off") + analyzeSuiteData := core.GetAnalyzeSuiteData() analyzeSuiteData.GetTestCases(t, &input, &output) for i, tt := range input { diff --git a/planner/core/common_plans.go b/planner/core/common_plans.go index b56748f10dae5..eeab80bcf2640 100644 --- a/planner/core/common_plans.go +++ b/planner/core/common_plans.go @@ -1296,7 +1296,7 @@ func (e *Explain) prepareSchema() error { switch { case (format == types.ExplainFormatROW && (!e.Analyze && e.RuntimeStatsColl == nil)) || (format == types.ExplainFormatBrief): fieldNames = []string{"id", "estRows", "task", "access object", "operator info"} - case format == types.ExplainFormatVerbose: + case format == types.ExplainFormatVerbose || format == types.ExplainFormatTrueCardCost: if e.Analyze || e.RuntimeStatsColl != nil { fieldNames = []string{"id", "estRows", "estCost", "actRows", "task", "access object", "execution info", "operator info", "memory", "disk"} } else { @@ -1330,8 +1330,20 @@ func (e *Explain) RenderResult() error { if e.TargetPlan == nil { return nil } + + if e.Analyze && strings.ToLower(e.Format) == types.ExplainFormatTrueCardCost { + pp, ok := e.TargetPlan.(PhysicalPlan) + if ok { + if _, err := pp.GetPlanCost(property.RootTaskType, CostFlagRecalculate|CostFlagUseTrueCardinality); err != nil { + return err + } + } else { + e.SCtx().GetSessionVars().StmtCtx.AppendWarning(errors.Errorf("'explain format=true_card_cost' cannot support this plan")) + } + } + switch strings.ToLower(e.Format) { - case types.ExplainFormatROW, types.ExplainFormatBrief, types.ExplainFormatVerbose: + case types.ExplainFormatROW, types.ExplainFormatBrief, types.ExplainFormatVerbose, types.ExplainFormatTrueCardCost: if e.Rows == nil || e.Analyze { e.explainedPlans = map[int]bool{} err := e.explainPlanInRowFormat(e.TargetPlan, "root", "", "", true) @@ -1541,14 +1553,14 @@ func (e *Explain) prepareOperatorInfo(p Plan, taskType, driverSide, indent strin var row []string if e.Analyze || e.RuntimeStatsColl != nil { row = []string{id, estRows} - if strings.ToLower(e.Format) == types.ExplainFormatVerbose { + if strings.ToLower(e.Format) == types.ExplainFormatVerbose || strings.ToLower(e.Format) == types.ExplainFormatTrueCardCost { row = append(row, estCost) } actRows, analyzeInfo, memoryInfo, diskInfo := getRuntimeInfo(e.ctx, p, e.RuntimeStatsColl) row = append(row, actRows, taskType, accessObject, analyzeInfo, operatorInfo, memoryInfo, diskInfo) } else { row = []string{id, estRows} - if strings.ToLower(e.Format) == types.ExplainFormatVerbose { + if strings.ToLower(e.Format) == types.ExplainFormatVerbose || strings.ToLower(e.Format) == types.ExplainFormatTrueCardCost { row = append(row, estCost) } row = append(row, taskType, accessObject, operatorInfo) diff --git a/planner/core/enforce_mpp_test.go b/planner/core/enforce_mpp_test.go index 1b7f1792ea609..dab97226f436e 100644 --- a/planner/core/enforce_mpp_test.go +++ b/planner/core/enforce_mpp_test.go @@ -96,6 +96,9 @@ func TestEnforceMPP(t *testing.T) { tk.MustExec("create table t(a int, b int)") tk.MustExec("create index idx on t(a)") + // Default RPC encoding may cause statistics explain result differ and then the test unstable. + tk.MustExec("set @@tidb_enable_chunk_rpc = on") + // Create virtual tiflash replica info. dom := domain.GetDomain(tk.Session()) is := dom.InfoSchema() diff --git a/planner/core/errors.go b/planner/core/errors.go index 7182702e9d06a..84b92e39ef014 100644 --- a/planner/core/errors.go +++ b/planner/core/errors.go @@ -109,4 +109,5 @@ var ( ErrViewSelectTemporaryTable = dbterror.ClassOptimizer.NewStd(mysql.ErrViewSelectTmptable) ErrSubqueryMoreThan1Row = dbterror.ClassOptimizer.NewStd(mysql.ErrSubqueryNo1Row) ErrKeyPart0 = dbterror.ClassOptimizer.NewStd(mysql.ErrKeyPart0) + ErrGettingNoopVariable = dbterror.ClassOptimizer.NewStd(mysql.ErrGettingNoopVariable) ) diff --git a/planner/core/explain.go b/planner/core/explain.go index 218450bd2bc5e..6d8512d5dd94a 100644 --- a/planner/core/explain.go +++ b/planner/core/explain.go @@ -466,12 +466,6 @@ func (p *PhysicalIndexLookUpReader) ExplainInfo() string { str.WriteString(strconv.FormatUint(p.PushedLimit.Count, 10)) str.WriteString(")") } - if p.Paging { - if p.PushedLimit != nil { - str.WriteString(", ") - } - str.WriteString("paging:true") - } return str.String() } diff --git a/planner/core/expression_rewriter.go b/planner/core/expression_rewriter.go index d96a161afa40c..f80ea20ad07c9 100644 --- a/planner/core/expression_rewriter.go +++ b/planner/core/expression_rewriter.go @@ -1297,6 +1297,10 @@ func (er *expressionRewriter) rewriteVariable(v *ast.VariableExpr) { } return } + if sysVar.IsNoop && !variable.EnableNoopVariables.Load() { + // The variable does nothing, append a warning to the statement output. + sessionVars.StmtCtx.AppendWarning(ErrGettingNoopVariable.GenWithStackByArgs(sysVar.Name)) + } if sem.IsEnabled() && sem.IsInvisibleSysVar(sysVar.Name) { err := ErrSpecificAccessDenied.GenWithStackByArgs("RESTRICTED_VARIABLES_ADMIN") er.b.visitInfo = appendDynamicVisitInfo(er.b.visitInfo, "RESTRICTED_VARIABLES_ADMIN", false, err) @@ -1557,6 +1561,7 @@ func (er *expressionRewriter) castCollationForIn(colLen int, elemCnt int, stkLen return } for i := stkLen - elemCnt; i < stkLen; i++ { + // todo: consider refining the code and reusing expression.BuildCollationFunction here if er.ctxStack[i].GetType().EvalType() == types.ETString { rowFunc, ok := er.ctxStack[i].(*expression.ScalarFunction) if ok && rowFunc.FuncName.String() == ast.RowFunc { @@ -1573,6 +1578,14 @@ func (er *expressionRewriter) castCollationForIn(colLen int, elemCnt int, stkLen } else { continue } + } else if coll.Charset == charset.CharsetBin { + // When cast character string to binary string, if we still use fixed length representation, + // then 0 padding will be used, which can affect later execution. + // e.g. https://github.com/pingcap/tidb/pull/35053#pullrequestreview-1008757770 gives an unexpected case. + // On the other hand, we can not directly return origin expr back, + // since we need binary collation to do string comparison later. + // Here we use VarString type of cast, i.e `cast(a as binary)`, to avoid this problem. + tp.SetType(mysql.TypeVarString) } tp.SetCharset(coll.Charset) tp.SetCollate(coll.Collation) diff --git a/planner/core/expression_rewriter_test.go b/planner/core/expression_rewriter_test.go index ee5f20d3f824c..93d94a3750410 100644 --- a/planner/core/expression_rewriter_test.go +++ b/planner/core/expression_rewriter_test.go @@ -409,6 +409,10 @@ func TestMultiColInExpression(t *testing.T) { Plan []string Res []string } + + // Default RPC encoding may cause statistics explain result differ and then the test unstable. + tk.MustExec("set @@tidb_enable_chunk_rpc = on") + expressionRewriterSuiteData := plannercore.GetExpressionRewriterSuiteData() expressionRewriterSuiteData.GetTestCases(t, &input, &output) for i, tt := range input { diff --git a/planner/core/find_best_task.go b/planner/core/find_best_task.go index c720879d15ed4..13c559d9c66c5 100644 --- a/planner/core/find_best_task.go +++ b/planner/core/find_best_task.go @@ -890,7 +890,12 @@ func (ds *DataSource) findBestTask(prop *property.PhysicalProperty, planCounter planCounter.Dec(1) } appendCandidate(ds, idxMergeTask, prop, opt) - if idxMergeTask.cost() < t.cost() || planCounter.Empty() { + + curIsBetter, err := compareTaskCost(ds.ctx, idxMergeTask, t) + if err != nil { + return nil, 0, err + } + if curIsBetter || planCounter.Empty() { t = idxMergeTask } if planCounter.Empty() { @@ -978,7 +983,11 @@ func (ds *DataSource) findBestTask(prop *property.PhysicalProperty, planCounter cntPlan += 1 planCounter.Dec(1) } - if pointGetTask.cost() < t.cost() || planCounter.Empty() { + curIsBetter, cerr := compareTaskCost(ds.ctx, pointGetTask, t) + if cerr != nil { + return nil, 0, cerr + } + if curIsBetter || planCounter.Empty() { t = pointGetTask if planCounter.Empty() { return @@ -1008,7 +1017,11 @@ func (ds *DataSource) findBestTask(prop *property.PhysicalProperty, planCounter planCounter.Dec(1) } appendCandidate(ds, tblTask, prop, opt) - if tblTask.cost() < t.cost() || planCounter.Empty() { + curIsBetter, err := compareTaskCost(ds.ctx, tblTask, t) + if err != nil { + return nil, 0, err + } + if curIsBetter || planCounter.Empty() { t = tblTask } if planCounter.Empty() { @@ -1029,7 +1042,11 @@ func (ds *DataSource) findBestTask(prop *property.PhysicalProperty, planCounter planCounter.Dec(1) } appendCandidate(ds, idxTask, prop, opt) - if idxTask.cost() < t.cost() || planCounter.Empty() { + curIsBetter, err := compareTaskCost(ds.ctx, idxTask, t) + if err != nil { + return nil, 0, err + } + if curIsBetter || planCounter.Empty() { t = idxTask } if planCounter.Empty() { @@ -1119,7 +1136,7 @@ func (ds *DataSource) convertToPartialIndexScan(prop *property.PhysicalProperty, sessVars := ds.ctx.GetSessionVars() if indexConds != nil { var selectivity float64 - partialCost += rowCount * sessVars.CopCPUFactor + partialCost += rowCount * sessVars.GetCopCPUFactor() if path.CountAfterAccess > 0 { selectivity = path.CountAfterIndex / path.CountAfterAccess } @@ -1171,7 +1188,7 @@ func (ds *DataSource) convertToPartialTableScan(prop *property.PhysicalProperty, } tablePlan = PhysicalSelection{Conditions: ts.filterCondition}.Init(ts.ctx, ts.stats.ScaleByExpectCnt(selectivity*rowCount), ds.blockOffset) tablePlan.SetChildren(ts) - partialCost += rowCount * sessVars.CopCPUFactor + partialCost += rowCount * sessVars.GetCopCPUFactor() partialCost += selectivity * rowCount * rowSize * sessVars.GetNetworkFactor(ds.tableInfo) return tablePlan, partialCost } @@ -1255,7 +1272,7 @@ func (ds *DataSource) buildIndexMergeTableScan(prop *property.PhysicalProperty, pushedFilters = pushedFilters1 remainingFilters = append(remainingFilters, remainingFilters1...) if len(pushedFilters) != 0 { - partialCost += totalRowCount * sessVars.CopCPUFactor + partialCost += totalRowCount * sessVars.GetCopCPUFactor() selectivity, _, err := ds.tableStats.HistColl.Selectivity(ds.ctx, pushedFilters, nil) if err != nil { logutil.BgLogger().Debug("calculate selectivity failed, use selection factor", zap.Error(err)) @@ -1535,7 +1552,7 @@ func (is *PhysicalIndexScan) addPushedDownSelection(copTask *copTask, p *DataSou sessVars := is.ctx.GetSessionVars() if indexConds != nil { - copTask.cst += copTask.count() * sessVars.CopCPUFactor + copTask.cst += copTask.count() * sessVars.GetCopCPUFactor() var selectivity float64 if path.CountAfterAccess > 0 { selectivity = path.CountAfterIndex / path.CountAfterAccess @@ -1548,7 +1565,7 @@ func (is *PhysicalIndexScan) addPushedDownSelection(copTask *copTask, p *DataSou } if len(tableConds) > 0 { copTask.finishIndexPlan() - copTask.cst += copTask.count() * sessVars.CopCPUFactor + copTask.cst += copTask.count() * sessVars.GetCopCPUFactor() tableSel := PhysicalSelection{Conditions: tableConds}.Init(is.ctx, finalStats, is.blockOffset) if len(copTask.rootTaskConds) != 0 { selectivity, _, err := copTask.tblColHists.Selectivity(is.ctx, tableConds, nil) @@ -2013,7 +2030,7 @@ func (ds *DataSource) convertToPointGet(prop *property.PhysicalProperty, candida // Add filter condition to table plan now. if len(candidate.path.TableFilters) > 0 { sessVars := ds.ctx.GetSessionVars() - cost += pointGetPlan.stats.RowCount * sessVars.CPUFactor + cost += pointGetPlan.stats.RowCount * sessVars.GetCPUFactor() sel := PhysicalSelection{ Conditions: candidate.path.TableFilters, }.Init(ds.ctx, ds.stats.ScaleByExpectCnt(prop.ExpectedCnt), ds.blockOffset) @@ -2035,7 +2052,7 @@ func (ds *DataSource) convertToPointGet(prop *property.PhysicalProperty, candida // Add index condition to table plan now. if len(candidate.path.IndexFilters)+len(candidate.path.TableFilters) > 0 { sessVars := ds.ctx.GetSessionVars() - cost += pointGetPlan.stats.RowCount * sessVars.CPUFactor + cost += pointGetPlan.stats.RowCount * sessVars.GetCPUFactor() sel := PhysicalSelection{ Conditions: append(candidate.path.IndexFilters, candidate.path.TableFilters...), }.Init(ds.ctx, ds.stats.ScaleByExpectCnt(prop.ExpectedCnt), ds.blockOffset) @@ -2084,7 +2101,7 @@ func (ds *DataSource) convertToBatchPointGet(prop *property.PhysicalProperty, // Add filter condition to table plan now. if len(candidate.path.TableFilters) > 0 { sessVars := ds.ctx.GetSessionVars() - cost += batchPointGetPlan.stats.RowCount * sessVars.CPUFactor + cost += batchPointGetPlan.stats.RowCount * sessVars.GetCPUFactor() sel := PhysicalSelection{ Conditions: candidate.path.TableFilters, }.Init(ds.ctx, ds.stats.ScaleByExpectCnt(prop.ExpectedCnt), ds.blockOffset) @@ -2112,7 +2129,7 @@ func (ds *DataSource) convertToBatchPointGet(prop *property.PhysicalProperty, // Add index condition to table plan now. if len(candidate.path.IndexFilters)+len(candidate.path.TableFilters) > 0 { sessVars := ds.ctx.GetSessionVars() - cost += batchPointGetPlan.stats.RowCount * sessVars.CPUFactor + cost += batchPointGetPlan.stats.RowCount * sessVars.GetCPUFactor() sel := PhysicalSelection{ Conditions: append(candidate.path.IndexFilters, candidate.path.TableFilters...), }.Init(ds.ctx, ds.stats.ScaleByExpectCnt(prop.ExpectedCnt), ds.blockOffset) @@ -2138,7 +2155,7 @@ func (ts *PhysicalTableScan) addPushedDownSelectionToMppTask(mpp *mppTask, stats // Add filter condition to table plan now. sessVars := ts.ctx.GetSessionVars() if len(ts.filterCondition) > 0 { - mpp.cst += mpp.count() * sessVars.CopCPUFactor + mpp.cst += mpp.count() * sessVars.GetCopCPUFactor() sel := PhysicalSelection{Conditions: ts.filterCondition}.Init(ts.ctx, stats, ts.blockOffset) sel.SetChildren(ts) sel.cost = mpp.cst @@ -2156,7 +2173,7 @@ func (ts *PhysicalTableScan) addPushedDownSelection(copTask *copTask, stats *pro // Add filter condition to table plan now. sessVars := ts.ctx.GetSessionVars() if len(ts.filterCondition) > 0 { - copTask.cst += copTask.count() * sessVars.CopCPUFactor + copTask.cst += copTask.count() * sessVars.GetCopCPUFactor() sel := PhysicalSelection{Conditions: ts.filterCondition}.Init(ts.ctx, stats, ts.blockOffset) if len(copTask.rootTaskConds) != 0 { selectivity, _, err := copTask.tblColHists.Selectivity(ts.ctx, ts.filterCondition, nil) diff --git a/planner/core/fragment.go b/planner/core/fragment.go index ff013fa241e78..49ae559d17a88 100644 --- a/planner/core/fragment.go +++ b/planner/core/fragment.go @@ -16,7 +16,6 @@ package core import ( "context" - "sort" "time" "github.com/pingcap/errors" @@ -32,6 +31,7 @@ import ( "github.com/pingcap/tidb/util/ranger" "github.com/pingcap/tipb/go-tipb" "go.uber.org/zap" + "golang.org/x/exp/slices" ) // Fragment is cut from the whole pushed-down plan by network communication. @@ -358,8 +358,8 @@ func (e *mppTaskGenerator) constructMPPTasksImpl(ctx context.Context, ts *Physic } func (e *mppTaskGenerator) constructMPPBuildTaskReqForPartitionedTable(ts *PhysicalTableScan, splitedRanges []*ranger.Range, partitions []table.PhysicalTable) (*kv.MPPBuildTasksRequest, []int64, error) { - sort.Slice(partitions, func(i, j int) bool { - return partitions[i].GetPhysicalID() < partitions[j].GetPhysicalID() + slices.SortFunc(partitions, func(i, j table.PhysicalTable) bool { + return i.GetPhysicalID() < j.GetPhysicalID() }) partitionIDAndRanges := make([]kv.PartitionIDAndRanges, len(partitions)) allPartitionsIDs := make([]int64, len(partitions)) diff --git a/planner/core/hashcode.go b/planner/core/hashcode.go index 42acce8d9401f..41b00de127390 100644 --- a/planner/core/hashcode.go +++ b/planner/core/hashcode.go @@ -17,9 +17,9 @@ package core import ( "bytes" "encoding/binary" - "sort" "github.com/pingcap/tidb/util/plancodec" + "golang.org/x/exp/slices" ) func encodeIntAsUint32(result []byte, value int) []byte { @@ -79,7 +79,7 @@ func (p *LogicalSelection) HashCode() []byte { condHashCodes[i] = expr.HashCode(p.ctx.GetSessionVars().StmtCtx) } // Sort the conditions, so `a > 1 and a < 100` can equal to `a < 100 and a > 1`. - sort.Slice(condHashCodes, func(i, j int) bool { return bytes.Compare(condHashCodes[i], condHashCodes[j]) < 0 }) + slices.SortFunc(condHashCodes, func(i, j []byte) bool { return bytes.Compare(i, j) < 0 }) for _, condHashCode := range condHashCodes { result = encodeIntAsUint32(result, len(condHashCode)) diff --git a/planner/core/integration_test.go b/planner/core/integration_test.go index 096c7afab6051..c0890093b0080 100644 --- a/planner/core/integration_test.go +++ b/planner/core/integration_test.go @@ -177,6 +177,9 @@ func TestPushLimitDownIndexLookUpReader(t *testing.T) { tk.MustExec("insert into tbl values(1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,5,5)") tk.MustExec("analyze table tbl") + // When paging is enabled, there would be a 'paging: true' in the explain result. + tk.MustExec("set @@tidb_enable_paging = off") + var input []string var output []struct { SQL string @@ -479,6 +482,9 @@ func TestVerboseExplain(t *testing.T) { tk.MustExec("analyze table t2") tk.MustExec("analyze table t3") + // Default RPC encoding may cause statistics explain result differ and then the test unstable. + tk.MustExec("set @@tidb_enable_chunk_rpc = on") + // Create virtual tiflash replica info. dom := domain.GetDomain(tk.Session()) is := dom.InfoSchema() @@ -3678,6 +3684,10 @@ func TestExtendedStatsSwitch(t *testing.T) { tk.MustQuery("select stats, status from mysql.stats_extended where name = 's1'").Check(testkit.Rows( "1.000000 1", )) + + // When paging is enabled, there would be a 'paging: true' in the explain result. + tk.MustExec("set @@tidb_enable_paging = off") + // Estimated index scan count is 4 using extended stats. tk.MustQuery("explain format = 'brief' select * from t use index(b) where a > 3 order by b limit 1").Check(testkit.Rows( "Limit 1.00 root offset:0, count:1", @@ -4547,6 +4557,9 @@ func TestLimitIndexLookUpKeepOrder(t *testing.T) { 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));") + // When paging is enabled, there would be a 'paging: true' in the explain result. + tk.MustExec("set @@tidb_enable_paging = off") + var input []string var output []struct { SQL string @@ -4745,6 +4758,9 @@ func TestMultiColMaxOneRow(t *testing.T) { tk.MustExec("create table t1(a int)") tk.MustExec("create table t2(a int, b int, c int, primary key(a,b))") + // When paging is enabled, there would be a 'paging: true' in the explain result. + tk.MustExec("set @@tidb_enable_paging = off") + var input []string var output []struct { SQL string @@ -5394,6 +5410,9 @@ func TestIndexJoinCost(t *testing.T) { tk.MustExec(`create table t_inner_pk (a int primary key)`) tk.MustExec(`create table t_inner_idx (a int, b int, key(a))`) + // Default RPC encoding may cause statistics explain result differ and then the test unstable. + tk.MustExec("set @@tidb_enable_chunk_rpc = on") + tk.MustQuery(`explain format=verbose select /*+ TIDB_INLJ(t_outer, t_inner_pk) */ * from t_outer, t_inner_pk where t_outer.a=t_inner_pk.a`).Check(testkit.Rows( // IndexJoin with inner TableScan `IndexJoin_11 12487.50 206368.09 root inner join, inner:TableReader_8, outer key:test.t_outer.a, inner key:test.t_inner_pk.a, equal cond:eq(test.t_outer.a, test.t_inner_pk.a)`, `├─TableReader_18(Build) 9990.00 36412.58 root data:Selection_17`, @@ -5448,6 +5467,9 @@ func TestHeuristicIndexSelection(t *testing.T) { 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 @@ -5475,6 +5497,9 @@ func TestOutputSkylinePruningInfo(t *testing.T) { tk.MustExec("drop table if exists t") tk.MustExec("create table t(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))") + // 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 @@ -5506,6 +5531,11 @@ func TestPreferRangeScanForUnsignedIntHandle(t *testing.T) { require.Nil(t, do.StatsHandle().DumpStatsDeltaToKV(handle.DumpAll)) tk.MustExec("analyze table t") + // Default RPC encoding may cause statistics explain result differ and then the test unstable. + tk.MustExec("set @@tidb_enable_chunk_rpc = on") + // When paging is enabled, there would be a 'paging: true' in the explain result. + tk.MustExec("set @@tidb_enable_paging = off") + var input []string var output []struct { SQL string @@ -5544,6 +5574,9 @@ func TestIssue27083(t *testing.T) { require.Nil(t, do.StatsHandle().DumpStatsDeltaToKV(handle.DumpAll)) tk.MustExec("analyze table t") + // When paging is enabled, there would be a 'paging: true' in the explain result. + tk.MustExec("set @@tidb_enable_paging = off") + var input []string var output []struct { SQL string @@ -6651,3 +6684,36 @@ func TestIssue31609(t *testing.T) { " └─MemTableScan_9 10000.00 root table:TABLES ", )) } + +func TestDecimalOverflow(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + tk := testkit.NewTestKit(t, store) + + tk.MustExec("use test") + tk.MustExec("drop table if exists t") + tk.MustExec("create table deci (a decimal(65,30),b decimal(65,0))") + tk.MustExec("insert into deci values (1234567890.123456789012345678901234567890,987654321098765432109876543210987654321098765432109876543210)") + tk.MustQuery("select a from deci union ALL select b from deci;").Sort().Check(testkit.Rows("1234567890.123456789012345678901234567890", "99999999999999999999999999999999999.999999999999999999999999999999")) +} + +func TestIssue35083(t *testing.T) { + defer func() { + variable.SetSysVar(variable.TiDBOptProjectionPushDown, variable.BoolToOnOff(config.GetGlobalConfig().Performance.ProjectionPushDown)) + }() + defer config.RestoreFunc()() + config.UpdateGlobal(func(conf *config.Config) { + conf.Performance.ProjectionPushDown = true + }) + variable.SetSysVar(variable.TiDBOptProjectionPushDown, variable.BoolToOnOff(config.GetGlobalConfig().Performance.ProjectionPushDown)) + store, clean := testkit.CreateMockStore(t) + defer clean() + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t1 (a varchar(100), b int)") + tk.MustQuery("select @@tidb_opt_projection_push_down").Check(testkit.Rows("1")) + tk.MustQuery("explain format = 'brief' select cast(a as datetime) from t1").Check(testkit.Rows( + "TableReader 10000.00 root data:Projection", + "└─Projection 10000.00 cop[tikv] cast(test.t1.a, datetime BINARY)->Column#4", + " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo")) +} diff --git a/planner/core/logical_plan_builder.go b/planner/core/logical_plan_builder.go index b905f973d39fe..69f067e10fec7 100644 --- a/planner/core/logical_plan_builder.go +++ b/planner/core/logical_plan_builder.go @@ -1486,9 +1486,9 @@ func unionJoinFieldType(a, b *types.FieldType) *types.FieldType { // ref2: https://github.com/pingcap/tidb/issues/24953 resultTp.AddFlag((a.GetFlag() & mysql.UnsignedFlag) & (b.GetFlag() & mysql.UnsignedFlag)) } - resultTp.SetDecimal(mathutil.Max(a.GetDecimal(), b.GetDecimal())) + resultTp.SetDecimalUnderLimit(mathutil.Max(a.GetDecimal(), b.GetDecimal())) // `flen - decimal` is the fraction before '.' - resultTp.SetFlen(mathutil.Max(a.GetFlen()-a.GetDecimal(), b.GetFlen()-b.GetDecimal()) + resultTp.GetDecimal()) + resultTp.SetFlenUnderLimit(mathutil.Max(a.GetFlen()-a.GetDecimal(), b.GetFlen()-b.GetDecimal()) + resultTp.GetDecimal()) types.TryToFixFlenOfDatetime(resultTp) if resultTp.EvalType() != types.ETInt && (a.EvalType() == types.ETInt || b.EvalType() == types.ETInt) && resultTp.GetFlen() < mysql.MaxIntWidth { resultTp.SetFlen(mysql.MaxIntWidth) @@ -3798,7 +3798,7 @@ func (b *PlanBuilder) buildSelect(ctx context.Context, sel *ast.SelectStmt) (p L return nil, err } if b.capFlag&canExpandAST != 0 { - // To be compabitle with MySQL, we add alias name for each select field when creating view. + // To be compatible with MySQL, we add alias name for each select field when creating view. sel.Fields.Fields, err = b.addAliasName(ctx, sel, p) if err != nil { return nil, err @@ -6889,6 +6889,8 @@ func getResultCTESchema(seedSchema *expression.Schema, svar *variable.SessionVar col.RetType = col.RetType.Clone() col.UniqueID = svar.AllocPlanColumnID() col.RetType.DelFlag(mysql.NotNullFlag) + // Since you have reallocated unique id here, the old-cloned-cached hash code is not valid anymore. + col.CleanHashCode() } return res } diff --git a/planner/core/memtable_predicate_extractor.go b/planner/core/memtable_predicate_extractor.go index b55b4e55e158e..f1681794a3e45 100644 --- a/planner/core/memtable_predicate_extractor.go +++ b/planner/core/memtable_predicate_extractor.go @@ -19,7 +19,6 @@ import ( "fmt" "math" "regexp" - "sort" "strconv" "strings" "time" @@ -502,7 +501,7 @@ func (helper extractHelper) parseQuantiles(quantileSet set.StringSet) []float64 } quantiles = append(quantiles, v) } - sort.Float64s(quantiles) + slices.Sort(quantiles) return quantiles } diff --git a/planner/core/optimizer.go b/planner/core/optimizer.go index b1d8dcd04ced4..e868160af9800 100644 --- a/planner/core/optimizer.go +++ b/planner/core/optimizer.go @@ -17,7 +17,6 @@ package core import ( "context" "math" - "sort" "github.com/pingcap/errors" "github.com/pingcap/tidb/config" @@ -40,6 +39,7 @@ import ( "github.com/pingcap/tidb/util/tracing" "go.uber.org/atomic" "go.uber.org/zap" + "golang.org/x/exp/slices" ) // OptimizeAstNode optimizes the query to a physical plan directly. @@ -306,24 +306,24 @@ func DoOptimize(ctx context.Context, sctx sessionctx.Context, flag uint64, logic func refineCETrace(sctx sessionctx.Context) { stmtCtx := sctx.GetSessionVars().StmtCtx stmtCtx.OptimizerCETrace = tracing.DedupCETrace(stmtCtx.OptimizerCETrace) - sort.Slice(stmtCtx.OptimizerCETrace, func(i, j int) bool { - if stmtCtx.OptimizerCETrace[i] == nil && stmtCtx.OptimizerCETrace[j] != nil { + slices.SortFunc(stmtCtx.OptimizerCETrace, func(i, j *tracing.CETraceRecord) bool { + if i == nil && j != nil { return true } - if stmtCtx.OptimizerCETrace[i] == nil || stmtCtx.OptimizerCETrace[j] == nil { + if i == nil || j == nil { return false } - if stmtCtx.OptimizerCETrace[i].TableID != stmtCtx.OptimizerCETrace[j].TableID { - return stmtCtx.OptimizerCETrace[i].TableID < stmtCtx.OptimizerCETrace[j].TableID + if i.TableID != j.TableID { + return i.TableID < j.TableID } - if stmtCtx.OptimizerCETrace[i].Type != stmtCtx.OptimizerCETrace[j].Type { - return stmtCtx.OptimizerCETrace[i].Type < stmtCtx.OptimizerCETrace[j].Type + if i.Type != j.Type { + return i.Type < j.Type } - if stmtCtx.OptimizerCETrace[i].Expr != stmtCtx.OptimizerCETrace[j].Expr { - return stmtCtx.OptimizerCETrace[i].Expr < stmtCtx.OptimizerCETrace[j].Expr + if i.Expr != j.Expr { + return i.Expr < j.Expr } - return stmtCtx.OptimizerCETrace[i].RowCount < stmtCtx.OptimizerCETrace[j].RowCount + return i.RowCount < j.RowCount }) traceRecords := stmtCtx.OptimizerCETrace is := sctx.GetInfoSchema().(infoschema.InfoSchema) diff --git a/planner/core/partition_prune.go b/planner/core/partition_prune.go index 441f571b32925..3ab266340829d 100644 --- a/planner/core/partition_prune.go +++ b/planner/core/partition_prune.go @@ -33,7 +33,7 @@ func PartitionPruning(ctx sessionctx.Context, tbl table.PartitionedTable, conds case model.PartitionTypeHash: return s.pruneHashPartition(ctx, tbl, partitionNames, conds, columns, names) case model.PartitionTypeRange: - rangeOr, _, err := s.pruneRangePartition(ctx, pi, tbl, conds, columns, names, nil) + rangeOr, err := s.pruneRangePartition(ctx, pi, tbl, conds, columns, names) if err != nil { return nil, err } diff --git a/planner/core/partition_pruner_test.go b/planner/core/partition_pruner_test.go index 45f9e1f8f5529..387396f25235c 100644 --- a/planner/core/partition_pruner_test.go +++ b/planner/core/partition_pruner_test.go @@ -361,6 +361,9 @@ func TestListColumnsPartitionPruner(t *testing.T) { tk2.MustExec("insert into t1 (id,a,b) values (1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,5,5),(6,6,6),(7,7,7),(8,8,8),(9,9,9),(10,10,10),(null,10,null)") tk2.MustExec("insert into t2 (id,a,b) values (1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,5,5),(6,6,6),(7,7,7),(8,8,8),(9,9,9),(10,10,10),(null,null,null)") + // Default RPC encoding may cause statistics explain result differ and then the test unstable. + tk1.MustExec("set @@tidb_enable_chunk_rpc = on") + var input []struct { SQL string Pruner string @@ -701,6 +704,22 @@ func TestHashPartitionPruning(t *testing.T) { tk.MustQuery("SELECT col1, COL3 FROM t WHERE COL1 IN (0,14158354938390,0) AND COL3 IN (3522101843073676459,-2846203247576845955,838395691793635638);").Check(testkit.Rows("0 3522101843073676459")) } +func TestIssue32815(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + + tk := testkit.NewTestKit(t, store) + tk.MustExec("set @@tidb_partition_prune_mode='dynamic'") + tk.MustExec("USE test;") + tk.MustExec("DROP TABLE IF EXISTS t;") + tk.MustExec("create table t (a int primary key, b int, key (b)) partition by hash(a) (partition P0, partition p1, partition P2)") + tk.MustExec("insert into t values (1, 1),(2, 2),(3, 3)") + tk.MustQuery("explain select * from t where a IN (1, 2)").Check(testkit.Rows( + "Batch_Point_Get_1 2.00 root table:t, partition:p1,P2 handle:[1 2], keep order:false, desc:false")) + tk.MustQuery("explain select * from t where a IN (1, 2, 1)").Check(testkit.Rows( + "Batch_Point_Get_1 3.00 root table:t, partition:p1,P2 handle:[1 2 1], keep order:false, desc:false")) +} + func TestIssue32007(t *testing.T) { store, clean := testkit.CreateMockStore(t) defer clean() diff --git a/planner/core/physical_plan_test.go b/planner/core/physical_plan_test.go index fe5c5cba7da00..97b80f92251c1 100644 --- a/planner/core/physical_plan_test.go +++ b/planner/core/physical_plan_test.go @@ -538,6 +538,10 @@ func TestEliminateMaxOneRow(t *testing.T) { 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))") + // When paging is used, there is a 'paging:true' makes the explain output differ. + // IndexLookUp 0.00 root paging:true + tk.MustExec("set @@tidb_enable_paging = off") + for i, ts := range input { testdata.OnRecord(func() { output[i].SQL = ts diff --git a/planner/core/plan_cost.go b/planner/core/plan_cost.go index b1eae1c2a5177..16d3478e49679 100644 --- a/planner/core/plan_cost.go +++ b/planner/core/plan_cost.go @@ -21,6 +21,7 @@ import ( "github.com/pingcap/tidb/config" "github.com/pingcap/tidb/expression" "github.com/pingcap/tidb/kv" + "github.com/pingcap/tidb/parser/model" "github.com/pingcap/tidb/planner/property" "github.com/pingcap/tidb/statistics" "github.com/pingcap/tidb/util/paging" @@ -34,6 +35,11 @@ const ( CostFlagUseTrueCardinality ) +const ( + modelVer1 = 1 + modelVer2 = 2 +) + func hasCostFlag(costFlag, flag uint64) bool { return (costFlag & flag) > 0 } @@ -61,21 +67,40 @@ func (p *PhysicalSelection) GetPlanCost(taskType property.TaskType, costFlag uin if p.planCostInit && !hasCostFlag(costFlag, CostFlagRecalculate) { return p.planCost, nil } - var cpuFactor float64 - switch taskType { - case property.RootTaskType, property.MppTaskType: - cpuFactor = p.ctx.GetSessionVars().CPUFactor - case property.CopSingleReadTaskType, property.CopDoubleReadTaskType: - cpuFactor = p.ctx.GetSessionVars().CopCPUFactor - default: - return 0, errors.Errorf("unknown task type %v", taskType) + + var selfCost float64 + switch p.ctx.GetSessionVars().CostModelVersion { + case modelVer1: // selection cost: rows * cpu-factor + var cpuFactor float64 + switch taskType { + case property.RootTaskType, property.MppTaskType: + cpuFactor = p.ctx.GetSessionVars().GetCPUFactor() + case property.CopSingleReadTaskType, property.CopDoubleReadTaskType: + cpuFactor = p.ctx.GetSessionVars().GetCopCPUFactor() + default: + return 0, errors.Errorf("unknown task type %v", taskType) + } + selfCost = getCardinality(p.children[0], costFlag) * cpuFactor + case modelVer2: // selection cost: rows * num-filters * cpu-factor + var cpuFactor float64 + switch taskType { + case property.RootTaskType: + cpuFactor = p.ctx.GetSessionVars().GetCPUFactor() + case property.MppTaskType: // use a dedicated cpu-factor for TiFlash + cpuFactor = p.ctx.GetSessionVars().GetTiFlashCPUFactor() + case property.CopSingleReadTaskType, property.CopDoubleReadTaskType: + cpuFactor = p.ctx.GetSessionVars().GetCopCPUFactor() + default: + return 0, errors.Errorf("unknown task type %v", taskType) + } + selfCost = getCardinality(p.children[0], costFlag) * float64(len(p.Conditions)) * cpuFactor } + childCost, err := p.children[0].GetPlanCost(taskType, costFlag) if err != nil { return 0, err } - p.planCost = childCost - p.planCost += getCardinality(p.children[0], costFlag) * cpuFactor // selection cost: rows * cpu-factor + p.planCost = childCost + selfCost p.planCostInit = true return p.planCost, nil } @@ -83,13 +108,13 @@ func (p *PhysicalSelection) GetPlanCost(taskType property.TaskType, costFlag uin // GetCost computes the cost of projection operator itself. func (p *PhysicalProjection) GetCost(count float64) float64 { sessVars := p.ctx.GetSessionVars() - cpuCost := count * sessVars.CPUFactor + cpuCost := count * sessVars.GetCPUFactor() concurrency := float64(sessVars.ProjectionConcurrency()) if concurrency <= 0 { return cpuCost } cpuCost /= concurrency - concurrencyCost := (1 + concurrency) * sessVars.ConcurrencyFactor + concurrencyCost := (1 + concurrency) * sessVars.GetConcurrencyFactor() return cpuCost + concurrencyCost } @@ -118,7 +143,7 @@ func (p *PhysicalIndexLookUpReader) GetCost(costFlag uint64) (cost float64) { // (indexRows / batchSize) * batchSize * CPUFactor // Since we don't know the number of copTasks built, ignore these network cost now. indexRows := getCardinality(indexPlan, costFlag) - idxCst := indexRows * sessVars.CPUFactor + idxCst := indexRows * sessVars.GetCPUFactor() // if the expectCnt is below the paging threshold, using paging API, recalculate idxCst. // paging API reduces the count of index and table rows, however introduces more seek cost. if ctx.GetSessionVars().EnablePaging && p.expectedCnt > 0 && p.expectedCnt <= paging.Threshold { @@ -131,14 +156,14 @@ func (p *PhysicalIndexLookUpReader) GetCost(costFlag uint64) (cost float64) { cost += idxCst // Add cost of worker goroutines in index lookup. numTblWorkers := float64(sessVars.IndexLookupConcurrency()) - cost += (numTblWorkers + 1) * sessVars.ConcurrencyFactor + cost += (numTblWorkers + 1) * sessVars.GetConcurrencyFactor() // When building table reader executor for each batch, we would sort the handles. CPU // cost of sort is: // CPUFactor * batchSize * Log2(batchSize) * (indexRows / batchSize) indexLookupSize := float64(sessVars.IndexLookupSize) batchSize := math.Min(indexLookupSize, indexRows) if batchSize > 2 { - sortCPUCost := (indexRows * math.Log2(batchSize) * sessVars.CPUFactor) / numTblWorkers + sortCPUCost := (indexRows * math.Log2(batchSize) * sessVars.GetCPUFactor()) / numTblWorkers cost += sortCPUCost } // Also, we need to sort the retrieved rows if index lookup reader is expected to return @@ -148,7 +173,7 @@ func (p *PhysicalIndexLookUpReader) GetCost(costFlag uint64) (cost float64) { selectivity := tableRows / indexRows batchSize = math.Min(indexLookupSize*selectivity, tableRows) if p.keepOrder && batchSize > 2 { - sortCPUCost := (tableRows * math.Log2(batchSize) * sessVars.CPUFactor) / numTblWorkers + sortCPUCost := (tableRows * math.Log2(batchSize) * sessVars.GetCPUFactor()) / numTblWorkers cost += sortCPUCost } return @@ -175,12 +200,14 @@ func (p *PhysicalIndexLookUpReader) GetPlanCost(taskType property.TaskType, cost for tmp = p.tablePlan; len(tmp.Children()) > 0; tmp = tmp.Children()[0] { } ts := tmp.(*PhysicalTableScan) - tblCost, err := ts.GetPlanCost(property.CopDoubleReadTaskType, costFlag) - if err != nil { - return 0, err + if p.ctx.GetSessionVars().CostModelVersion == modelVer1 { + tblCost, err := ts.GetPlanCost(property.CopDoubleReadTaskType, costFlag) + if err != nil { + return 0, err + } + p.planCost -= tblCost + p.planCost += getCardinality(p.indexPlan, costFlag) * ts.getScanRowSize() * p.SCtx().GetSessionVars().GetScanFactor(ts.Table) } - p.planCost -= tblCost - p.planCost += getCardinality(p.indexPlan, costFlag) * ts.getScanRowSize() * p.SCtx().GetSessionVars().GetScanFactor(ts.Table) // index-side net I/O cost: rows * row-size * net-factor netFactor := getTableNetFactor(p.tablePlan) @@ -197,6 +224,9 @@ func (p *PhysicalIndexLookUpReader) GetPlanCost(taskType property.TaskType, cost // table-side seek cost p.planCost += estimateNetSeekCost(p.tablePlan) + // double read cost + p.planCost += p.estDoubleReadCost(ts.Table, costFlag) + // consider concurrency p.planCost /= float64(p.ctx.GetSessionVars().DistSQLScanConcurrency()) @@ -206,6 +236,23 @@ func (p *PhysicalIndexLookUpReader) GetPlanCost(taskType property.TaskType, cost return p.planCost, nil } +func (p *PhysicalIndexLookUpReader) estDoubleReadCost(tbl *model.TableInfo, costFlag uint64) float64 { + if p.ctx.GetSessionVars().CostModelVersion == modelVer1 { + // only consider double-read cost on modelVer2 + return 0 + } + // estimate the double-read cost: (numDoubleReadTasks * seekFactor) / concurrency + doubleReadRows := getCardinality(p.indexPlan, costFlag) + batchSize := float64(p.ctx.GetSessionVars().IndexLookupSize) + concurrency := math.Max(1.0, float64(p.ctx.GetSessionVars().IndexLookupConcurrency())) + seekFactor := p.ctx.GetSessionVars().GetSeekFactor(tbl) + // distRatio indicates how many requests corresponding to a batch, current value is from experiments. + // TODO: estimate it by using index correlation or make it configurable. + distRatio := 40.0 + numDoubleReadTasks := (doubleReadRows / batchSize) * distRatio // use Float64 instead of Int like `Ceil(...)` to make the cost continuous. + return (numDoubleReadTasks * seekFactor) / concurrency +} + // GetPlanCost calculates the cost of the plan if it has not been calculated yet and returns the cost. func (p *PhysicalIndexReader) GetPlanCost(taskType property.TaskType, costFlag uint64) (float64, error) { if p.planCostInit && !hasCostFlag(costFlag, CostFlagRecalculate) { @@ -270,7 +317,12 @@ func (p *PhysicalTableReader) GetPlanCost(taskType property.TaskType, costFlag u concurrency = float64(p.ctx.GetSessionVars().DistSQLScanConcurrency()) rowSize = getTblStats(p.tablePlan).GetAvgRowSize(p.ctx, p.tablePlan.Schema().Columns, false, false) seekCost = estimateNetSeekCost(p.tablePlan) - childCost, err := p.tablePlan.GetPlanCost(property.CopSingleReadTaskType, costFlag) + tType := property.MppTaskType + if p.ctx.GetSessionVars().CostModelVersion == modelVer1 { + // regard the underlying tasks as cop-task on modelVer1 for compatibility + tType = property.CopSingleReadTaskType + } + childCost, err := p.tablePlan.GetPlanCost(tType, costFlag) if err != nil { return 0, err } @@ -284,7 +336,8 @@ func (p *PhysicalTableReader) GetPlanCost(taskType property.TaskType, costFlag u // consider concurrency p.planCost /= concurrency // consider tidb_enforce_mpp - if isMPP && p.ctx.GetSessionVars().IsMPPEnforced() { + if isMPP && p.ctx.GetSessionVars().IsMPPEnforced() && + !hasCostFlag(costFlag, CostFlagRecalculate) { // show the real cost in explain-statements p.planCost /= 1000000000 } } @@ -343,12 +396,34 @@ func (p *PhysicalTableScan) GetPlanCost(taskType property.TaskType, costFlag uin if p.planCostInit && !hasCostFlag(costFlag, CostFlagRecalculate) { return p.planCost, nil } - // scan cost: rows * row-size * scan-factor - scanFactor := p.ctx.GetSessionVars().GetScanFactor(p.Table) - if p.Desc { - scanFactor = p.ctx.GetSessionVars().GetDescScanFactor(p.Table) + + var selfCost float64 + switch p.ctx.GetSessionVars().CostModelVersion { + case modelVer1: // scan cost: rows * row-size * scan-factor + scanFactor := p.ctx.GetSessionVars().GetScanFactor(p.Table) + if p.Desc { + scanFactor = p.ctx.GetSessionVars().GetDescScanFactor(p.Table) + } + selfCost = getCardinality(p, costFlag) * p.getScanRowSize() * scanFactor + case modelVer2: // scan cost: rows * log2(row-size) * scan-factor + var scanFactor float64 + switch taskType { + case property.MppTaskType: // use a dedicated scan-factor for TiFlash + // no need to distinguish `Scan` and `DescScan` for TiFlash for now + scanFactor = p.ctx.GetSessionVars().GetTiFlashScanFactor() + default: // for TiKV + scanFactor = p.ctx.GetSessionVars().GetScanFactor(p.Table) + if p.Desc { + scanFactor = p.ctx.GetSessionVars().GetDescScanFactor(p.Table) + } + } + // the formula `log(rowSize)` is based on experiment results + rowSize := math.Max(p.getScanRowSize(), 2.0) // to guarantee logRowSize >= 1 + logRowSize := math.Log2(rowSize) + selfCost = getCardinality(p, costFlag) * logRowSize * scanFactor } - p.planCost = getCardinality(p, costFlag) * p.getScanRowSize() * scanFactor + + p.planCost = selfCost p.planCostInit = true return p.planCost, nil } @@ -358,42 +433,56 @@ func (p *PhysicalIndexScan) GetPlanCost(taskType property.TaskType, costFlag uin if p.planCostInit && !hasCostFlag(costFlag, CostFlagRecalculate) { return p.planCost, nil } - // scan cost: rows * row-size * scan-factor - scanFactor := p.ctx.GetSessionVars().GetScanFactor(p.Table) - if p.Desc { - scanFactor = p.ctx.GetSessionVars().GetDescScanFactor(p.Table) + + var selfCost float64 + switch p.ctx.GetSessionVars().CostModelVersion { + case modelVer1: // scan cost: rows * row-size * scan-factor + scanFactor := p.ctx.GetSessionVars().GetScanFactor(p.Table) + if p.Desc { + scanFactor = p.ctx.GetSessionVars().GetDescScanFactor(p.Table) + } + selfCost = getCardinality(p, costFlag) * p.getScanRowSize() * scanFactor + case modelVer2: + scanFactor := p.ctx.GetSessionVars().GetScanFactor(p.Table) + if p.Desc { + scanFactor = p.ctx.GetSessionVars().GetDescScanFactor(p.Table) + } + rowSize := math.Max(p.getScanRowSize(), 2.0) + logRowSize := math.Log2(rowSize) + selfCost = getCardinality(p, costFlag) * logRowSize * scanFactor } - p.planCost = getCardinality(p, costFlag) * p.getScanRowSize() * scanFactor + + p.planCost = selfCost p.planCostInit = true return p.planCost, nil } // GetCost computes the cost of index join operator and its children. -func (p *PhysicalIndexJoin) GetCost(outerCnt, innerCnt float64, outerCost, innerCost float64) float64 { +func (p *PhysicalIndexJoin) GetCost(outerCnt, innerCnt, outerCost, innerCost float64, costFlag uint64) float64 { var cpuCost float64 sessVars := p.ctx.GetSessionVars() // Add the cost of evaluating outer filter, since inner filter of index join // is always empty, we can simply tell whether outer filter is empty using the // summed length of left/right conditions. if len(p.LeftConditions)+len(p.RightConditions) > 0 { - cpuCost += sessVars.CPUFactor * outerCnt + cpuCost += sessVars.GetCPUFactor() * outerCnt outerCnt *= SelectionFactor } // Cost of extracting lookup keys. - innerCPUCost := sessVars.CPUFactor * outerCnt + innerCPUCost := sessVars.GetCPUFactor() * outerCnt // Cost of sorting and removing duplicate lookup keys: // (outerCnt / batchSize) * (batchSize * Log2(batchSize) + batchSize) * CPUFactor batchSize := math.Min(float64(p.ctx.GetSessionVars().IndexJoinBatchSize), outerCnt) if batchSize > 2 { - innerCPUCost += outerCnt * (math.Log2(batchSize) + 1) * sessVars.CPUFactor + innerCPUCost += outerCnt * (math.Log2(batchSize) + 1) * sessVars.GetCPUFactor() } // Add cost of building inner executors. CPU cost of building copTasks: // (outerCnt / batchSize) * (batchSize * distinctFactor) * CPUFactor // Since we don't know the number of copTasks built, ignore these network cost now. - innerCPUCost += outerCnt * distinctFactor * sessVars.CPUFactor + innerCPUCost += outerCnt * distinctFactor * sessVars.GetCPUFactor() // CPU cost of building hash table for inner results: // (outerCnt / batchSize) * (batchSize * distinctFactor) * innerCnt * CPUFactor - innerCPUCost += outerCnt * distinctFactor * innerCnt * sessVars.CPUFactor + innerCPUCost += outerCnt * distinctFactor * innerCnt * sessVars.GetCPUFactor() innerConcurrency := float64(p.ctx.GetSessionVars().IndexLookupJoinConcurrency()) cpuCost += innerCPUCost / innerConcurrency // Cost of probing hash table in main thread. @@ -406,15 +495,34 @@ func (p *PhysicalIndexJoin) GetCost(outerCnt, innerCnt float64, outerCost, inner numPairs = 0 } } - probeCost := numPairs * sessVars.CPUFactor + if hasCostFlag(costFlag, CostFlagUseTrueCardinality) { + numPairs = getOperatorActRows(p) + } + probeCost := numPairs * sessVars.GetCPUFactor() // Cost of additional concurrent goroutines. - cpuCost += probeCost + (innerConcurrency+1.0)*sessVars.ConcurrencyFactor + cpuCost += probeCost + (innerConcurrency+1.0)*sessVars.GetConcurrencyFactor() // Memory cost of hash tables for inner rows. The computed result is the upper bound, // since the executor is pipelined and not all workers are always in full load. - memoryCost := innerConcurrency * (batchSize * distinctFactor) * innerCnt * sessVars.MemoryFactor + memoryCost := innerConcurrency * (batchSize * distinctFactor) * innerCnt * sessVars.GetMemoryFactor() // Cost of inner child plan, i.e, mainly I/O and network cost. innerPlanCost := outerCnt * innerCost - return outerCost + innerPlanCost + cpuCost + memoryCost + return outerCost + innerPlanCost + cpuCost + memoryCost + p.estDoubleReadCost(outerCnt) +} + +func (p *PhysicalIndexJoin) estDoubleReadCost(doubleReadRows float64) float64 { + if p.ctx.GetSessionVars().CostModelVersion == modelVer1 { + // only consider double-read cost on modelVer2 + return 0 + } + // estimate the double read cost for IndexJoin: (double-read-tasks * seek-factor) / concurrency + seekFactor := p.ctx.GetSessionVars().GetSeekFactor(nil) + batchSize := math.Max(1.0, float64(p.ctx.GetSessionVars().IndexJoinBatchSize)) + concurrency := math.Max(1.0, float64(p.ctx.GetSessionVars().IndexLookupJoinConcurrency())) + // distRatio indicates how many requests corresponding to a batch, current value is from experiments. + // TODO: estimate it by using index correlation or make it configurable. + distRatio := 40.0 + numDoubleReadTasks := (doubleReadRows / batchSize) * distRatio + return (numDoubleReadTasks * seekFactor) / concurrency } // GetPlanCost calculates the cost of the plan if it has not been calculated yet and returns the cost. @@ -433,39 +541,43 @@ func (p *PhysicalIndexJoin) GetPlanCost(taskType property.TaskType, costFlag uin } outerCnt := getCardinality(outerChild, costFlag) innerCnt := getCardinality(innerChild, costFlag) - p.planCost = p.GetCost(outerCnt, innerCnt, outerCost, innerCost) + if hasCostFlag(costFlag, CostFlagUseTrueCardinality) && outerCnt > 0 { + innerCnt /= outerCnt // corresponding to one outer row when calculating IndexJoin costs + innerCost /= outerCnt + } + p.planCost = p.GetCost(outerCnt, innerCnt, outerCost, innerCost, costFlag) p.planCostInit = true return p.planCost, nil } // GetCost computes the cost of index merge join operator and its children. -func (p *PhysicalIndexHashJoin) GetCost(outerCnt, innerCnt, outerCost, innerCost float64) float64 { +func (p *PhysicalIndexHashJoin) GetCost(outerCnt, innerCnt, outerCost, innerCost float64, costFlag uint64) float64 { var cpuCost float64 sessVars := p.ctx.GetSessionVars() // Add the cost of evaluating outer filter, since inner filter of index join // is always empty, we can simply tell whether outer filter is empty using the // summed length of left/right conditions. if len(p.LeftConditions)+len(p.RightConditions) > 0 { - cpuCost += sessVars.CPUFactor * outerCnt + cpuCost += sessVars.GetCPUFactor() * outerCnt outerCnt *= SelectionFactor } // Cost of extracting lookup keys. - innerCPUCost := sessVars.CPUFactor * outerCnt + innerCPUCost := sessVars.GetCPUFactor() * outerCnt // Cost of sorting and removing duplicate lookup keys: // (outerCnt / batchSize) * (batchSize * Log2(batchSize) + batchSize) * CPUFactor batchSize := math.Min(float64(sessVars.IndexJoinBatchSize), outerCnt) if batchSize > 2 { - innerCPUCost += outerCnt * (math.Log2(batchSize) + 1) * sessVars.CPUFactor + innerCPUCost += outerCnt * (math.Log2(batchSize) + 1) * sessVars.GetCPUFactor() } // Add cost of building inner executors. CPU cost of building copTasks: // (outerCnt / batchSize) * (batchSize * distinctFactor) * CPUFactor // Since we don't know the number of copTasks built, ignore these network cost now. - innerCPUCost += outerCnt * distinctFactor * sessVars.CPUFactor + innerCPUCost += outerCnt * distinctFactor * sessVars.GetCPUFactor() concurrency := float64(sessVars.IndexLookupJoinConcurrency()) cpuCost += innerCPUCost / concurrency // CPU cost of building hash table for outer results concurrently. // (outerCnt / batchSize) * (batchSize * CPUFactor) - outerCPUCost := outerCnt * sessVars.CPUFactor + outerCPUCost := outerCnt * sessVars.GetCPUFactor() cpuCost += outerCPUCost / concurrency // Cost of probing hash table concurrently. numPairs := outerCnt * innerCnt @@ -477,25 +589,28 @@ func (p *PhysicalIndexHashJoin) GetCost(outerCnt, innerCnt, outerCost, innerCost numPairs = 0 } } + if hasCostFlag(costFlag, CostFlagUseTrueCardinality) { + numPairs = getOperatorActRows(p) + } // Inner workers do hash join in parallel, but they can only save ONE outer // batch results. So as the number of outer batch exceeds inner concurrency, // it would fall back to linear execution. In a word, the hash join only runs // in parallel for the first `innerConcurrency` number of inner tasks. var probeCost float64 if outerCnt/batchSize >= concurrency { - probeCost = (numPairs - batchSize*innerCnt*(concurrency-1)) * sessVars.CPUFactor + probeCost = (numPairs - batchSize*innerCnt*(concurrency-1)) * sessVars.GetCPUFactor() } else { - probeCost = batchSize * innerCnt * sessVars.CPUFactor + probeCost = batchSize * innerCnt * sessVars.GetCPUFactor() } cpuCost += probeCost // Cost of additional concurrent goroutines. - cpuCost += (concurrency + 1.0) * sessVars.ConcurrencyFactor + cpuCost += (concurrency + 1.0) * sessVars.GetConcurrencyFactor() // Memory cost of hash tables for outer rows. The computed result is the upper bound, // since the executor is pipelined and not all workers are always in full load. - memoryCost := concurrency * (batchSize * distinctFactor) * innerCnt * sessVars.MemoryFactor + memoryCost := concurrency * (batchSize * distinctFactor) * innerCnt * sessVars.GetMemoryFactor() // Cost of inner child plan, i.e, mainly I/O and network cost. innerPlanCost := outerCnt * innerCost - return outerCost + innerPlanCost + cpuCost + memoryCost + return outerCost + innerPlanCost + cpuCost + memoryCost + p.estDoubleReadCost(outerCnt) } // GetPlanCost calculates the cost of the plan if it has not been calculated yet and returns the cost. @@ -514,24 +629,28 @@ func (p *PhysicalIndexHashJoin) GetPlanCost(taskType property.TaskType, costFlag } outerCnt := getCardinality(outerChild, costFlag) innerCnt := getCardinality(innerChild, costFlag) - p.planCost = p.GetCost(outerCnt, innerCnt, outerCost, innerCost) + if hasCostFlag(costFlag, CostFlagUseTrueCardinality) && outerCnt > 0 { + innerCnt /= outerCnt // corresponding to one outer row when calculating IndexJoin costs + innerCost /= outerCnt + } + p.planCost = p.GetCost(outerCnt, innerCnt, outerCost, innerCost, costFlag) p.planCostInit = true return p.planCost, nil } // GetCost computes the cost of index merge join operator and its children. -func (p *PhysicalIndexMergeJoin) GetCost(outerCnt, innerCnt, outerCost, innerCost float64) float64 { +func (p *PhysicalIndexMergeJoin) GetCost(outerCnt, innerCnt, outerCost, innerCost float64, costFlag uint64) float64 { var cpuCost float64 sessVars := p.ctx.GetSessionVars() // Add the cost of evaluating outer filter, since inner filter of index join // is always empty, we can simply tell whether outer filter is empty using the // summed length of left/right conditions. if len(p.LeftConditions)+len(p.RightConditions) > 0 { - cpuCost += sessVars.CPUFactor * outerCnt + cpuCost += sessVars.GetCPUFactor() * outerCnt outerCnt *= SelectionFactor } // Cost of extracting lookup keys. - innerCPUCost := sessVars.CPUFactor * outerCnt + innerCPUCost := sessVars.GetCPUFactor() * outerCnt // Cost of sorting and removing duplicate lookup keys: // (outerCnt / batchSize) * (sortFactor + 1.0) * batchSize * cpuFactor // If `p.NeedOuterSort` is true, the sortFactor is batchSize * Log2(batchSize). @@ -542,12 +661,12 @@ func (p *PhysicalIndexMergeJoin) GetCost(outerCnt, innerCnt, outerCost, innerCos sortFactor = math.Log2(batchSize) } if batchSize > 2 { - innerCPUCost += outerCnt * (sortFactor + 1.0) * sessVars.CPUFactor + innerCPUCost += outerCnt * (sortFactor + 1.0) * sessVars.GetCPUFactor() } // Add cost of building inner executors. CPU cost of building copTasks: // (outerCnt / batchSize) * (batchSize * distinctFactor) * cpuFactor // Since we don't know the number of copTasks built, ignore these network cost now. - innerCPUCost += outerCnt * distinctFactor * sessVars.CPUFactor + innerCPUCost += outerCnt * distinctFactor * sessVars.GetCPUFactor() innerConcurrency := float64(p.ctx.GetSessionVars().IndexLookupJoinConcurrency()) cpuCost += innerCPUCost / innerConcurrency // Cost of merge join in inner worker. @@ -560,6 +679,9 @@ func (p *PhysicalIndexMergeJoin) GetCost(outerCnt, innerCnt, outerCost, innerCos numPairs = 0 } } + if hasCostFlag(costFlag, CostFlagUseTrueCardinality) { + numPairs = getOperatorActRows(p) + } avgProbeCnt := numPairs / outerCnt var probeCost float64 // Inner workers do merge join in parallel, but they can only save ONE outer batch @@ -567,18 +689,18 @@ func (p *PhysicalIndexMergeJoin) GetCost(outerCnt, innerCnt, outerCost, innerCos // linear execution. In a word, the merge join only run in parallel for the first // `innerConcurrency` number of inner tasks. if outerCnt/batchSize >= innerConcurrency { - probeCost = (numPairs - batchSize*avgProbeCnt*(innerConcurrency-1)) * sessVars.CPUFactor + probeCost = (numPairs - batchSize*avgProbeCnt*(innerConcurrency-1)) * sessVars.GetCPUFactor() } else { - probeCost = batchSize * avgProbeCnt * sessVars.CPUFactor + probeCost = batchSize * avgProbeCnt * sessVars.GetCPUFactor() } - cpuCost += probeCost + (innerConcurrency+1.0)*sessVars.ConcurrencyFactor + cpuCost += probeCost + (innerConcurrency+1.0)*sessVars.GetConcurrencyFactor() // Index merge join save the join results in inner worker. // So the memory cost consider the results size for each batch. - memoryCost := innerConcurrency * (batchSize * avgProbeCnt) * sessVars.MemoryFactor + memoryCost := innerConcurrency * (batchSize * avgProbeCnt) * sessVars.GetMemoryFactor() innerPlanCost := outerCnt * innerCost - return outerCost + innerPlanCost + cpuCost + memoryCost + return outerCost + innerPlanCost + cpuCost + memoryCost + p.estDoubleReadCost(outerCnt) } // GetPlanCost calculates the cost of the plan if it has not been calculated yet and returns the cost. @@ -597,7 +719,11 @@ func (p *PhysicalIndexMergeJoin) GetPlanCost(taskType property.TaskType, costFla } outerCnt := getCardinality(outerChild, costFlag) innerCnt := getCardinality(innerChild, costFlag) - p.planCost = p.GetCost(outerCnt, innerCnt, outerCost, innerCost) + if hasCostFlag(costFlag, CostFlagUseTrueCardinality) && outerCnt > 0 { + innerCnt /= outerCnt // corresponding to one outer row when calculating IndexJoin costs + innerCost /= outerCnt + } + p.planCost = p.GetCost(outerCnt, innerCnt, outerCost, innerCost, costFlag) p.planCostInit = true return p.planCost, nil } @@ -607,19 +733,19 @@ func (p *PhysicalApply) GetCost(lCount, rCount, lCost, rCost float64) float64 { var cpuCost float64 sessVars := p.ctx.GetSessionVars() if len(p.LeftConditions) > 0 { - cpuCost += lCount * sessVars.CPUFactor + cpuCost += lCount * sessVars.GetCPUFactor() lCount *= SelectionFactor } if len(p.RightConditions) > 0 { - cpuCost += lCount * rCount * sessVars.CPUFactor + cpuCost += lCount * rCount * sessVars.GetCPUFactor() rCount *= SelectionFactor } if len(p.EqualConditions)+len(p.OtherConditions) > 0 { if p.JoinType == SemiJoin || p.JoinType == AntiSemiJoin || p.JoinType == LeftOuterSemiJoin || p.JoinType == AntiLeftOuterSemiJoin { - cpuCost += lCount * rCount * sessVars.CPUFactor * 0.5 + cpuCost += lCount * rCount * sessVars.GetCPUFactor() * 0.5 } else { - cpuCost += lCount * rCount * sessVars.CPUFactor + cpuCost += lCount * rCount * sessVars.GetCPUFactor() } } // Apply uses a NestedLoop method for execution. @@ -651,7 +777,7 @@ func (p *PhysicalApply) GetPlanCost(taskType property.TaskType, costFlag uint64) } // GetCost computes cost of merge join operator itself. -func (p *PhysicalMergeJoin) GetCost(lCnt, rCnt float64) float64 { +func (p *PhysicalMergeJoin) GetCost(lCnt, rCnt float64, costFlag uint64) float64 { outerCnt := lCnt innerCnt := rCnt innerKeys := p.RightJoinKeys @@ -682,19 +808,22 @@ func (p *PhysicalMergeJoin) GetCost(lCnt, rCnt float64) float64 { numPairs = 0 } } + if hasCostFlag(costFlag, CostFlagUseTrueCardinality) { + numPairs = getOperatorActRows(p) + } sessVars := p.ctx.GetSessionVars() - probeCost := numPairs * sessVars.CPUFactor + probeCost := numPairs * sessVars.GetCPUFactor() // Cost of evaluating outer filters. var cpuCost float64 if len(p.LeftConditions)+len(p.RightConditions) > 0 { probeCost *= SelectionFactor - cpuCost += outerCnt * sessVars.CPUFactor + cpuCost += outerCnt * sessVars.GetCPUFactor() } cpuCost += probeCost // For merge join, only one group of rows with same join key(not null) are cached, // we compute average memory cost using estimated group size. NDV := getColsNDV(innerKeys, innerSchema, innerStats) - memoryCost := (innerCnt / NDV) * sessVars.MemoryFactor + memoryCost := (innerCnt / NDV) * sessVars.GetMemoryFactor() return cpuCost + memoryCost } @@ -711,13 +840,13 @@ func (p *PhysicalMergeJoin) GetPlanCost(taskType property.TaskType, costFlag uin } p.planCost += childCost } - p.planCost += p.GetCost(getCardinality(p.children[0], costFlag), getCardinality(p.children[1], costFlag)) + p.planCost += p.GetCost(getCardinality(p.children[0], costFlag), getCardinality(p.children[1], costFlag), costFlag) p.planCostInit = true return p.planCost, nil } // GetCost computes cost of hash join operator itself. -func (p *PhysicalHashJoin) GetCost(lCnt, rCnt float64) float64 { +func (p *PhysicalHashJoin) GetCost(lCnt, rCnt float64, isMPP bool, costFlag uint64) float64 { buildCnt, probeCnt := lCnt, rCnt build := p.children[0] // Taking the right as the inner for right join or using the outer to build a hash table. @@ -731,9 +860,13 @@ func (p *PhysicalHashJoin) GetCost(lCnt, rCnt float64) float64 { rowSize := getAvgRowSize(build.statsInfo(), build.Schema()) spill := oomUseTmpStorage && memQuota > 0 && rowSize*buildCnt > float64(memQuota) && p.storeTp != kv.TiFlash // Cost of building hash table. - cpuCost := buildCnt * sessVars.CPUFactor - memoryCost := buildCnt * sessVars.MemoryFactor - diskCost := buildCnt * sessVars.DiskFactor * rowSize + cpuFactor := sessVars.GetCPUFactor() + if isMPP && p.ctx.GetSessionVars().CostModelVersion == modelVer2 { + cpuFactor = sessVars.GetTiFlashCPUFactor() // use the dedicated TiFlash CPU Factor on modelVer2 + } + cpuCost := buildCnt * cpuFactor + memoryCost := buildCnt * sessVars.GetMemoryFactor() + diskCost := buildCnt * sessVars.GetDiskFactor() * rowSize // Number of matched row pairs regarding the equal join conditions. helper := &fullJoinRowCountHelper{ cartesian: false, @@ -761,30 +894,33 @@ func (p *PhysicalHashJoin) GetCost(lCnt, rCnt float64) float64 { numPairs = 0 } } + if hasCostFlag(costFlag, CostFlagUseTrueCardinality) { + numPairs = getOperatorActRows(p) + } // Cost of querying hash table is cheap actually, so we just compute the cost of // evaluating `OtherConditions` and joining row pairs. - probeCost := numPairs * sessVars.CPUFactor - probeDiskCost := numPairs * sessVars.DiskFactor * rowSize + probeCost := numPairs * cpuFactor + probeDiskCost := numPairs * sessVars.GetDiskFactor() * rowSize // Cost of evaluating outer filter. if len(p.LeftConditions)+len(p.RightConditions) > 0 { // Input outer count for the above compution should be adjusted by SelectionFactor. probeCost *= SelectionFactor probeDiskCost *= SelectionFactor - probeCost += probeCnt * sessVars.CPUFactor + probeCost += probeCnt * cpuFactor } diskCost += probeDiskCost probeCost /= float64(p.Concurrency) // Cost of additional concurrent goroutines. - cpuCost += probeCost + float64(p.Concurrency+1)*sessVars.ConcurrencyFactor + cpuCost += probeCost + float64(p.Concurrency+1)*sessVars.GetConcurrencyFactor() // Cost of traveling the hash table to resolve missing matched cases when building the hash table from the outer table if p.UseOuterToBuild { if spill { // It runs in sequence when build data is on disk. See handleUnmatchedRowsFromHashTableInDisk - cpuCost += buildCnt * sessVars.CPUFactor + cpuCost += buildCnt * cpuFactor } else { - cpuCost += buildCnt * sessVars.CPUFactor / float64(p.Concurrency) + cpuCost += buildCnt * cpuFactor / float64(p.Concurrency) } - diskCost += buildCnt * sessVars.DiskFactor * rowSize + diskCost += buildCnt * sessVars.GetDiskFactor() * rowSize } if spill { @@ -808,23 +944,30 @@ func (p *PhysicalHashJoin) GetPlanCost(taskType property.TaskType, costFlag uint } p.planCost += childCost } - p.planCost += p.GetCost(getCardinality(p.children[0], costFlag), getCardinality(p.children[1], costFlag)) + p.planCost += p.GetCost(getCardinality(p.children[0], costFlag), getCardinality(p.children[1], costFlag), taskType == property.MppTaskType, costFlag) p.planCostInit = true return p.planCost, nil } // GetCost computes cost of stream aggregation considering CPU/memory. -func (p *PhysicalStreamAgg) GetCost(inputRows float64, isRoot bool, costFlag uint64) float64 { +func (p *PhysicalStreamAgg) GetCost(inputRows float64, isRoot, isMPP bool, costFlag uint64) float64 { aggFuncFactor := p.getAggFuncCostFactor(false) var cpuCost float64 sessVars := p.ctx.GetSessionVars() if isRoot { - cpuCost = inputRows * sessVars.CPUFactor * aggFuncFactor + cpuCost = inputRows * sessVars.GetCPUFactor() * aggFuncFactor + } else if isMPP { + if p.ctx.GetSessionVars().CostModelVersion == modelVer2 { + // use the dedicated CPU factor for TiFlash on modelVer2 + cpuCost = inputRows * sessVars.GetTiFlashCPUFactor() * aggFuncFactor + } else { + cpuCost = inputRows * sessVars.GetCopCPUFactor() * aggFuncFactor + } } else { - cpuCost = inputRows * sessVars.CopCPUFactor * aggFuncFactor + cpuCost = inputRows * sessVars.GetCopCPUFactor() * aggFuncFactor } rowsPerGroup := inputRows / getCardinality(p, costFlag) - memoryCost := rowsPerGroup * distinctFactor * sessVars.MemoryFactor * float64(p.numDistinctFunc()) + memoryCost := rowsPerGroup * distinctFactor * sessVars.GetMemoryFactor() * float64(p.numDistinctFunc()) return cpuCost + memoryCost } @@ -838,7 +981,7 @@ func (p *PhysicalStreamAgg) GetPlanCost(taskType property.TaskType, costFlag uin return 0, err } p.planCost = childCost - p.planCost += p.GetCost(getCardinality(p.children[0], costFlag), taskType == property.RootTaskType, costFlag) + p.planCost += p.GetCost(getCardinality(p.children[0], costFlag), taskType == property.RootTaskType, taskType == property.MppTaskType, costFlag) p.planCostInit = true return p.planCost, nil } @@ -851,20 +994,27 @@ func (p *PhysicalHashAgg) GetCost(inputRows float64, isRoot, isMPP bool, costFla var cpuCost float64 sessVars := p.ctx.GetSessionVars() if isRoot { - cpuCost = inputRows * sessVars.CPUFactor * aggFuncFactor + cpuCost = inputRows * sessVars.GetCPUFactor() * aggFuncFactor divisor, con := p.cpuCostDivisor(numDistinctFunc > 0) if divisor > 0 { cpuCost /= divisor // Cost of additional goroutines. - cpuCost += (con + 1) * sessVars.ConcurrencyFactor + cpuCost += (con + 1) * sessVars.GetConcurrencyFactor() + } + } else if isMPP { + if p.ctx.GetSessionVars().CostModelVersion == modelVer2 { + // use the dedicated CPU factor for TiFlash on modelVer2 + cpuCost = inputRows * sessVars.GetTiFlashCPUFactor() * aggFuncFactor + } else { + cpuCost = inputRows * sessVars.GetCopCPUFactor() * aggFuncFactor } } else { - cpuCost = inputRows * sessVars.CopCPUFactor * aggFuncFactor + cpuCost = inputRows * sessVars.GetCopCPUFactor() * aggFuncFactor } - memoryCost := cardinality * sessVars.MemoryFactor * float64(len(p.AggFuncs)) + memoryCost := cardinality * sessVars.GetMemoryFactor() * float64(len(p.AggFuncs)) // When aggregation has distinct flag, we would allocate a map for each group to // check duplication. - memoryCost += inputRows * distinctFactor * sessVars.MemoryFactor * float64(numDistinctFunc) + memoryCost += inputRows * distinctFactor * sessVars.GetMemoryFactor() * float64(numDistinctFunc) return cpuCost + memoryCost } @@ -899,14 +1049,14 @@ func (p *PhysicalSort) GetCost(count float64, schema *expression.Schema) float64 count = 2.0 } sessVars := p.ctx.GetSessionVars() - cpuCost := count * math.Log2(count) * sessVars.CPUFactor - memoryCost := count * sessVars.MemoryFactor + cpuCost := count * math.Log2(count) * sessVars.GetCPUFactor() + memoryCost := count * sessVars.GetMemoryFactor() oomUseTmpStorage := config.GetGlobalConfig().OOMUseTmpStorage memQuota := sessVars.StmtCtx.MemTracker.GetBytesLimit() // sessVars.MemQuotaQuery && hint rowSize := getAvgRowSize(p.statsInfo(), schema) spill := oomUseTmpStorage && memQuota > 0 && rowSize*count > float64(memQuota) - diskCost := count * sessVars.DiskFactor * rowSize + diskCost := count * sessVars.GetDiskFactor() * rowSize if !spill { diskCost = 0 } else { @@ -945,11 +1095,11 @@ func (p *PhysicalTopN) GetCost(count float64, isRoot bool) float64 { // row. var cpuCost float64 if isRoot { - cpuCost = count * math.Log2(heapSize) * sessVars.CPUFactor + cpuCost = count * math.Log2(heapSize) * sessVars.GetCPUFactor() } else { - cpuCost = count * math.Log2(heapSize) * sessVars.CopCPUFactor + cpuCost = count * math.Log2(heapSize) * sessVars.GetCopCPUFactor() } - memoryCost := heapSize * sessVars.MemoryFactor + memoryCost := heapSize * sessVars.GetMemoryFactor() return cpuCost + memoryCost } @@ -1043,7 +1193,7 @@ func (p *PhysicalUnionAll) GetPlanCost(taskType property.TaskType, costFlag uint } childMaxCost = math.Max(childMaxCost, childCost) } - p.planCost = childMaxCost + float64(1+len(p.children))*p.ctx.GetSessionVars().ConcurrencyFactor + p.planCost = childMaxCost + float64(1+len(p.children))*p.ctx.GetSessionVars().GetConcurrencyFactor() p.planCostInit = true return p.planCost, nil } @@ -1058,16 +1208,33 @@ func (p *PhysicalExchangeReceiver) GetPlanCost(taskType property.TaskType, costF return 0, err } p.planCost = childCost - // accumulate net cost - // TODO: this formula is wrong since it doesn't consider tableRowSize, fix it later - p.planCost += getCardinality(p.children[0], costFlag) * p.ctx.GetSessionVars().GetNetworkFactor(nil) + // accumulate net cost: rows * row-size * net-factor + rowSize := getTblStats(p.children[0]).GetAvgRowSize(p.ctx, p.children[0].Schema().Columns, false, false) + p.planCost += getCardinality(p.children[0], costFlag) * rowSize * p.ctx.GetSessionVars().GetNetworkFactor(nil) p.planCostInit = true return p.planCost, nil } +func getOperatorActRows(operator PhysicalPlan) float64 { + if operator == nil { + return 0 + } + runtimeInfo := operator.SCtx().GetSessionVars().StmtCtx.RuntimeStatsColl + id := operator.ID() + actRows := 0.0 + if runtimeInfo.ExistsRootStats(id) { + actRows = float64(runtimeInfo.GetRootStats(id).GetActRows()) + } else if runtimeInfo.ExistsCopStats(id) { + actRows = float64(runtimeInfo.GetCopStats(id).GetActRows()) + } else { + actRows = 0.0 // no data for this operator + } + return actRows +} + func getCardinality(operator PhysicalPlan, costFlag uint64) float64 { if hasCostFlag(costFlag, CostFlagUseTrueCardinality) { - // TODO: return the true cardinality of this operator + return getOperatorActRows(operator) } return operator.StatsCount() } diff --git a/planner/core/plan_cost_test.go b/planner/core/plan_cost_test.go index 11464ec0867d1..d8bf5833412ce 100644 --- a/planner/core/plan_cost_test.go +++ b/planner/core/plan_cost_test.go @@ -460,6 +460,7 @@ func TestNewCostInterfaceRandGen(t *testing.T) { tk.MustExec("use test") tk.MustExec(`create table t (a int primary key, b int, c int, d int, k int, key b(b), key cd(c, d), unique key(k))`) + tk.MustExec(`set @@tidb_enable_paging = off`) queries := []string{ `SELECT a FROM t WHERE a is null AND d in (5307, 15677, 57970)`, @@ -939,3 +940,30 @@ func TestNewCostInterfaceRandGen(t *testing.T) { checkCost(t, tk, q, "") } } + +func TestTrueCardCost(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + tk := testkit.NewTestKit(t, store) + + tk.MustExec("use test") + tk.MustExec(`create table t (a int primary key, b int, key(b))`) + + checkPlanCost := func(sql string) { + tk.MustExec(`set @@tidb_enable_new_cost_interface=0`) + rs := tk.MustQuery(`explain analyze format=verbose ` + sql).Rows() + planCost1 := rs[0][2].(string) + + tk.MustExec(`set @@tidb_enable_new_cost_interface=1`) + rs = tk.MustQuery(`explain analyze format=true_card_cost ` + sql).Rows() + planCost2 := rs[0][2].(string) + + // `true_card_cost` can work since the plan cost is changed + require.NotEqual(t, planCost1, planCost2) + } + + checkPlanCost(`select * from t`) + checkPlanCost(`select * from t where a>10`) + checkPlanCost(`select * from t where a>10 limit 10`) + checkPlanCost(`select sum(a), b*2 from t use index(b) group by b order by sum(a) limit 10`) +} diff --git a/planner/core/plan_test.go b/planner/core/plan_test.go index c0c9306895c74..ed05bcce2c429 100644 --- a/planner/core/plan_test.go +++ b/planner/core/plan_test.go @@ -58,6 +58,10 @@ func TestPreferRangeScan(t *testing.T) { tk.MustExec("insert into test(name,age,addr) select name,age,addr from test;") tk.MustExec("insert into test(name,age,addr) select name,age,addr from test;") tk.MustExec("analyze table test;") + + // 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 @@ -175,7 +179,9 @@ func TestEncodeDecodePlan(t *testing.T) { tk.MustExec("use test") tk.MustExec("drop table if exists t1,t2") tk.MustExec("create table t1 (a int key,b int,c int, index (b));") + tk.MustExec("create table tp (a int ,b int,c int) partition by hash(b) partitions 5;") tk.MustExec("set tidb_enable_collect_execution_info=1;") + tk.MustExec("set tidb_partition_prune_mode='static';") tk.Session().GetSessionVars().PlanID = 0 getPlanTree := func() string { @@ -190,28 +196,37 @@ func TestEncodeDecodePlan(t *testing.T) { } tk.MustExec("select max(a) from t1 where a>0;") planTree := getPlanTree() - require.True(t, strings.Contains(planTree, "time")) - require.True(t, strings.Contains(planTree, "loops")) + require.Contains(t, planTree, "time") + require.Contains(t, planTree, "loops") tk.MustExec("insert into t1 values (1,1,1);") planTree = getPlanTree() - require.True(t, strings.Contains(planTree, "Insert")) - require.True(t, strings.Contains(planTree, "time")) - require.True(t, strings.Contains(planTree, "loops")) + require.Contains(t, planTree, "Insert") + require.Contains(t, planTree, "time") + require.Contains(t, planTree, "loops") tk.MustExec("with cte(a) as (select 1) select * from cte") planTree = getPlanTree() - require.True(t, strings.Contains(planTree, "CTE")) - require.True(t, strings.Contains(planTree, "1->Column#1")) - require.True(t, strings.Contains(planTree, "time")) - require.True(t, strings.Contains(planTree, "loops")) + require.Contains(t, planTree, "CTE") + require.Contains(t, planTree, "1->Column#1") + require.Contains(t, planTree, "time") + require.Contains(t, planTree, "loops") tk.MustExec("with cte(a) as (select 2) select * from cte") planTree = getPlanTree() - require.True(t, strings.Contains(planTree, "CTE")) - require.True(t, strings.Contains(planTree, "2->Column#1")) - require.True(t, strings.Contains(planTree, "time")) - require.True(t, strings.Contains(planTree, "loops")) + require.Contains(t, planTree, "CTE") + require.Contains(t, planTree, "2->Column#1") + require.Contains(t, planTree, "time") + require.Contains(t, planTree, "loops") + + tk.MustExec("select * from tp") + planTree = getPlanTree() + require.Contains(t, planTree, "PartitionUnion") + + tk.MustExec("select row_number() over (partition by c) from t1;") + planTree = getPlanTree() + require.Contains(t, planTree, "Shuffle") + require.Contains(t, planTree, "ShuffleReceiver") } func TestNormalizedDigest(t *testing.T) { @@ -663,7 +678,7 @@ func TestCopPaging(t *testing.T) { for i := 0; i < 10; i++ { tk.MustQuery("explain format='brief' select * from t force index(i) where id <= 1024 and c1 >= 0 and c1 <= 1024 and c2 in (2, 4, 6, 8) order by c1 limit 960").Check(testkit.Rows( "Limit 4.00 root offset:0, count:960", - "└─IndexLookUp 4.00 root paging:true", + "└─IndexLookUp 4.00 root ", " ├─Selection(Build) 1024.00 cop[tikv] le(test.t.id, 1024)", " │ └─IndexRangeScan 1024.00 cop[tikv] table:t, index:i(c1) range:[0,1024], keep order:true", " └─Selection(Probe) 4.00 cop[tikv] in(test.t.c2, 2, 4, 6, 8)", @@ -674,7 +689,7 @@ func TestCopPaging(t *testing.T) { for i := 0; i < 10; i++ { tk.MustQuery("explain format='brief' select * from t force index(i) where mod(id, 2) > 0 and id <= 1024 and c1 >= 0 and c1 <= 1024 and c2 in (2, 4, 6, 8) order by c1 limit 960").Check(testkit.Rows( "Limit 3.20 root offset:0, count:960", - "└─IndexLookUp 3.20 root paging:true", + "└─IndexLookUp 3.20 root ", " ├─Selection(Build) 819.20 cop[tikv] gt(mod(test.t.id, 2), 0), le(test.t.id, 1024)", " │ └─IndexRangeScan 1024.00 cop[tikv] table:t, index:i(c1) range:[0,1024], keep order:true", " └─Selection(Probe) 3.20 cop[tikv] in(test.t.c2, 2, 4, 6, 8)", diff --git a/planner/core/plan_to_pb.go b/planner/core/plan_to_pb.go index 63faa537fad32..7f93dd440b3fe 100644 --- a/planner/core/plan_to_pb.go +++ b/planner/core/plan_to_pb.go @@ -47,7 +47,11 @@ func (p *PhysicalHashAgg) ToPB(ctx sessionctx.Context, storeType kv.StoreType) ( GroupBy: groupByExprs, } for _, aggFunc := range p.AggFuncs { - aggExec.AggFunc = append(aggExec.AggFunc, aggregation.AggFuncToPBExpr(ctx, client, aggFunc)) + agg, err := aggregation.AggFuncToPBExpr(ctx, client, aggFunc, storeType) + if err != nil { + return nil, errors.Trace(err) + } + aggExec.AggFunc = append(aggExec.AggFunc, agg) } executorID := "" if storeType == kv.TiFlash { @@ -73,7 +77,11 @@ func (p *PhysicalStreamAgg) ToPB(ctx sessionctx.Context, storeType kv.StoreType) GroupBy: groupByExprs, } for _, aggFunc := range p.AggFuncs { - aggExec.AggFunc = append(aggExec.AggFunc, aggregation.AggFuncToPBExpr(ctx, client, aggFunc)) + agg, err := aggregation.AggFuncToPBExpr(ctx, client, aggFunc, storeType) + if err != nil { + return nil, errors.Trace(err) + } + aggExec.AggFunc = append(aggExec.AggFunc, agg) } executorID := "" if storeType == kv.TiFlash { @@ -258,13 +266,19 @@ func (e *PhysicalExchangeSender) ToPB(ctx sessionctx.Context, storeType kv.Store hashColTypes := make([]*tipb.FieldType, 0, len(e.HashCols)) for _, col := range e.HashCols { hashCols = append(hashCols, col.Col) - tp := expression.ToPBFieldType(col.Col.RetType) + tp, err := expression.ToPBFieldTypeWithCheck(col.Col.RetType, storeType) + if err != nil { + return nil, errors.Trace(err) + } tp.Collate = col.CollateID hashColTypes = append(hashColTypes, tp) } allFieldTypes := make([]*tipb.FieldType, 0, len(e.Schema().Columns)) for _, column := range e.Schema().Columns { - pbType := expression.ToPBFieldType(column.RetType) + pbType, err := expression.ToPBFieldTypeWithCheck(column.RetType, storeType) + if err != nil { + return nil, errors.Trace(err) + } allFieldTypes = append(allFieldTypes, pbType) } hashColPb, err := expression.ExpressionsToPBList(ctx.GetSessionVars().StmtCtx, hashCols, ctx.GetClient()) @@ -301,7 +315,10 @@ func (e *PhysicalExchangeReceiver) ToPB(ctx sessionctx.Context, storeType kv.Sto fieldTypes := make([]*tipb.FieldType, 0, len(e.Schema().Columns)) for _, column := range e.Schema().Columns { - pbType := expression.ToPBFieldType(column.RetType) + pbType, err := expression.ToPBFieldTypeWithCheck(column.RetType, kv.TiFlash) + if err != nil { + return nil, errors.Trace(err) + } fieldTypes = append(fieldTypes, pbType) } ecExec := &tipb.ExchangeReceiver{ @@ -435,8 +452,12 @@ func (p *PhysicalHashJoin) ToPB(ctx sessionctx.Context, storeType kv.StoreType) chs, coll := equalCondition.CharsetAndCollation() retType.SetCharset(chs) retType.SetCollate(coll) - probeFiledTypes = append(probeFiledTypes, expression.ToPBFieldType(retType)) - buildFiledTypes = append(buildFiledTypes, expression.ToPBFieldType(retType)) + ty, err := expression.ToPBFieldTypeWithCheck(retType, storeType) + if err != nil { + return nil, errors.Trace(err) + } + probeFiledTypes = append(probeFiledTypes, ty) + buildFiledTypes = append(buildFiledTypes, ty) } join := &tipb.Join{ JoinType: pbJoinType, @@ -575,15 +596,3 @@ func SetPBColumnsDefaultValue(ctx sessionctx.Context, pbColumns []*tipb.ColumnIn } return nil } - -// SupportStreaming returns true if a pushed down operation supports using coprocessor streaming API. -// Note that this function handle pushed down physical plan only! It's called in constructDAGReq. -// Some plans are difficult (if possible) to implement streaming, and some are pointless to do so. -// TODO: Support more kinds of physical plan. -func SupportStreaming(p PhysicalPlan) bool { - switch p.(type) { - case *PhysicalIndexScan, *PhysicalSelection, *PhysicalTableScan: - return true - } - return false -} diff --git a/planner/core/planbuilder.go b/planner/core/planbuilder.go index cc77ebbab918a..8f26ccd6c9ac9 100644 --- a/planner/core/planbuilder.go +++ b/planner/core/planbuilder.go @@ -717,7 +717,7 @@ func (b *PlanBuilder) Build(ctx context.Context, node ast.Node) (Plan, error) { *ast.BeginStmt, *ast.CommitStmt, *ast.SavepointStmt, *ast.ReleaseSavepointStmt, *ast.RollbackStmt, *ast.CreateUserStmt, *ast.SetPwdStmt, *ast.AlterInstanceStmt, *ast.GrantStmt, *ast.DropUserStmt, *ast.AlterUserStmt, *ast.RevokeStmt, *ast.KillStmt, *ast.DropStatsStmt, *ast.GrantRoleStmt, *ast.RevokeRoleStmt, *ast.SetRoleStmt, *ast.SetDefaultRoleStmt, *ast.ShutdownStmt, - *ast.RenameUserStmt, *ast.NonTransactionalDeleteStmt: + *ast.RenameUserStmt, *ast.NonTransactionalDeleteStmt, *ast.SetSessionStatesStmt: return b.buildSimple(ctx, node.(ast.StmtNode)) case ast.DDLNode: return b.buildDDL(ctx, x) @@ -2769,7 +2769,7 @@ func buildShowDDLJobsFields() (*expression.Schema, types.NameSlice) { } func buildTableRegionsSchema() (*expression.Schema, types.NameSlice) { - schema := newColumnsWithNames(11) + schema := newColumnsWithNames(13) schema.Append(buildColumnWithName("", "REGION_ID", mysql.TypeLonglong, 4)) schema.Append(buildColumnWithName("", "START_KEY", mysql.TypeVarchar, 64)) schema.Append(buildColumnWithName("", "END_KEY", mysql.TypeVarchar, 64)) @@ -2781,6 +2781,8 @@ func buildTableRegionsSchema() (*expression.Schema, types.NameSlice) { schema.Append(buildColumnWithName("", "READ_BYTES", mysql.TypeLonglong, 4)) schema.Append(buildColumnWithName("", "APPROXIMATE_SIZE(MB)", mysql.TypeLonglong, 4)) schema.Append(buildColumnWithName("", "APPROXIMATE_KEYS", mysql.TypeLonglong, 4)) + schema.Append(buildColumnWithName("", "SCHEDULING_CONSTRAINTS", mysql.TypeVarchar, 256)) + schema.Append(buildColumnWithName("", "SCHEDULING_STATE", mysql.TypeVarchar, 16)) return schema.col2Schema(), schema.names } @@ -2986,13 +2988,18 @@ func (b *PlanBuilder) buildShow(ctx context.Context, show *ast.ShowStmt) (Plan, p.setSchemaAndNames(buildShowNextRowID()) b.visitInfo = appendVisitInfo(b.visitInfo, mysql.SelectPriv, show.Table.Schema.L, show.Table.Name.L, "", ErrPrivilegeCheckFail) return p, nil - case ast.ShowStatsBuckets, ast.ShowStatsHistograms, ast.ShowStatsMeta, ast.ShowStatsExtended, ast.ShowStatsHealthy, ast.ShowStatsTopN, ast.ShowHistogramsInFlight, ast.ShowColumnStatsUsage: - user := b.ctx.GetSessionVars().User + case ast.ShowStatsExtended, ast.ShowStatsHealthy, ast.ShowStatsTopN, ast.ShowHistogramsInFlight, ast.ShowColumnStatsUsage: var err error - if user != nil { + if user := b.ctx.GetSessionVars().User; user != nil { err = ErrDBaccessDenied.GenWithStackByArgs(user.AuthUsername, user.AuthHostname, mysql.SystemDB) } b.visitInfo = appendVisitInfo(b.visitInfo, mysql.SelectPriv, mysql.SystemDB, "", "", err) + case ast.ShowStatsBuckets, ast.ShowStatsHistograms, ast.ShowStatsMeta: + var err error + if user := b.ctx.GetSessionVars().User; user != nil { + err = ErrTableaccessDenied.GenWithStackByArgs("SHOW", user.AuthUsername, user.AuthHostname, show.Table.Name.L) + } + b.visitInfo = appendVisitInfo(b.visitInfo, mysql.SelectPriv, show.Table.Schema.L, show.Table.Name.L, "", err) case ast.ShowRegions: tableInfo, err := b.is.TableByName(show.Table.Schema, show.Table.Name) if err != nil { @@ -3234,6 +3241,7 @@ func collectVisitInfoFromGrantStmt(sctx sessionctx.Context, vi []visitInfo, stmt } var nonDynamicPrivilege bool var allPrivs []mysql.PrivilegeType + authErr := genAuthErrForGrantStmt(sctx, dbName) for _, item := range stmt.Privs { if item.Priv == mysql.ExtendedPriv { // The observed MySQL behavior is that the error is: @@ -3263,20 +3271,37 @@ func collectVisitInfoFromGrantStmt(sctx sessionctx.Context, vi []visitInfo, stmt } break } - vi = appendVisitInfo(vi, item.Priv, dbName, tableName, "", nil) + vi = appendVisitInfo(vi, item.Priv, dbName, tableName, "", authErr) } for _, priv := range allPrivs { - vi = appendVisitInfo(vi, priv, dbName, tableName, "", nil) + vi = appendVisitInfo(vi, priv, dbName, tableName, "", authErr) } if nonDynamicPrivilege { // Dynamic privileges use their own GRANT OPTION. If there were any non-dynamic privilege requests, // we need to attach the "GLOBAL" version of the GRANT OPTION. - vi = appendVisitInfo(vi, mysql.GrantPriv, dbName, tableName, "", nil) + vi = appendVisitInfo(vi, mysql.GrantPriv, dbName, tableName, "", authErr) } return vi, nil } +func genAuthErrForGrantStmt(sctx sessionctx.Context, dbName string) error { + if !strings.EqualFold(dbName, variable.PerformanceSchema) { + return nil + } + user := sctx.GetSessionVars().User + if user == nil { + return nil + } + u := user.Username + h := user.Hostname + if len(user.AuthUsername) > 0 && len(user.AuthHostname) > 0 { + u = user.AuthUsername + h = user.AuthHostname + } + return ErrDBaccessDenied.FastGenByArgs(u, h, dbName) +} + func (b *PlanBuilder) getDefaultValue(col *table.Column) (*expression.Constant, error) { var ( value types.Datum @@ -3391,7 +3416,7 @@ func (b *PlanBuilder) buildInsert(ctx context.Context, insert *ast.InsertStmt) ( user := b.ctx.GetSessionVars().User var authErr error if user != nil { - authErr = ErrTableaccessDenied.GenWithStackByArgs("INSERT", user.AuthUsername, user.AuthHostname, tableInfo.Name.L) + authErr = ErrTableaccessDenied.FastGenByArgs("INSERT", user.AuthUsername, user.AuthHostname, tableInfo.Name.L) } b.visitInfo = appendVisitInfo(b.visitInfo, mysql.InsertPriv, tn.DBInfo.Name.L, @@ -3408,7 +3433,7 @@ func (b *PlanBuilder) buildInsert(ctx context.Context, insert *ast.InsertStmt) ( if extraPriv != 0 { if user != nil { cmd := strings.ToUpper(mysql.Priv2Str[extraPriv]) - authErr = ErrTableaccessDenied.GenWithStackByArgs(cmd, user.AuthUsername, user.AuthHostname, tableInfo.Name.L) + authErr = ErrTableaccessDenied.FastGenByArgs(cmd, user.AuthUsername, user.AuthHostname, tableInfo.Name.L) } b.visitInfo = appendVisitInfo(b.visitInfo, extraPriv, tn.DBInfo.Name.L, tableInfo.Name.L, "", authErr) } @@ -4763,6 +4788,9 @@ func buildShowSchema(s *ast.ShowStmt, isView bool, isSequence bool) (schema *exp case ast.ShowPlacement, ast.ShowPlacementForDatabase, ast.ShowPlacementForTable, ast.ShowPlacementForPartition: names = []string{"Target", "Placement", "Scheduling_State"} ftypes = []byte{mysql.TypeVarchar, mysql.TypeVarchar, mysql.TypeVarchar} + case ast.ShowSessionStates: + names = []string{"Session_states", "Session_token"} + ftypes = []byte{mysql.TypeJSON, mysql.TypeJSON} } schema = expression.NewSchema(make([]*expression.Column, 0, len(names))...) diff --git a/planner/core/point_get_plan.go b/planner/core/point_get_plan.go index afb34814f7196..01b6337ebc81f 100644 --- a/planner/core/point_get_plan.go +++ b/planner/core/point_get_plan.go @@ -270,6 +270,7 @@ type BatchPointGetPlan struct { dbName string TblInfo *model.TableInfo IndexInfo *model.IndexInfo + PartitionInfos []*model.PartitionDefinition Handles []kv.Handle HandleType *types.FieldType HandleParams []*expression.Constant // record all Parameters for Plan-Cache @@ -345,11 +346,25 @@ func (p *BatchPointGetPlan) ExplainNormalizedInfo() string { } // AccessObject implements physicalScan interface. -func (p *BatchPointGetPlan) AccessObject(_ bool) string { +func (p *BatchPointGetPlan) AccessObject(normalized bool) string { var buffer strings.Builder tblName := p.TblInfo.Name.O buffer.WriteString("table:") buffer.WriteString(tblName) + if p.PartitionInfos != nil { + if normalized { + buffer.WriteString(", partition:?") + } else { + for i, partitionInfo := range p.PartitionInfos { + if i == 0 { + buffer.WriteString(", partition:") + } else { + buffer.WriteString(",") + } + buffer.WriteString(partitionInfo.Name.O) + } + } + } if p.IndexInfo != nil { if p.IndexInfo.Primary && p.TblInfo.IsCommonHandle { buffer.WriteString(", clustered index:" + p.IndexInfo.Name.O + "(") @@ -565,9 +580,13 @@ func newBatchPointGetPlan( return nil } } + if handleCol != nil { + // condition key of where is primary key var handles = make([]kv.Handle, len(patternInExpr.List)) var handleParams = make([]*expression.Constant, len(patternInExpr.List)) + var pos2PartitionDefinition = make(map[int]*model.PartitionDefinition) + partitionInfos := make([]*model.PartitionDefinition, 0, len(patternInExpr.List)) for i, item := range patternInExpr.List { // SELECT * FROM t WHERE (key) in ((1), (2)) if p, ok := item.(*ast.ParenthesesExpr); ok { @@ -600,13 +619,39 @@ func newBatchPointGetPlan( } handles[i] = kv.IntHandle(intDatum.GetInt64()) handleParams[i] = con + pairs := []nameValuePair{{colName: handleCol.Name.L, colFieldType: item.GetType(), value: *intDatum, con: con}} + if tbl.GetPartitionInfo() != nil { + tmpPartitionDefinition, _, pos, isTableDual := getPartitionInfo(ctx, tbl, pairs) + if isTableDual { + return nil + } + if tmpPartitionDefinition != nil { + pos2PartitionDefinition[pos] = tmpPartitionDefinition + } + } + } + + posArr := make([]int, len(pos2PartitionDefinition)) + i := 0 + for pos := range pos2PartitionDefinition { + posArr[i] = pos + i++ + } + sort.Ints(posArr) + for _, pos := range posArr { + partitionInfos = append(partitionInfos, pos2PartitionDefinition[pos]) } + if len(partitionInfos) == 0 { + partitionInfos = nil + } + return BatchPointGetPlan{ - TblInfo: tbl, - Handles: handles, - HandleParams: handleParams, - HandleType: &handleCol.FieldType, - PartitionExpr: partitionExpr, + TblInfo: tbl, + Handles: handles, + HandleParams: handleParams, + HandleType: &handleCol.FieldType, + PartitionExpr: partitionExpr, + PartitionInfos: partitionInfos, }.Init(ctx, statsInfo, schema, names, 0) } @@ -661,14 +706,18 @@ func newBatchPointGetPlan( indexValues := make([][]types.Datum, len(patternInExpr.List)) indexValueParams := make([][]*expression.Constant, len(patternInExpr.List)) + partitionInfos := make([]*model.PartitionDefinition, 0, len(patternInExpr.List)) + var pos2PartitionDefinition = make(map[int]*model.PartitionDefinition) + var indexTypes []*types.FieldType for i, item := range patternInExpr.List { - // SELECT * FROM t WHERE (key) in ((1), (2)) + // SELECT * FROM t WHERE (key) in ((1), (2)) or SELECT * FROM t WHERE (key1, key2) in ((1, 1), (2, 2)) if p, ok := item.(*ast.ParenthesesExpr); ok { item = p.Expr } var values []types.Datum var valuesParams []*expression.Constant + var pairs []nameValuePair switch x := item.(type) { case *ast.RowExpr: // The `len(values) == len(valuesParams)` should be satisfied in this mode @@ -676,6 +725,7 @@ func newBatchPointGetPlan( return nil } values = make([]types.Datum, len(x.Values)) + pairs = make([]nameValuePair, 0, len(x.Values)) valuesParams = make([]*expression.Constant, len(x.Values)) initTypes := false if indexTypes == nil { // only init once @@ -683,6 +733,7 @@ func newBatchPointGetPlan( initTypes = true } for index, inner := range x.Values { + // permutations is used to match column and value. permIndex := permutations[index] switch innerX := inner.(type) { case *driver.ValueExpr: @@ -691,6 +742,7 @@ func newBatchPointGetPlan( return nil } values[permIndex] = innerX.Datum + pairs = append(pairs, nameValuePair{colName: whereColNames[index], value: innerX.Datum}) case *driver.ParamMarkerExpr: con, err := expression.ParamMarkerExpression(ctx, innerX, true) if err != nil { @@ -709,6 +761,7 @@ func newBatchPointGetPlan( if initTypes { indexTypes[permIndex] = &colInfos[index].FieldType } + pairs = append(pairs, nameValuePair{colName: whereColNames[index], value: innerX.Datum}) default: return nil } @@ -724,6 +777,8 @@ func newBatchPointGetPlan( return nil } values = []types.Datum{*dval} + valuesParams = []*expression.Constant{nil} + pairs = append(pairs, nameValuePair{colName: whereColNames[0], value: *dval}) case *driver.ParamMarkerExpr: if len(whereColNames) != 1 { return nil @@ -745,12 +800,39 @@ func newBatchPointGetPlan( if indexTypes == nil { // only init once indexTypes = []*types.FieldType{&colInfos[0].FieldType} } + pairs = append(pairs, nameValuePair{colName: whereColNames[0], value: *dval}) + default: return nil } indexValues[i] = values indexValueParams[i] = valuesParams + if tbl.GetPartitionInfo() != nil { + tmpPartitionDefinition, _, pos, isTableDual := getPartitionInfo(ctx, tbl, pairs) + if isTableDual { + return nil + } + if tmpPartitionDefinition != nil { + pos2PartitionDefinition[pos] = tmpPartitionDefinition + } + } + + } + + posArr := make([]int, len(pos2PartitionDefinition)) + i := 0 + for pos := range pos2PartitionDefinition { + posArr[i] = pos + i++ } + sort.Ints(posArr) + for _, pos := range posArr { + partitionInfos = append(partitionInfos, pos2PartitionDefinition[pos]) + } + if len(partitionInfos) == 0 { + partitionInfos = nil + } + return BatchPointGetPlan{ TblInfo: tbl, IndexInfo: matchIdxInfo, @@ -759,6 +841,7 @@ func newBatchPointGetPlan( IndexColTypes: indexTypes, PartitionColPos: pos, PartitionExpr: partitionExpr, + PartitionInfos: partitionInfos, }.Init(ctx, statsInfo, schema, names, 0) } @@ -768,6 +851,8 @@ func tryWhereIn2BatchPointGet(ctx sessionctx.Context, selStmt *ast.SelectStmt) * len(selStmt.WindowSpecs) > 0 { return nil } + // `expr1 in (1, 2) and expr2 in (1, 2)` isn't PatternInExpr, so it can't use tryWhereIn2BatchPointGet. + // (expr1, expr2) in ((1, 1), (2, 2)) can hit it. in, ok := selStmt.Where.(*ast.PatternInExpr) if !ok || in.Not || len(in.List) < 1 { return nil @@ -907,7 +992,7 @@ func tryPointGetPlan(ctx sessionctx.Context, selStmt *ast.SelectStmt, check bool var partitionInfo *model.PartitionDefinition var pos int if pi != nil { - partitionInfo, pos, isTableDual = getPartitionInfo(ctx, tbl, pairs) + partitionInfo, pos, _, isTableDual = getPartitionInfo(ctx, tbl, pairs) if isTableDual { p := newPointGetPlan(ctx, tblName.Schema.O, schema, tbl, names) p.IsTableDual = true @@ -1583,15 +1668,15 @@ func buildHandleCols(ctx sessionctx.Context, tbl *model.TableInfo, schema *expre return &IntHandleCols{col: handleCol} } -func getPartitionInfo(ctx sessionctx.Context, tbl *model.TableInfo, pairs []nameValuePair) (*model.PartitionDefinition, int, bool) { +func getPartitionInfo(ctx sessionctx.Context, tbl *model.TableInfo, pairs []nameValuePair) (*model.PartitionDefinition, int, int, bool) { partitionExpr := getPartitionExpr(ctx, tbl) if partitionExpr == nil { - return nil, 0, false + return nil, 0, 0, false } pi := tbl.GetPartitionInfo() if pi == nil { - return nil, 0, false + return nil, 0, 0, false } switch pi.Type { @@ -1599,19 +1684,19 @@ func getPartitionInfo(ctx sessionctx.Context, tbl *model.TableInfo, pairs []name expr := partitionExpr.OrigExpr col, ok := expr.(*ast.ColumnNameExpr) if !ok { - return nil, 0, false + return nil, 0, 0, false } partitionColName := col.Name if partitionColName == nil { - return nil, 0, false + return nil, 0, 0, false } for i, pair := range pairs { if partitionColName.Name.L == pair.colName { val := pair.value.GetInt64() pos := mathutil.Abs(val % int64(pi.Num)) - return &pi.Definitions[pos], i, false + return &pi.Definitions[pos], i, int(pos), false } } case model.PartitionTypeRange: @@ -1629,9 +1714,9 @@ func getPartitionInfo(ctx sessionctx.Context, tbl *model.TableInfo, pairs []name return ranges.Compare(i, val, unsigned) > 0 }) if pos >= 0 && pos < length { - return &pi.Definitions[pos], i, false + return &pi.Definitions[pos], i, pos, false } - return nil, 0, true + return nil, 0, 0, true } } } @@ -1648,15 +1733,15 @@ func getPartitionInfo(ctx sessionctx.Context, tbl *model.TableInfo, pairs []name isNull := false pos := partitionExpr.ForListPruning.LocatePartition(val, isNull) if pos >= 0 { - return &pi.Definitions[pos], i, false + return &pi.Definitions[pos], i, pos, false } - return nil, 0, true + return nil, 0, 0, true } } } } } - return nil, 0, false + return nil, 0, 0, false } func findPartitionIdx(idxInfo *model.IndexInfo, pos int, pairs []nameValuePair) int { diff --git a/planner/core/point_get_plan_test.go b/planner/core/point_get_plan_test.go index d39e95b767ab8..508e21004476d 100644 --- a/planner/core/point_get_plan_test.go +++ b/planner/core/point_get_plan_test.go @@ -662,18 +662,18 @@ func TestBatchPointGetPartition(t *testing.T) { tk.MustExec("create table t(a int primary key, b int) PARTITION BY HASH(a) PARTITIONS 4") tk.MustExec("insert into t values (1, 1), (2, 2), (3, 3), (4, 4)") tk.MustQuery("explain format = 'brief' select * from t where a in (1, 2, 3, 4)").Check(testkit.Rows( - "Batch_Point_Get 4.00 root table:t handle:[1 2 3 4], keep order:false, desc:false", + "Batch_Point_Get 4.00 root table:t, partition:p0,p1,p2,p3 handle:[1 2 3 4], keep order:false, desc:false", )) tk.MustQuery("select * from t where a in (1, 2, 3, 4)").Check(testkit.Rows("1 1", "2 2", "3 3", "4 4")) tk.MustQuery("explain format = 'brief' update t set b = b + 1 where a in (1, 2, 3, 4)").Check(testkit.Rows( - "Update N/A root N/A]\n[└─Batch_Point_Get 4.00 root table:t handle:[1 2 3 4], keep order:false, desc:false", + "Update N/A root N/A]\n[└─Batch_Point_Get 4.00 root table:t, partition:p0,p1,p2,p3 handle:[1 2 3 4], keep order:false, desc:false", )) tk.MustExec("update t set b = b + 1 where a in (1, 2, 3, 4)") tk.MustQuery("select * from t where a in (1, 2, 3, 4)").Check(testkit.Rows("1 2", "2 3", "3 4", "4 5")) tk.MustQuery("explain format = 'brief' delete from t where a in (1, 2, 3, 4)").Check(testkit.Rows( - "Delete N/A root N/A]\n[└─Batch_Point_Get 4.00 root table:t handle:[1 2 3 4], keep order:false, desc:false", + "Delete N/A root N/A]\n[└─Batch_Point_Get 4.00 root table:t, partition:p0,p1,p2,p3 handle:[1 2 3 4], keep order:false, desc:false", )) tk.MustExec("delete from t where a in (1, 2, 3, 4)") tk.MustQuery("select * from t where a in (1, 2, 3, 4)").Check(testkit.Rows()) @@ -681,26 +681,88 @@ func TestBatchPointGetPartition(t *testing.T) { tk.MustExec("drop table t") tk.MustExec("create table t(a int, b int, c int, primary key (a, b)) PARTITION BY HASH(a) PARTITIONS 4") tk.MustExec("insert into t values (1, 1, 1), (2, 2, 2), (3, 3, 3), (4, 4, 4)") + tk.MustQuery("explain format = 'brief' select * from t where a = 1 and b = 1").Check(testkit.Rows("Point_Get 1.00 root table:t, partition:p1, clustered index:PRIMARY(a, b) ")) + tk.MustQuery("explain format = 'brief' select * from t where (a, b) in ((1, 1), (2, 2), (3, 3), (4, 4))").Check(testkit.Rows( - "Batch_Point_Get 4.00 root table:t, clustered index:PRIMARY(a, b) keep order:false, desc:false", + "Batch_Point_Get 4.00 root table:t, partition:p0,p1,p2,p3, clustered index:PRIMARY(a, b) keep order:false, desc:false", )) tk.MustQuery("select * from t where (a, b) in ((1, 1), (2, 2), (3, 3), (4, 4))"). Check(testkit.Rows("1 1 1", "2 2 2", "3 3 3", "4 4 4")) tk.MustQuery("explain format = 'brief' update t set c = c + 1 where (a,b) in ((1,1),(2,2),(3,3),(4,4))").Check(testkit.Rows( - "Update N/A root N/A]\n[└─Batch_Point_Get 4.00 root table:t, clustered index:PRIMARY(a, b) keep order:false, desc:false", + "Update N/A root N/A]\n[└─Batch_Point_Get 4.00 root table:t, partition:p0,p1,p2,p3, clustered index:PRIMARY(a, b) keep order:false, desc:false", )) tk.MustExec("update t set c = c + 1 where (a,b) in ((1,1),(2,2),(3,3),(4,4))") tk.MustQuery("select * from t where (a, b) in ((1, 1), (2, 2), (3, 3), (4, 4))").Sort(). Check(testkit.Rows("1 1 2", "2 2 3", "3 3 4", "4 4 5")) tk.MustQuery("explain format = 'brief' delete from t where (a,b) in ((1,1),(2,2),(3,3),(4,4))").Check(testkit.Rows( - "Delete N/A root N/A]\n[└─Batch_Point_Get 4.00 root table:t, clustered index:PRIMARY(a, b) keep order:false, desc:false", + "Delete N/A root N/A]\n[└─Batch_Point_Get 4.00 root table:t, partition:p0,p1,p2,p3, clustered index:PRIMARY(a, b) keep order:false, desc:false", )) tk.MustExec("delete from t where (a,b) in ((1,1),(2,2),(3,3),(4,4))") tk.MustQuery("select * from t where (a, b) in ((1, 1), (2, 2), (3, 3), (4, 4))").Check(testkit.Rows()) } +func TestBatchPointGetPartitionForAccessObject(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + + tk := testkit.NewTestKit(t, store) + tk.MustExec("set @@tidb_partition_prune_mode = 'dynamic'") + tk.MustExec("use test") + tk.Session().GetSessionVars().EnableClusteredIndex = variable.ClusteredIndexDefModeOn + tk.MustExec("drop table if exists t") + tk.MustExec("create table t(a int, b int, UNIQUE KEY (b)) PARTITION BY HASH(b) PARTITIONS 4") + tk.MustExec("insert into t values(1, 1), (2, 2), (3, 3), (4, 4)") + tk.MustQuery("explain select * from t where b in (1, 2)").Check(testkit.Rows( + "Batch_Point_Get_1 2.00 root table:t, partition:p1,p2, index:b(b) keep order:false, desc:false")) + tk.MustQuery("explain select * from t where b in (1, 2, 1)").Check(testkit.Rows( + "Batch_Point_Get_1 3.00 root table:t, partition:p1,p2, index:b(b) keep order:false, desc:false")) + + tk.MustExec("set @@session.tidb_enable_list_partition = ON") + tk.MustExec("drop table if exists t") + tk.MustExec("CREATE TABLE t (id int primary key, name_id int) PARTITION BY LIST(id) (" + + "partition p0 values IN (1, 2), " + + "partition p1 values IN (3, 4), " + + "partition p3 values IN (5))") + tk.MustExec("insert into t values(1, 1), (2, 2), (3, 3), (4, 4)") + tk.MustQuery("explain format='brief' select * from t where id in (1, 3)").Check(testkit.Rows( + "Batch_Point_Get 2.00 root table:t, partition:p0,p1 handle:[1 3], keep order:false, desc:false")) + + tk.MustExec("set @@session.tidb_enable_list_partition = ON") + tk.MustExec("drop table if exists t0") + tk.MustExec("CREATE TABLE t0 (id int primary key, name_id int) PARTITION BY LIST COLUMNS(id) (" + + "partition p0 values IN (1, 2), " + + "partition p1 values IN (3, 4), " + + "partition p3 values IN (5))") + tk.MustExec("insert into t0 values(1, 1), (2, 2), (3, 3), (4, 4)") + tk.MustQuery("explain format='brief' select * from t0 where id in (1, 3)").Check(testkit.Rows( + "TableReader 2.00 root partition:p0,p1 data:TableRangeScan]\n" + + "[└─TableRangeScan 2.00 cop[tikv] table:t0 range:[1,1], [3,3], keep order:false, stats:pseudo")) + + tk.MustExec("set @@session.tidb_enable_list_partition = ON") + tk.MustExec("drop table if exists t1") + tk.MustExec("CREATE TABLE t1 (id int, name_id int, unique key(id, name_id)) PARTITION BY LIST COLUMNS(id, name_id) (" + + "partition p0 values IN ((1, 1),(2, 2)), " + + "partition p1 values IN ((3, 3),(4, 4)), " + + "partition p3 values IN ((5, 5)))") + tk.MustExec("insert into t1 values(1, 1), (2, 2), (3, 3), (4, 4)") + tk.MustQuery("explain format='brief' select * from t1 where (id, name_id) in ((1, 1), (3, 3))").Check(testkit.Rows( + "IndexReader 2.00 root partition:p0,p1 index:IndexRangeScan]\n" + + "[└─IndexRangeScan 2.00 cop[tikv] table:t1, index:id(id, name_id) range:[1 1,1 1], [3 3,3 3], keep order:false, stats:pseudo")) + + tk.MustExec("set @@session.tidb_enable_list_partition = ON") + tk.MustExec("drop table if exists t2") + tk.MustExec("CREATE TABLE t2 (id int, name varchar(10), unique key(id, name)) PARTITION BY LIST COLUMNS(id, name) (" + + "partition p0 values IN ((1,'a'),(2,'b')), " + + "partition p1 values IN ((3,'c'),(4,'d')), " + + "partition p3 values IN ((5,'e')))") + tk.MustExec("insert into t2 values(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd')") + tk.MustQuery("explain format='brief' select * from t2 where (id, name) in ((1, 'a'), (3, 'c'))").Check(testkit.Rows( + "IndexReader 2.00 root partition:p0,p1 index:IndexRangeScan]\n" + + "[└─IndexRangeScan 2.00 cop[tikv] table:t2, index:id(id, name) range:[1 \"a\",1 \"a\"], [3 \"c\",3 \"c\"], keep order:false, stats:pseudo")) +} + func TestIssue19141(t *testing.T) { // For issue 19141, fix partition selection on batch point get. store, clean := testkit.CreateMockStore(t) diff --git a/planner/core/prepare_test.go b/planner/core/prepare_test.go index d97e2af9efa28..ca835c839b2ce 100644 --- a/planner/core/prepare_test.go +++ b/planner/core/prepare_test.go @@ -2988,20 +2988,21 @@ func verifyCache(ctx context.Context, t *testing.T, tk1 *testkit.TestKit, tk2 *t tk1.MustQuery("select @@last_plan_from_cache").Check(testkit.Rows("0")) // This time, the cache will be hit. - _, err := tk1.Session().ExecutePreparedStmt(ctx, stmtID, []types.Datum{}) - require.Nil(t, err) + rs, err := tk1.Session().ExecutePreparedStmt(ctx, stmtID, []types.Datum{}) + require.NoError(t, err) + require.NoError(t, rs.Close()) tk1.MustQuery("select @@last_plan_from_cache").Check(testkit.Rows("1")) tk1.MustExec("execute s") tk1.MustQuery("select @@last_plan_from_cache").Check(testkit.Rows("1")) // Change infoSchema version which will make the plan cache invalid in the next execute tk2.MustExec("alter table t1 drop column c") - tk1.MustExec("execute s") tk1.MustQuery("select @@last_plan_from_cache").Check(testkit.Rows("0")) // Now the plan cache will be valid - _, err = tk1.Session().ExecutePreparedStmt(ctx, stmtID, []types.Datum{}) - require.Nil(t, err) + rs, err = tk1.Session().ExecutePreparedStmt(ctx, stmtID, []types.Datum{}) + require.NoError(t, err) + require.NoError(t, rs.Close()) tk1.MustQuery("select @@last_plan_from_cache").Check(testkit.Rows("1")) } diff --git a/planner/core/preprocess.go b/planner/core/preprocess.go index 94fec10465964..5324eaf4de769 100644 --- a/planner/core/preprocess.go +++ b/planner/core/preprocess.go @@ -38,7 +38,6 @@ import ( "github.com/pingcap/tidb/sessionctx" "github.com/pingcap/tidb/sessionctx/variable" "github.com/pingcap/tidb/sessiontxn" - "github.com/pingcap/tidb/sessiontxn/legacy" "github.com/pingcap/tidb/sessiontxn/staleread" "github.com/pingcap/tidb/table" "github.com/pingcap/tidb/table/temptable" @@ -124,9 +123,6 @@ func Preprocess(ctx sessionctx.Context, node ast.Node, preprocessOpt ...Preproce node.Accept(&v) // InfoSchema must be non-nil after preprocessing v.ensureInfoSchema() - - v.initTxnContextProviderIfNecessary(node) - return errors.Trace(v.err) } @@ -1689,22 +1685,10 @@ func (p *preprocessor) ensureInfoSchema() infoschema.InfoSchema { return p.InfoSchema } - p.InfoSchema = p.ctx.GetInfoSchema().(infoschema.InfoSchema) + p.InfoSchema = sessiontxn.GetTxnManager(p.ctx).GetTxnInfoSchema() return p.InfoSchema } -func (p *preprocessor) initTxnContextProviderIfNecessary(node ast.Node) { - if p.err != nil || p.flag&initTxnContextProvider == 0 { - return - } - - if provider, ok := sessiontxn.GetTxnManager(p.ctx).GetContextProvider().(*legacy.SimpleTxnContextProvider); ok { - // When the current provider is `legacy.SimpleTxnContextProvider` it should to keep the logic equals to the old implement. - // After refactoring, the `legacy.SimpleTxnContextProvider` will be removed, and this code will be removed too. - provider.InfoSchema = p.ensureInfoSchema() - } -} - func (p *preprocessor) hasAutoConvertWarning(colDef *ast.ColumnDef) bool { sessVars := p.ctx.GetSessionVars() if !sessVars.SQLMode.HasStrictMode() && colDef.Tp.GetType() == mysql.TypeVarchar { diff --git a/planner/core/rule_column_pruning.go b/planner/core/rule_column_pruning.go index 5dc6506f3d2b3..b8df243bd2299 100644 --- a/planner/core/rule_column_pruning.go +++ b/planner/core/rule_column_pruning.go @@ -115,6 +115,7 @@ func (la *LogicalAggregation) PruneColumns(parentUsedCols []*expression.Column, } appendColumnPruneTraceStep(la, prunedColumns, opt) appendFunctionPruneTraceStep(la, prunedFunctions, opt) + //nolint: prealloc var selfUsedCols []*expression.Column for _, aggrFunc := range la.AggFuncs { selfUsedCols = expression.ExtractColumnsFromExpressions(selfUsedCols, aggrFunc.Args, nil) diff --git a/planner/core/rule_join_reorder.go b/planner/core/rule_join_reorder.go index 9a0a507b6dca0..0294da8bac852 100644 --- a/planner/core/rule_join_reorder.go +++ b/planner/core/rule_join_reorder.go @@ -18,13 +18,13 @@ import ( "bytes" "context" "fmt" - "sort" "github.com/pingcap/tidb/expression" "github.com/pingcap/tidb/parser/ast" "github.com/pingcap/tidb/sessionctx" "github.com/pingcap/tidb/util/plancodec" "github.com/pingcap/tidb/util/tracing" + "golang.org/x/exp/slices" ) // extractJoinGroup extracts all the join nodes connected with continuous @@ -475,7 +475,7 @@ func appendJoinReorderTraceStep(tracer *joinReorderTrace, plan LogicalPlan, opt for join := range tracer.cost { joins = append(joins, join) } - sort.Strings(joins) + slices.Sort(joins) for i, join := range joins { if i > 0 { buffer.WriteString(",") @@ -563,6 +563,7 @@ func findRoots(t *tracing.PlanTrace) []*tracing.PlanTrace { if t.TP == plancodec.TypeJoin || t.TP == plancodec.TypeDataSource { return []*tracing.PlanTrace{t} } + //nolint: prealloc var r []*tracing.PlanTrace for _, child := range t.Children { r = append(r, findRoots(child)...) diff --git a/planner/core/rule_join_reorder_dp.go b/planner/core/rule_join_reorder_dp.go index c91d74e1b7c28..c7c0f45cf2274 100644 --- a/planner/core/rule_join_reorder_dp.go +++ b/planner/core/rule_join_reorder_dp.go @@ -212,10 +212,11 @@ func (s *joinReorderDPSolver) dpGraph(visitID2NodeID, nodeID2VisitID []int, join func (s *joinReorderDPSolver) nodesAreConnected(leftMask, rightMask uint, oldPos2NewPos []int, totalEqEdges []joinGroupEqEdge, totalNonEqEdges []joinGroupNonEqEdge) ([]joinGroupEqEdge, []expression.Expression) { - var ( // nolint: prealloc - usedEqEdges []joinGroupEqEdge - otherConds []expression.Expression - ) + //nolint: prealloc + var usedEqEdges []joinGroupEqEdge + //nolint: prealloc + var otherConds []expression.Expression + for _, edge := range totalEqEdges { lIdx := uint(oldPos2NewPos[edge.nodeIDs[0]]) rIdx := uint(oldPos2NewPos[edge.nodeIDs[1]]) diff --git a/planner/core/rule_partition_processor.go b/planner/core/rule_partition_processor.go index 57470061787ad..cfd7cfcb45b97 100644 --- a/planner/core/rule_partition_processor.go +++ b/planner/core/rule_partition_processor.go @@ -38,6 +38,7 @@ import ( "github.com/pingcap/tidb/util/plancodec" "github.com/pingcap/tidb/util/ranger" "github.com/pingcap/tidb/util/set" + "golang.org/x/exp/slices" ) // FullRange represent used all partitions. @@ -235,7 +236,7 @@ func (s *partitionProcessor) findUsedPartitions(ctx sessionctx.Context, tbl tabl or := partitionRangeOR{partitionRange{0, len(pi.Definitions)}} return s.convertToIntSlice(or, pi, partitionNames), nil, nil } - sort.Ints(used) + slices.Sort(used) ret := used[:0] for i := 0; i < len(used); i++ { if i == 0 || used[i] != used[i-1] { @@ -617,7 +618,7 @@ func (s *partitionProcessor) findUsedListPartitions(ctx sessionctx.Context, tbl for k := range used { ret = append(ret, k) } - sort.Ints(ret) + slices.Sort(ret) return ret, nil } @@ -824,26 +825,26 @@ func intersectionRange(start, end, newStart, newEnd int) (int, int) { } func (s *partitionProcessor) pruneRangePartition(ctx sessionctx.Context, pi *model.PartitionInfo, tbl table.PartitionedTable, conds []expression.Expression, - columns []*expression.Column, names types.NameSlice, condsToBePruned *[]expression.Expression) (partitionRangeOR, []expression.Expression, error) { + columns []*expression.Column, names types.NameSlice) (partitionRangeOR, error) { partExpr, err := tbl.(partitionTable).PartitionExpr() if err != nil { - return nil, nil, err + return nil, err } // Partition by range columns. if len(pi.Columns) > 0 { result, err := s.pruneRangeColumnsPartition(ctx, conds, pi, partExpr, columns, names) - return result, nil, err + return result, err } // Partition by range. col, fn, mono, err := makePartitionByFnCol(ctx, columns, names, pi.Expr) if err != nil { - return nil, nil, err + return nil, err } result := fullRange(len(pi.Definitions)) if col == nil { - return result, nil, nil + return result, nil } // Extract the partition column, if the column is not null, it's possible to prune. @@ -858,41 +859,14 @@ func (s *partitionProcessor) pruneRangePartition(ctx sessionctx.Context, pi *mod } result = partitionRangeForCNFExpr(ctx, conds, &pruner, result) - if condsToBePruned == nil { - return result, nil, nil - } - // remove useless predicates after pruning - newConds := make([]expression.Expression, 0, len(*condsToBePruned)) - for _, cond := range *condsToBePruned { - if dataForPrune, ok := pruner.extractDataForPrune(ctx, cond); ok { - switch dataForPrune.op { - case ast.EQ: - unsigned := mysql.HasUnsignedFlag(pruner.col.RetType.GetFlag()) - start, _ := pruneUseBinarySearch(pruner.lessThan, dataForPrune, unsigned) - // if the type of partition key is Int - if pk, ok := partExpr.Expr.(*expression.Column); ok && pk.RetType.EvalType() == types.ETInt { - // see if can be removed - // see issue #22079: https://github.com/pingcap/tidb/issues/22079 for details - if start > 0 && pruner.lessThan.data[start-1] == dataForPrune.c && (pruner.lessThan.data[start]-1) == dataForPrune.c { - continue - } - } - } - } - newConds = append(newConds, cond) - } - - return result, newConds, nil + return result, nil } func (s *partitionProcessor) processRangePartition(ds *DataSource, pi *model.PartitionInfo, opt *logicalOptimizeOp) (LogicalPlan, error) { - used, prunedConds, err := s.pruneRangePartition(ds.ctx, pi, ds.table.(table.PartitionedTable), ds.allConds, ds.TblCols, ds.names, &ds.pushedDownConds) + used, err := s.pruneRangePartition(ds.ctx, pi, ds.table.(table.PartitionedTable), ds.allConds, ds.TblCols, ds.names) if err != nil { return nil, err } - if prunedConds != nil { - ds.pushedDownConds = prunedConds - } return s.makeUnionAllChildren(ds, pi, used, opt) } @@ -1279,11 +1253,13 @@ func relaxOP(op string) string { return op } +// pruneUseBinarySearch returns the start and end of which partitions will match. +// If no match (i.e. value > last partition) the start partition will be the number of partition, not the first partition! func pruneUseBinarySearch(lessThan lessThanDataInt, data dataForPrune, unsigned bool) (start int, end int) { length := lessThan.length() switch data.op { case ast.EQ: - // col = 66, lessThan = [4 7 11 14 17] => [5, 6) + // col = 66, lessThan = [4 7 11 14 17] => [5, 5) // col = 14, lessThan = [4 7 11 14 17] => [4, 5) // col = 10, lessThan = [4 7 11 14 17] => [2, 3) // col = 3, lessThan = [4 7 11 14 17] => [0, 1) @@ -1589,6 +1565,8 @@ func (p *rangeColumnsPruner) partitionRangeForExpr(sctx sessionctx.Context, expr return start, end, true } +// pruneUseBinarySearch returns the start and end of which partitions will match. +// If no match (i.e. value > last partition) the start partition will be the number of partition, not the first partition! func (p *rangeColumnsPruner) pruneUseBinarySearch(sctx sessionctx.Context, op string, data *expression.Constant) (start int, end int) { var err error var isNull bool @@ -1646,8 +1624,8 @@ func appendMakeUnionAllChildrenTranceStep(ds *DataSource, usedMap map[int64]mode for _, def := range usedMap { used = append(used, def) } - sort.Slice(used, func(i, j int) bool { - return used[i].ID < used[j].ID + slices.SortFunc(used, func(i, j model.PartitionDefinition) bool { + return i.ID < j.ID }) if len(children) == 1 { action = func() string { diff --git a/planner/core/stats_test.go b/planner/core/stats_test.go index 2959aae593e08..a7fc3d60fa779 100644 --- a/planner/core/stats_test.go +++ b/planner/core/stats_test.go @@ -133,6 +133,9 @@ func TestNDVGroupCols(t *testing.T) { tk.MustExec("analyze table t1") tk.MustExec("analyze table t2") + // 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 diff --git a/planner/core/task.go b/planner/core/task.go index a60cbf2b7ebf0..26839811520c9 100644 --- a/planner/core/task.go +++ b/planner/core/task.go @@ -266,7 +266,7 @@ func (p *PhysicalIndexMergeJoin) attach2Task(tasks ...task) task { } t := &rootTask{ p: p, - cst: p.GetCost(outerTask.count(), innerTask.count(), outerTask.cost(), innerTask.cost()), + cst: p.GetCost(outerTask.count(), innerTask.count(), outerTask.cost(), innerTask.cost(), 0), } p.cost = t.cost() return t @@ -282,7 +282,7 @@ func (p *PhysicalIndexHashJoin) attach2Task(tasks ...task) task { } t := &rootTask{ p: p, - cst: p.GetCost(outerTask.count(), innerTask.count(), outerTask.cost(), innerTask.cost()), + cst: p.GetCost(outerTask.count(), innerTask.count(), outerTask.cost(), innerTask.cost(), 0), } p.cost = t.cost() return t @@ -298,7 +298,7 @@ func (p *PhysicalIndexJoin) attach2Task(tasks ...task) task { } t := &rootTask{ p: p, - cst: p.GetCost(outerTask.count(), innerTask.count(), outerTask.cost(), innerTask.cost()), + cst: p.GetCost(outerTask.count(), innerTask.count(), outerTask.cost(), innerTask.cost(), 0), } p.cost = t.cost() return t @@ -326,7 +326,7 @@ func (p *PhysicalHashJoin) attach2Task(tasks ...task) task { p.SetChildren(lTask.plan(), rTask.plan()) task := &rootTask{ p: p, - cst: lTask.cost() + rTask.cost() + p.GetCost(lTask.count(), rTask.count()), + cst: lTask.cost() + rTask.cost() + p.GetCost(lTask.count(), rTask.count(), false, 0), } p.cost = task.cost() return task @@ -379,9 +379,8 @@ func negotiateCommonType(lType, rType *types.FieldType) (*types.FieldType, bool, } lLen, rLen := lType.GetFlen()+lExtend, rType.GetFlen()+rExtend cLen := mathutil.Max(lLen, rLen) - cLen = mathutil.Min(65, cLen) - commonType.SetDecimal(cDec) - commonType.SetFlen(cLen) + commonType.SetDecimalUnderLimit(cDec) + commonType.SetFlenUnderLimit(cLen) } else if needConvert(lType, commonType) || needConvert(rType, commonType) { if mysql.IsIntegerType(commonType.GetType()) { // If the target type is int, both TiFlash and Mysql only support cast to Int64 @@ -548,7 +547,7 @@ func (p *PhysicalHashJoin) attach2TaskForMpp(tasks ...task) task { outerTask = rTask } task := &mppTask{ - cst: lCost + rCost + p.GetCost(lTask.count(), rTask.count()), + cst: lCost + rCost + p.GetCost(lTask.count(), rTask.count(), false, 0), p: p, partTp: outerTask.partTp, hashCols: outerTask.hashCols, @@ -579,7 +578,7 @@ func (p *PhysicalHashJoin) attach2TaskForTiFlash(tasks ...task) task { tblColHists: rTask.tblColHists, indexPlanFinished: true, tablePlan: p, - cst: lCost + rCost + p.GetCost(lTask.count(), rTask.count()), + cst: lCost + rCost + p.GetCost(lTask.count(), rTask.count(), false, 0), } p.cost = task.cst return task @@ -591,7 +590,7 @@ func (p *PhysicalMergeJoin) attach2Task(tasks ...task) task { p.SetChildren(lTask.plan(), rTask.plan()) t := &rootTask{ p: p, - cst: lTask.cost() + rTask.cost() + p.GetCost(lTask.count(), rTask.count()), + cst: lTask.cost() + rTask.cost() + p.GetCost(lTask.count(), rTask.count(), 0), } p.cost = t.cost() return t @@ -663,7 +662,7 @@ func calcPagingCost(ctx sessionctx.Context, indexPlan PhysicalPlan, expectCnt ui if sourceRows > indexRows { indexSelectivity = indexRows / sourceRows } - pagingCst := seekCnt*sessVars.GetSeekFactor(nil) + float64(expectCnt)*sessVars.CPUFactor + pagingCst := seekCnt*sessVars.GetSeekFactor(nil) + float64(expectCnt)*sessVars.GetCPUFactor() pagingCst *= indexSelectivity // we want the diff between idxCst and pagingCst here, @@ -1109,7 +1108,7 @@ func (p *PhysicalUnionAll) attach2Task(tasks ...task) task { p.SetChildren(childPlans...) sessVars := p.ctx.GetSessionVars() // Children of UnionExec are executed in parallel. - t.cst = childMaxCost + float64(1+len(tasks))*sessVars.ConcurrencyFactor + t.cst = childMaxCost + float64(1+len(tasks))*sessVars.GetConcurrencyFactor() p.cost = t.cost() return t } @@ -1119,13 +1118,13 @@ func (sel *PhysicalSelection) attach2Task(tasks ...task) task { if mppTask, _ := tasks[0].(*mppTask); mppTask != nil { // always push to mpp task. sc := sel.ctx.GetSessionVars().StmtCtx if expression.CanExprsPushDown(sc, sel.Conditions, sel.ctx.GetClient(), kv.TiFlash) { - mppTask.addCost(mppTask.count() * sessVars.CPUFactor) + mppTask.addCost(mppTask.count() * sessVars.GetCPUFactor()) sel.cost = mppTask.cost() return attachPlan2Task(sel, mppTask.copy()) } } t := tasks[0].convertToRootTask(sel.ctx) - t.addCost(t.count() * sessVars.CPUFactor) + t.addCost(t.count() * sessVars.GetCPUFactor()) sel.cost = t.cost() return attachPlan2Task(sel, t) } @@ -1166,7 +1165,7 @@ func CheckAggCanPushCop(sctx sessionctx.Context, aggFuncs []*aggregation.AggFunc break } } - pb := aggregation.AggFuncToPBExpr(sctx, client, aggFunc) + pb, _ := aggregation.AggFuncToPBExpr(sctx, client, aggFunc, storeType) if pb == nil { reason = "AggFunc `" + aggFunc.Name + "` can not be converted to pb expr" ret = false @@ -1666,7 +1665,7 @@ func (p *PhysicalStreamAgg) attach2Task(tasks ...task) task { partialAgg.SetChildren(cop.indexPlan) cop.indexPlan = partialAgg } - cop.addCost(partialAgg.(*PhysicalStreamAgg).GetCost(inputRows, false, 0)) + cop.addCost(partialAgg.(*PhysicalStreamAgg).GetCost(inputRows, false, false, 0)) partialAgg.SetCost(cop.cost()) } t = cop.convertToRootTask(p.ctx) @@ -1679,7 +1678,7 @@ func (p *PhysicalStreamAgg) attach2Task(tasks ...task) task { } else { attachPlan2Task(p, t) } - t.addCost(final.GetCost(inputRows, true, 0)) + t.addCost(final.GetCost(inputRows, true, false, 0)) t.plan().SetCost(t.cost()) return t } @@ -2071,7 +2070,8 @@ func (t *mppTask) enforceExchangerImpl(prop *property.PhysicalProperty) *mppTask sender.SetChildren(t.p) receiver := PhysicalExchangeReceiver{}.Init(ctx, t.p.statsInfo()) receiver.SetChildren(sender) - cst := t.cst + t.count()*ctx.GetSessionVars().GetNetworkFactor(nil) + rowSize := getTblStats(sender.children[0]).GetAvgRowSize(sender.ctx, sender.children[0].Schema().Columns, false, false) + cst := t.cst + t.count()*rowSize*ctx.GetSessionVars().GetNetworkFactor(nil) sender.cost = cst receiver.cost = cst return &mppTask{ diff --git a/planner/core/testdata/integration_suite_out.json b/planner/core/testdata/integration_suite_out.json index f3f200872b93e..8ce669292e9c7 100644 --- a/planner/core/testdata/integration_suite_out.json +++ b/planner/core/testdata/integration_suite_out.json @@ -2389,12 +2389,12 @@ { "SQL": "explain format = 'verbose' select count(*) from t2 group by a", "Plan": [ - "TableReader_24 3.00 4.16 root data:ExchangeSender_23", - "└─ExchangeSender_23 3.00 76.80 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection_22 3.00 76.80 mpp[tiflash] Column#4", - " └─HashAgg_8 3.00 57.00 mpp[tiflash] group by:test.t2.a, funcs:count(1)->Column#4", - " └─ExchangeReceiver_21 3.00 48.00 mpp[tiflash] ", - " └─ExchangeSender_20 3.00 48.00 mpp[tiflash] ExchangeType: HashPartition, Hash Cols: [name: test.t2.a, collate: binary]", + "TableReader_24 3.00 5.05 root data:ExchangeSender_23", + "└─ExchangeSender_23 3.00 98.18 mpp[tiflash] ExchangeType: PassThrough", + " └─Projection_22 3.00 98.18 mpp[tiflash] Column#4", + " └─HashAgg_8 3.00 78.38 mpp[tiflash] group by:test.t2.a, funcs:count(1)->Column#4", + " └─ExchangeReceiver_21 3.00 69.38 mpp[tiflash] ", + " └─ExchangeSender_20 3.00 69.38 mpp[tiflash] ExchangeType: HashPartition, Hash Cols: [name: test.t2.a, collate: binary]", " └─TableFullScan_19 3.00 45.00 mpp[tiflash] table:t2 keep order:false" ] }, @@ -2439,12 +2439,12 @@ { "SQL": "explain format = 'verbose' select count(*) from t1 join t2 on t1.a = t2.a", "Plan": [ - "StreamAgg_14 1.00 18.93 root funcs:count(1)->Column#7", - "└─TableReader_46 3.00 9.93 root data:ExchangeSender_45", - " └─ExchangeSender_45 3.00 195.38 mpp[tiflash] ExchangeType: PassThrough", - " └─HashJoin_42 3.00 195.38 mpp[tiflash] inner join, equal:[eq(test.t1.a, test.t2.a)]", - " ├─ExchangeReceiver_21(Build) 3.00 57.00 mpp[tiflash] ", - " │ └─ExchangeSender_20 3.00 57.00 mpp[tiflash] ExchangeType: Broadcast", + "StreamAgg_14 1.00 19.82 root funcs:count(1)->Column#7", + "└─TableReader_46 3.00 10.82 root data:ExchangeSender_45", + " └─ExchangeSender_45 3.00 216.75 mpp[tiflash] ExchangeType: PassThrough", + " └─HashJoin_42 3.00 216.75 mpp[tiflash] inner join, equal:[eq(test.t1.a, test.t2.a)]", + " ├─ExchangeReceiver_21(Build) 3.00 78.38 mpp[tiflash] ", + " │ └─ExchangeSender_20 3.00 78.38 mpp[tiflash] ExchangeType: Broadcast", " │ └─Selection_19 3.00 54.00 mpp[tiflash] not(isnull(test.t1.a))", " │ └─TableFullScan_18 3.00 45.00 mpp[tiflash] table:t1 keep order:false", " └─Selection_23(Probe) 3.00 54.00 mpp[tiflash] not(isnull(test.t2.a))", @@ -2454,15 +2454,15 @@ { "SQL": "explain format = 'verbose' select count(*) from t1 join t2 on t1.a = t2.a join t3 on t1.b = t3.b", "Plan": [ - "StreamAgg_15 1.00 60.60 root funcs:count(1)->Column#10", - "└─HashJoin_65 3.00 51.60 root inner join, equal:[eq(test.t1.b, test.t3.b)]", + "StreamAgg_15 1.00 62.51 root funcs:count(1)->Column#10", + "└─HashJoin_65 3.00 53.51 root inner join, equal:[eq(test.t1.b, test.t3.b)]", " ├─IndexReader_53(Build) 3.00 11.66 root index:IndexFullScan_52", " │ └─IndexFullScan_52 3.00 130.50 cop[tikv] table:t3, index:c(b) keep order:false", - " └─TableReader_39(Probe) 3.00 11.14 root data:ExchangeSender_38", - " └─ExchangeSender_38 3.00 204.38 mpp[tiflash] ExchangeType: PassThrough", - " └─HashJoin_29 3.00 204.38 mpp[tiflash] inner join, equal:[eq(test.t1.a, test.t2.a)]", - " ├─ExchangeReceiver_35(Build) 3.00 66.00 mpp[tiflash] ", - " │ └─ExchangeSender_34 3.00 66.00 mpp[tiflash] ExchangeType: Broadcast", + " └─TableReader_39(Probe) 3.00 13.05 root data:ExchangeSender_38", + " └─ExchangeSender_38 3.00 250.13 mpp[tiflash] ExchangeType: PassThrough", + " └─HashJoin_29 3.00 250.13 mpp[tiflash] inner join, equal:[eq(test.t1.a, test.t2.a)]", + " ├─ExchangeReceiver_35(Build) 3.00 111.75 mpp[tiflash] ", + " │ └─ExchangeSender_34 3.00 111.75 mpp[tiflash] ExchangeType: Broadcast", " │ └─Selection_33 3.00 63.00 mpp[tiflash] not(isnull(test.t1.a)), not(isnull(test.t1.b))", " │ └─TableFullScan_32 3.00 54.00 mpp[tiflash] table:t1 keep order:false", " └─Selection_37(Probe) 3.00 54.00 mpp[tiflash] not(isnull(test.t2.a))", @@ -3739,18 +3739,19 @@ "TableReader 2.00 root data:ExchangeSender", "└─ExchangeSender 2.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 2.00 mpp[tiflash] Column#9, test.t2.v1, test.t2.v2", - " └─HashAgg 2.00 mpp[tiflash] group by:test.t2.v1, test.t2.v2, funcs:count(1)->Column#9, funcs:firstrow(test.t2.v1)->test.t2.v1, funcs:firstrow(test.t2.v2)->test.t2.v2", + " └─HashAgg 2.00 mpp[tiflash] group by:test.t2.v1, test.t2.v2, funcs:sum(Column#22)->Column#9, funcs:firstrow(test.t2.v1)->test.t2.v1, funcs:firstrow(test.t2.v2)->test.t2.v2", " └─ExchangeReceiver 2.00 mpp[tiflash] ", " └─ExchangeSender 2.00 mpp[tiflash] ExchangeType: HashPartition, Hash Cols: [name: test.t2.v1, collate: binary], [name: test.t2.v2, collate: binary]", - " └─HashJoin 2.00 mpp[tiflash] left outer join, equal:[eq(test.t1.v1, test.t2.v1) eq(test.t1.v2, test.t2.v2)]", - " ├─ExchangeReceiver(Build) 2.00 mpp[tiflash] ", - " │ └─ExchangeSender 2.00 mpp[tiflash] ExchangeType: HashPartition, Hash Cols: [name: test.t1.v1, collate: binary], [name: test.t1.v2, collate: binary]", - " │ └─TableFullScan 2.00 mpp[tiflash] table:t1 keep order:false", - " └─ExchangeReceiver(Probe) 8.00 mpp[tiflash] ", - " └─ExchangeSender 8.00 mpp[tiflash] ExchangeType: HashPartition, Hash Cols: [name: Column#12, collate: binary], [name: Column#13, collate: binary]", - " └─Projection 8.00 mpp[tiflash] test.t2.v1, test.t2.v2, cast(test.t2.v1, decimal(20,2))->Column#12, cast(test.t2.v2, decimal(20,2))->Column#13", - " └─Selection 8.00 mpp[tiflash] not(isnull(test.t2.v1)), not(isnull(test.t2.v2))", - " └─TableFullScan 8.00 mpp[tiflash] table:t2 keep order:false" + " └─HashAgg 2.00 mpp[tiflash] group by:test.t2.v1, test.t2.v2, funcs:count(1)->Column#22", + " └─HashJoin 2.00 mpp[tiflash] left outer join, equal:[eq(test.t1.v1, test.t2.v1) eq(test.t1.v2, test.t2.v2)]", + " ├─ExchangeReceiver(Build) 2.00 mpp[tiflash] ", + " │ └─ExchangeSender 2.00 mpp[tiflash] ExchangeType: HashPartition, Hash Cols: [name: test.t1.v1, collate: binary], [name: test.t1.v2, collate: binary]", + " │ └─TableFullScan 2.00 mpp[tiflash] table:t1 keep order:false", + " └─ExchangeReceiver(Probe) 8.00 mpp[tiflash] ", + " └─ExchangeSender 8.00 mpp[tiflash] ExchangeType: HashPartition, Hash Cols: [name: Column#14, collate: binary], [name: Column#15, collate: binary]", + " └─Projection 8.00 mpp[tiflash] test.t2.v1, test.t2.v2, cast(test.t2.v1, decimal(20,2))->Column#14, cast(test.t2.v2, decimal(20,2))->Column#15", + " └─Selection 8.00 mpp[tiflash] not(isnull(test.t2.v1)), not(isnull(test.t2.v2))", + " └─TableFullScan 8.00 mpp[tiflash] table:t2 keep order:false" ] }, { @@ -3759,17 +3760,18 @@ "TableReader 1.00 root data:ExchangeSender", "└─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 1.00 mpp[tiflash] Column#9, test.t2.v1, test.t2.v2", - " └─HashAgg 1.00 mpp[tiflash] group by:test.t2.v1, test.t2.v2, funcs:count(1)->Column#9, funcs:firstrow(test.t2.v1)->test.t2.v1, funcs:firstrow(test.t2.v2)->test.t2.v2", + " └─HashAgg 1.00 mpp[tiflash] group by:test.t2.v1, test.t2.v2, funcs:sum(Column#16)->Column#9, funcs:firstrow(test.t2.v1)->test.t2.v1, funcs:firstrow(test.t2.v2)->test.t2.v2", " └─ExchangeReceiver 1.00 mpp[tiflash] ", " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: HashPartition, Hash Cols: [name: test.t2.v1, collate: binary], [name: test.t2.v2, collate: binary]", - " └─HashJoin 1.00 mpp[tiflash] left outer join, equal:[eq(test.t3.v1, test.t2.v1) eq(test.t3.v2, test.t2.v2)]", - " ├─ExchangeReceiver(Build) 1.00 mpp[tiflash] ", - " │ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: HashPartition, Hash Cols: [name: test.t3.v1, collate: binary], [name: test.t3.v2, collate: binary]", - " │ └─TableFullScan 1.00 mpp[tiflash] table:t3 keep order:false", - " └─ExchangeReceiver(Probe) 8.00 mpp[tiflash] ", - " └─ExchangeSender 8.00 mpp[tiflash] ExchangeType: HashPartition, Hash Cols: [name: test.t2.v1, collate: binary], [name: test.t2.v2, collate: binary]", - " └─Selection 8.00 mpp[tiflash] not(isnull(test.t2.v1)), not(isnull(test.t2.v2))", - " └─TableFullScan 8.00 mpp[tiflash] table:t2 keep order:false" + " └─HashAgg 1.00 mpp[tiflash] group by:test.t2.v1, test.t2.v2, funcs:count(1)->Column#16", + " └─HashJoin 1.00 mpp[tiflash] left outer join, equal:[eq(test.t3.v1, test.t2.v1) eq(test.t3.v2, test.t2.v2)]", + " ├─ExchangeReceiver(Build) 1.00 mpp[tiflash] ", + " │ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: HashPartition, Hash Cols: [name: test.t3.v1, collate: binary], [name: test.t3.v2, collate: binary]", + " │ └─TableFullScan 1.00 mpp[tiflash] table:t3 keep order:false", + " └─ExchangeReceiver(Probe) 8.00 mpp[tiflash] ", + " └─ExchangeSender 8.00 mpp[tiflash] ExchangeType: HashPartition, Hash Cols: [name: test.t2.v1, collate: binary], [name: test.t2.v2, collate: binary]", + " └─Selection 8.00 mpp[tiflash] not(isnull(test.t2.v1)), not(isnull(test.t2.v2))", + " └─TableFullScan 8.00 mpp[tiflash] table:t2 keep order:false" ] } ] @@ -5300,27 +5302,24 @@ { "SQL": "desc format = 'brief' SELECT STRAIGHT_JOIN t1 . col_varchar_64 , t1 . col_char_64_not_null FROM tt AS t1 INNER JOIN( tt AS t2 JOIN tt AS t3 ON(t3 . col_decimal_30_10_key = t2 . col_tinyint)) ON(t3 . col_varchar_64 = t2 . col_varchar_key) WHERE t3 . col_varchar_64 = t1 . col_char_64_not_null GROUP BY 1 , 2", "Plan": [ - "TableReader 8000.00 root data:ExchangeSender", - "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 8000.00 mpp[tiflash] test.tt.col_varchar_64, test.tt.col_char_64_not_null", - " └─HashAgg 8000.00 mpp[tiflash] group by:test.tt.col_char_64_not_null, test.tt.col_varchar_64, funcs:firstrow(test.tt.col_varchar_64)->test.tt.col_varchar_64, funcs:firstrow(test.tt.col_char_64_not_null)->test.tt.col_char_64_not_null", - " └─ExchangeReceiver 8000.00 mpp[tiflash] ", - " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Hash Cols: [name: test.tt.col_varchar_64, collate: utf8mb4_bin], [name: test.tt.col_char_64_not_null, collate: utf8mb4_bin]", - " └─HashAgg 8000.00 mpp[tiflash] group by:test.tt.col_char_64_not_null, test.tt.col_varchar_64, ", - " └─HashJoin 15609.38 mpp[tiflash] inner join, equal:[eq(test.tt.col_char_64_not_null, test.tt.col_varchar_64)]", - " ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ", - " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: HashPartition, Hash Cols: [name: test.tt.col_char_64_not_null, collate: utf8mb4_bin]", - " │ └─TableFullScan 10000.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo", - " └─HashJoin(Probe) 12487.50 mpp[tiflash] inner join, equal:[eq(test.tt.col_varchar_key, test.tt.col_varchar_64) eq(Column#19, test.tt.col_decimal_30_10_key)]", - " ├─ExchangeReceiver(Build) 9990.00 mpp[tiflash] ", - " │ └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: HashPartition, Hash Cols: [name: test.tt.col_varchar_key, collate: utf8mb4_bin]", - " │ └─Projection 9990.00 mpp[tiflash] test.tt.col_varchar_key, cast(test.tt.col_tinyint, decimal(20,0) BINARY)->Column#19", - " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.tt.col_varchar_key))", - " │ └─TableFullScan 10000.00 mpp[tiflash] table:t2 keep order:false, stats:pseudo", - " └─ExchangeReceiver(Probe) 9990.00 mpp[tiflash] ", - " └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: HashPartition, Hash Cols: [name: test.tt.col_varchar_64, collate: utf8mb4_bin]", - " └─Selection 9990.00 mpp[tiflash] not(isnull(test.tt.col_varchar_64))", - " └─TableFullScan 10000.00 mpp[tiflash] table:t3 keep order:false, stats:pseudo" + "HashAgg 8000.00 root group by:test.tt.col_char_64_not_null, test.tt.col_varchar_64, funcs:firstrow(test.tt.col_varchar_64)->test.tt.col_varchar_64, funcs:firstrow(test.tt.col_char_64_not_null)->test.tt.col_char_64_not_null", + "└─TableReader 8000.00 root data:ExchangeSender", + " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", + " └─HashAgg 8000.00 mpp[tiflash] group by:test.tt.col_char_64_not_null, test.tt.col_varchar_64, ", + " └─HashJoin 15609.38 mpp[tiflash] inner join, equal:[eq(test.tt.col_char_64_not_null, test.tt.col_varchar_64)]", + " ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ", + " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: HashPartition, Hash Cols: [name: test.tt.col_char_64_not_null, collate: utf8mb4_bin]", + " │ └─TableFullScan 10000.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo", + " └─HashJoin(Probe) 12487.50 mpp[tiflash] inner join, equal:[eq(test.tt.col_varchar_key, test.tt.col_varchar_64) eq(Column#19, test.tt.col_decimal_30_10_key)]", + " ├─ExchangeReceiver(Build) 9990.00 mpp[tiflash] ", + " │ └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: HashPartition, Hash Cols: [name: test.tt.col_varchar_key, collate: utf8mb4_bin]", + " │ └─Projection 9990.00 mpp[tiflash] test.tt.col_varchar_key, cast(test.tt.col_tinyint, decimal(20,0) BINARY)->Column#19", + " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.tt.col_varchar_key))", + " │ └─TableFullScan 10000.00 mpp[tiflash] table:t2 keep order:false, stats:pseudo", + " └─ExchangeReceiver(Probe) 9990.00 mpp[tiflash] ", + " └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: HashPartition, Hash Cols: [name: test.tt.col_varchar_64, collate: utf8mb4_bin]", + " └─Selection 9990.00 mpp[tiflash] not(isnull(test.tt.col_varchar_64))", + " └─TableFullScan 10000.00 mpp[tiflash] table:t3 keep order:false, stats:pseudo" ] } ] @@ -5386,15 +5385,12 @@ "SQL": "desc format = 'brief' select count(*), id + 1 from t group by id + 1", "Plan": [ "Projection 8000.00 root Column#4, plus(test.t.id, 1)->Column#5", - "└─TableReader 8000.00 root data:ExchangeSender", - " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 8000.00 mpp[tiflash] Column#4, test.t.id", - " └─HashAgg 8000.00 mpp[tiflash] group by:Column#10, funcs:sum(Column#11)->Column#4, funcs:firstrow(Column#12)->test.t.id", - " └─ExchangeReceiver 8000.00 mpp[tiflash] ", - " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Hash Cols: [name: Column#10, collate: binary]", - " └─HashAgg 8000.00 mpp[tiflash] group by:Column#17, funcs:count(1)->Column#11, funcs:firstrow(Column#16)->Column#12", - " └─Projection 10000.00 mpp[tiflash] test.t.id, plus(test.t.id, 1)->Column#17", - " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" + "└─HashAgg 8000.00 root group by:Column#13, funcs:count(Column#14)->Column#4, funcs:firstrow(Column#15)->test.t.id", + " └─TableReader 8000.00 root data:ExchangeSender", + " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", + " └─HashAgg 8000.00 mpp[tiflash] group by:Column#17, funcs:count(1)->Column#14, funcs:firstrow(Column#16)->Column#15", + " └─Projection 10000.00 mpp[tiflash] test.t.id, plus(test.t.id, 1)->Column#17", + " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ] }, { @@ -5522,10 +5518,11 @@ " └─HashJoin 7992.00 mpp[tiflash] inner join, equal:[eq(test.t.id, test.t.id)]", " ├─Projection(Build) 7992.00 mpp[tiflash] test.t.id", " │ └─HashAgg 7992.00 mpp[tiflash] group by:test.t.id, funcs:firstrow(test.t.id)->test.t.id", - " │ └─ExchangeReceiver 9990.00 mpp[tiflash] ", - " │ └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: HashPartition, Hash Cols: [name: test.t.id, collate: binary]", - " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.t.id))", - " │ └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo", + " │ └─ExchangeReceiver 7992.00 mpp[tiflash] ", + " │ └─ExchangeSender 7992.00 mpp[tiflash] ExchangeType: HashPartition, Hash Cols: [name: test.t.id, collate: binary]", + " │ └─HashAgg 7992.00 mpp[tiflash] group by:test.t.id, ", + " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.t.id))", + " │ └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo", " └─Projection(Probe) 7992.00 mpp[tiflash] Column#11, test.t.id", " └─HashAgg 7992.00 mpp[tiflash] group by:Column#39, funcs:sum(Column#37)->Column#11, funcs:firstrow(Column#38)->test.t.id", " └─Projection 9990.00 mpp[tiflash] cast(test.t.id, decimal(10,0) BINARY)->Column#37, test.t.id, test.t.id", @@ -5589,12 +5586,13 @@ "└─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: PassThrough", " └─HashJoin 9990.00 mpp[tiflash] inner join, equal:[eq(test.t.id, test.t.id)]", " ├─Projection(Build) 7992.00 mpp[tiflash] Column#7, test.t.id", - " │ └─HashAgg 7992.00 mpp[tiflash] group by:Column#20, funcs:count(Column#18)->Column#7, funcs:firstrow(Column#19)->test.t.id", - " │ └─Projection 9990.00 mpp[tiflash] div(1, test.t.value)->Column#18, test.t.id, test.t.id", - " │ └─ExchangeReceiver 9990.00 mpp[tiflash] ", - " │ └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: HashPartition, Hash Cols: [name: test.t.id, collate: binary]", - " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.t.id))", - " │ └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo", + " │ └─HashAgg 7992.00 mpp[tiflash] group by:test.t.id, funcs:sum(Column#8)->Column#7, funcs:firstrow(test.t.id)->test.t.id", + " │ └─ExchangeReceiver 7992.00 mpp[tiflash] ", + " │ └─ExchangeSender 7992.00 mpp[tiflash] ExchangeType: HashPartition, Hash Cols: [name: test.t.id, collate: binary]", + " │ └─HashAgg 7992.00 mpp[tiflash] group by:Column#19, funcs:count(Column#18)->Column#8", + " │ └─Projection 9990.00 mpp[tiflash] div(1, test.t.value)->Column#18, test.t.id", + " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.t.id))", + " │ └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo", " └─ExchangeReceiver(Probe) 9990.00 mpp[tiflash] ", " └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: HashPartition, Hash Cols: [name: test.t.id, collate: binary]", " └─Selection 9990.00 mpp[tiflash] not(isnull(test.t.id))", @@ -5604,18 +5602,14 @@ { "SQL": "desc format = 'brief' select /*+hash_agg()*/ sum(id) from (select value, id from t where id > value group by id, value)A group by value /*the exchange should have only one partition column: test.t.value*/", "Plan": [ - "TableReader 6400.00 root data:ExchangeSender", - "└─ExchangeSender 6400.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 6400.00 mpp[tiflash] Column#4", - " └─HashAgg 6400.00 mpp[tiflash] group by:Column#20, funcs:sum(Column#19)->Column#4", - " └─Projection 6400.00 mpp[tiflash] cast(test.t.id, decimal(10,0) BINARY)->Column#19, test.t.value", - " └─Projection 6400.00 mpp[tiflash] test.t.id, test.t.value", - " └─HashAgg 6400.00 mpp[tiflash] group by:test.t.id, test.t.value, funcs:firstrow(test.t.id)->test.t.id, funcs:firstrow(test.t.value)->test.t.value", - " └─ExchangeReceiver 6400.00 mpp[tiflash] ", - " └─ExchangeSender 6400.00 mpp[tiflash] ExchangeType: HashPartition, Hash Cols: [name: test.t.value, collate: binary]", - " └─HashAgg 6400.00 mpp[tiflash] group by:test.t.id, test.t.value, ", - " └─Selection 8000.00 mpp[tiflash] gt(cast(test.t.id, decimal(20,0) BINARY), test.t.value)", - " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" + "HashAgg 6400.00 root group by:Column#20, funcs:sum(Column#19)->Column#4", + "└─Projection 6400.00 root cast(test.t.id, decimal(10,0) BINARY)->Column#19, test.t.value", + " └─HashAgg 6400.00 root group by:test.t.id, test.t.value, funcs:firstrow(test.t.id)->test.t.id, funcs:firstrow(test.t.value)->test.t.value", + " └─TableReader 6400.00 root data:ExchangeSender", + " └─ExchangeSender 6400.00 mpp[tiflash] ExchangeType: PassThrough", + " └─HashAgg 6400.00 mpp[tiflash] group by:test.t.id, test.t.value, ", + " └─Selection 8000.00 mpp[tiflash] gt(cast(test.t.id, decimal(20,0) BINARY), test.t.value)", + " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ] }, { @@ -5758,20 +5752,18 @@ { "SQL": "desc format = 'brief' select sum(b) from (select t.id, t1.id as b from t join t t1 on t.id=t1.id)A group by id", "Plan": [ - "TableReader 7992.00 root data:ExchangeSender", - "└─ExchangeSender 7992.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 7992.00 mpp[tiflash] Column#7", - " └─HashAgg 7992.00 mpp[tiflash] group by:Column#11, funcs:sum(Column#10)->Column#7", + "HashAgg 7992.00 root group by:test.t.id, funcs:sum(Column#9)->Column#7", + "└─TableReader 7992.00 root data:ExchangeSender", + " └─ExchangeSender 7992.00 mpp[tiflash] ExchangeType: PassThrough", + " └─HashAgg 7992.00 mpp[tiflash] group by:Column#11, funcs:sum(Column#10)->Column#9", " └─Projection 12487.50 mpp[tiflash] cast(test.t.id, decimal(10,0) BINARY)->Column#10, test.t.id", - " └─ExchangeReceiver 12487.50 mpp[tiflash] ", - " └─ExchangeSender 12487.50 mpp[tiflash] ExchangeType: HashPartition, Hash Cols: [name: test.t.id, collate: binary]", - " └─HashJoin 12487.50 mpp[tiflash] inner join, equal:[eq(test.t.id, test.t.id)]", - " ├─ExchangeReceiver(Build) 9990.00 mpp[tiflash] ", - " │ └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: Broadcast", - " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.t.id))", - " │ └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo", - " └─Selection(Probe) 9990.00 mpp[tiflash] not(isnull(test.t.id))", - " └─TableFullScan 10000.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo" + " └─HashJoin 12487.50 mpp[tiflash] inner join, equal:[eq(test.t.id, test.t.id)]", + " ├─ExchangeReceiver(Build) 9990.00 mpp[tiflash] ", + " │ └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: Broadcast", + " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.t.id))", + " │ └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo", + " └─Selection(Probe) 9990.00 mpp[tiflash] not(isnull(test.t.id))", + " └─TableFullScan 10000.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo" ] }, { @@ -5784,16 +5776,18 @@ " │ └─ExchangeSender 7992.00 mpp[tiflash] ExchangeType: Broadcast", " │ └─Projection 7992.00 mpp[tiflash] test.t.id", " │ └─HashAgg 7992.00 mpp[tiflash] group by:test.t.id, funcs:firstrow(test.t.id)->test.t.id", - " │ └─ExchangeReceiver 9990.00 mpp[tiflash] ", - " │ └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: HashPartition, Hash Cols: [name: test.t.id, collate: binary]", - " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.t.id))", - " │ └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo", + " │ └─ExchangeReceiver 7992.00 mpp[tiflash] ", + " │ └─ExchangeSender 7992.00 mpp[tiflash] ExchangeType: HashPartition, Hash Cols: [name: test.t.id, collate: binary]", + " │ └─HashAgg 7992.00 mpp[tiflash] group by:test.t.id, ", + " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.t.id))", + " │ └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo", " └─Projection(Probe) 7992.00 mpp[tiflash] Column#7, test.t.id", - " └─HashAgg 7992.00 mpp[tiflash] group by:test.t.id, funcs:sum(test.t.value)->Column#7, funcs:firstrow(test.t.id)->test.t.id", - " └─ExchangeReceiver 9990.00 mpp[tiflash] ", - " └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: HashPartition, Hash Cols: [name: test.t.id, collate: binary]", - " └─Selection 9990.00 mpp[tiflash] not(isnull(test.t.id))", - " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" + " └─HashAgg 7992.00 mpp[tiflash] group by:test.t.id, funcs:sum(Column#9)->Column#7, funcs:firstrow(test.t.id)->test.t.id", + " └─ExchangeReceiver 7992.00 mpp[tiflash] ", + " └─ExchangeSender 7992.00 mpp[tiflash] ExchangeType: HashPartition, Hash Cols: [name: test.t.id, collate: binary]", + " └─HashAgg 7992.00 mpp[tiflash] group by:test.t.id, funcs:sum(test.t.value)->Column#9", + " └─Selection 9990.00 mpp[tiflash] not(isnull(test.t.id))", + " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ] }, { @@ -5806,26 +5800,28 @@ " │ └─ExchangeSender 7992.00 mpp[tiflash] ExchangeType: Broadcast", " │ └─Projection 7992.00 mpp[tiflash] test.t.id", " │ └─HashAgg 7992.00 mpp[tiflash] group by:test.t.id, funcs:firstrow(test.t.id)->test.t.id", - " │ └─ExchangeReceiver 9990.00 mpp[tiflash] ", - " │ └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: HashPartition, Hash Cols: [name: test.t.id, collate: binary]", - " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.t.id))", - " │ └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo", + " │ └─ExchangeReceiver 7992.00 mpp[tiflash] ", + " │ └─ExchangeSender 7992.00 mpp[tiflash] ExchangeType: HashPartition, Hash Cols: [name: test.t.id, collate: binary]", + " │ └─HashAgg 7992.00 mpp[tiflash] group by:test.t.id, ", + " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.t.id))", + " │ └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo", " └─Projection(Probe) 7992.00 mpp[tiflash] Column#11, test.t.id", - " └─HashAgg 7992.00 mpp[tiflash] group by:Column#34, funcs:sum(Column#32)->Column#11, funcs:firstrow(Column#33)->test.t.id", - " └─Projection 9990.00 mpp[tiflash] cast(test.t.id, decimal(10,0) BINARY)->Column#32, test.t.id, test.t.id", - " └─ExchangeReceiver 9990.00 mpp[tiflash] ", - " └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: HashPartition, Hash Cols: [name: test.t.id, collate: binary]", - " └─HashJoin 9990.00 mpp[tiflash] inner join, equal:[eq(test.t.id, test.t.id)]", - " ├─ExchangeReceiver(Build) 7992.00 mpp[tiflash] ", - " │ └─ExchangeSender 7992.00 mpp[tiflash] ExchangeType: Broadcast", - " │ └─Projection 7992.00 mpp[tiflash] test.t.id, Column#13", - " │ └─HashAgg 7992.00 mpp[tiflash] group by:test.t.id, funcs:firstrow(test.t.id)->test.t.id, funcs:count(1)->Column#13", - " │ └─ExchangeReceiver 9990.00 mpp[tiflash] ", - " │ └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: HashPartition, Hash Cols: [name: test.t.id, collate: binary]", - " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.t.id))", - " │ └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo", - " └─Selection(Probe) 9990.00 mpp[tiflash] not(isnull(test.t.id))", - " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" + " └─HashAgg 7992.00 mpp[tiflash] group by:test.t.id, funcs:sum(Column#17)->Column#11, funcs:firstrow(test.t.id)->test.t.id", + " └─ExchangeReceiver 7992.00 mpp[tiflash] ", + " └─ExchangeSender 7992.00 mpp[tiflash] ExchangeType: HashPartition, Hash Cols: [name: test.t.id, collate: binary]", + " └─HashAgg 7992.00 mpp[tiflash] group by:Column#33, funcs:sum(Column#32)->Column#17", + " └─Projection 9990.00 mpp[tiflash] cast(test.t.id, decimal(10,0) BINARY)->Column#32, test.t.id", + " └─HashJoin 9990.00 mpp[tiflash] inner join, equal:[eq(test.t.id, test.t.id)]", + " ├─ExchangeReceiver(Build) 7992.00 mpp[tiflash] ", + " │ └─ExchangeSender 7992.00 mpp[tiflash] ExchangeType: Broadcast", + " │ └─Projection 7992.00 mpp[tiflash] test.t.id, Column#13", + " │ └─HashAgg 7992.00 mpp[tiflash] group by:test.t.id, funcs:firstrow(test.t.id)->test.t.id, funcs:count(1)->Column#13", + " │ └─ExchangeReceiver 9990.00 mpp[tiflash] ", + " │ └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: HashPartition, Hash Cols: [name: test.t.id, collate: binary]", + " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.t.id))", + " │ └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo", + " └─Selection(Probe) 9990.00 mpp[tiflash] not(isnull(test.t.id))", + " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ] }, { @@ -6169,11 +6165,12 @@ "TableReader 8000.00 root data:ExchangeSender", "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 8000.00 mpp[tiflash] Column#5", - " └─HashAgg 8000.00 mpp[tiflash] group by:Column#13, funcs:group_concat(Column#10, Column#11, Column#12 separator \",\")->Column#5", - " └─Projection 10000.00 mpp[tiflash] test.ts.col_0, test.ts.col_1, cast(test.ts.id, var_string(20))->Column#12, test.ts.col_2", - " └─ExchangeReceiver 10000.00 mpp[tiflash] ", - " └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: HashPartition, Hash Cols: [name: test.ts.col_2, collate: utf8mb4_bin]", - " └─TableFullScan 10000.00 mpp[tiflash] table:ts keep order:false, stats:pseudo" + " └─HashAgg 8000.00 mpp[tiflash] group by:test.ts.col_2, funcs:group_concat(Column#9 separator \",\")->Column#5", + " └─ExchangeReceiver 8000.00 mpp[tiflash] ", + " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Hash Cols: [name: test.ts.col_2, collate: utf8mb4_bin]", + " └─HashAgg 8000.00 mpp[tiflash] group by:Column#13, funcs:group_concat(Column#10, Column#11, Column#12 separator \",\")->Column#9", + " └─Projection 10000.00 mpp[tiflash] test.ts.col_0, test.ts.col_1, cast(test.ts.id, var_string(20))->Column#12, test.ts.col_2", + " └─TableFullScan 10000.00 mpp[tiflash] table:ts keep order:false, stats:pseudo" ], "Warning": [ "[planner:1815]Optimizer Hint AGG_TO_COP is inapplicable" @@ -6690,10 +6687,11 @@ "TableReader 8000.00 root data:ExchangeSender", "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 8000.00 mpp[tiflash] Column#5", - " └─HashAgg 8000.00 mpp[tiflash] group by:test.ts.id, funcs:group_concat(test.ts.col_0, test.ts.col_0 separator \",\")->Column#5", - " └─ExchangeReceiver 10000.00 mpp[tiflash] ", - " └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: HashPartition, Hash Cols: [name: test.ts.id, collate: binary]", - " └─TableFullScan 10000.00 mpp[tiflash] table:ts keep order:false, stats:pseudo" + " └─HashAgg 8000.00 mpp[tiflash] group by:test.ts.id, funcs:group_concat(Column#9 separator \",\")->Column#5", + " └─ExchangeReceiver 8000.00 mpp[tiflash] ", + " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Hash Cols: [name: test.ts.id, collate: binary]", + " └─HashAgg 8000.00 mpp[tiflash] group by:test.ts.id, funcs:group_concat(test.ts.col_0, test.ts.col_0 separator \",\")->Column#9", + " └─TableFullScan 10000.00 mpp[tiflash] table:ts keep order:false, stats:pseudo" ], "Warning": [ "[planner:1815]Optimizer Hint AGG_TO_COP is inapplicable" @@ -6705,11 +6703,12 @@ "TableReader 8000.00 root data:ExchangeSender", "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 8000.00 mpp[tiflash] Column#5", - " └─HashAgg 8000.00 mpp[tiflash] group by:Column#13, funcs:group_concat(Column#10, Column#11, Column#12 separator \",\")->Column#5", - " └─Projection 10000.00 mpp[tiflash] test.ts.col_0, test.ts.col_0, cast(test.ts.id, var_string(20))->Column#12, test.ts.id", - " └─ExchangeReceiver 10000.00 mpp[tiflash] ", - " └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: HashPartition, Hash Cols: [name: test.ts.id, collate: binary]", - " └─TableFullScan 10000.00 mpp[tiflash] table:ts keep order:false, stats:pseudo" + " └─HashAgg 8000.00 mpp[tiflash] group by:test.ts.id, funcs:group_concat(Column#9 separator \",\")->Column#5", + " └─ExchangeReceiver 8000.00 mpp[tiflash] ", + " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Hash Cols: [name: test.ts.id, collate: binary]", + " └─HashAgg 8000.00 mpp[tiflash] group by:Column#13, funcs:group_concat(Column#10, Column#11, Column#12 separator \",\")->Column#9", + " └─Projection 10000.00 mpp[tiflash] test.ts.col_0, test.ts.col_0, cast(test.ts.id, var_string(20))->Column#12, test.ts.id", + " └─TableFullScan 10000.00 mpp[tiflash] table:ts keep order:false, stats:pseudo" ], "Warning": [ "[planner:1815]Optimizer Hint AGG_TO_COP is inapplicable" @@ -6809,10 +6808,11 @@ "└─TableReader 8000.00 root data:ExchangeSender", " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 8000.00 mpp[tiflash] Column#5", - " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.name, funcs:count(1)->Column#5", - " └─ExchangeReceiver 10000.00 mpp[tiflash] ", - " └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: HashPartition, Hash Cols: [name: test.t.name, collate: utf8mb4_bin]", - " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" + " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.name, funcs:sum(Column#8)->Column#5", + " └─ExchangeReceiver 8000.00 mpp[tiflash] ", + " └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Hash Cols: [name: test.t.name, collate: utf8mb4_bin]", + " └─HashAgg 8000.00 mpp[tiflash] group by:test.t.name, funcs:count(1)->Column#8", + " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ] }, { @@ -6843,10 +6843,11 @@ " │ └─ExchangeSender 7992.00 mpp[tiflash] ExchangeType: Broadcast", " │ └─Projection 7992.00 mpp[tiflash] test.t.id", " │ └─HashAgg 7992.00 mpp[tiflash] group by:test.t.id, funcs:firstrow(test.t.id)->test.t.id", - " │ └─ExchangeReceiver 9990.00 mpp[tiflash] ", - " │ └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: HashPartition, Hash Cols: [name: test.t.id, collate: binary]", - " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.t.id))", - " │ └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo", + " │ └─ExchangeReceiver 7992.00 mpp[tiflash] ", + " │ └─ExchangeSender 7992.00 mpp[tiflash] ExchangeType: HashPartition, Hash Cols: [name: test.t.id, collate: binary]", + " │ └─HashAgg 7992.00 mpp[tiflash] group by:test.t.id, ", + " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.t.id))", + " │ └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo", " └─Selection(Probe) 9990.00 mpp[tiflash] not(isnull(test.t.id))", " └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo" ] diff --git a/planner/core/testdata/partition_pruner_out.json b/planner/core/testdata/partition_pruner_out.json index 39f8a3c00ef76..e63431a14861d 100644 --- a/planner/core/testdata/partition_pruner_out.json +++ b/planner/core/testdata/partition_pruner_out.json @@ -2843,15 +2843,17 @@ { "SQL": "explain format = 'brief' select * from t where a = 1", "Result": [ - "TableReader 10000.00 root data:TableFullScan", - "└─TableFullScan 10000.00 cop[tikv] table:t, partition:p1 keep order:false, stats:pseudo" + "TableReader 10.00 root data:Selection", + "└─Selection 10.00 cop[tikv] eq(test_partition.t.a, 1)", + " └─TableFullScan 10000.00 cop[tikv] table:t, partition:p1 keep order:false, stats:pseudo" ] }, { "SQL": "explain format = 'brief' select * from t where a = 2", "Result": [ - "TableReader 10000.00 root data:TableFullScan", - "└─TableFullScan 10000.00 cop[tikv] table:t, partition:p2 keep order:false, stats:pseudo" + "TableReader 10.00 root data:Selection", + "└─Selection 10.00 cop[tikv] eq(test_partition.t.a, 2)", + " └─TableFullScan 10000.00 cop[tikv] table:t, partition:p2 keep order:false, stats:pseudo" ] }, { @@ -2899,8 +2901,9 @@ { "SQL": "explain format = 'brief' select * from t where a in (2)", "Result": [ - "TableReader 10000.00 root data:TableFullScan", - "└─TableFullScan 10000.00 cop[tikv] table:t, partition:p2 keep order:false, stats:pseudo" + "TableReader 10.00 root data:Selection", + "└─Selection 10.00 cop[tikv] eq(test_partition.t.a, 2)", + " └─TableFullScan 10000.00 cop[tikv] table:t, partition:p2 keep order:false, stats:pseudo" ] } ] diff --git a/planner/core/testdata/window_push_down_suite_out.json b/planner/core/testdata/window_push_down_suite_out.json index 2b7b7b893cda4..e537e05904ce3 100644 --- a/planner/core/testdata/window_push_down_suite_out.json +++ b/planner/core/testdata/window_push_down_suite_out.json @@ -340,11 +340,12 @@ "TableReader_84 8000.00 root data:ExchangeSender_83", "└─ExchangeSender_83 8000.00 mpp[tiflash] ExchangeType: PassThrough", " └─Window_82 8000.00 mpp[tiflash] row_number()->Column#7 over(rows between current row and current row)", - " └─Projection_19 8000.00 mpp[tiflash] Column#5", - " └─HashAgg_12 8000.00 mpp[tiflash] group by:test.employee.deptid, funcs:count(test.employee.empid)->Column#5", - " └─ExchangeReceiver_18 10000.00 mpp[tiflash] ", - " └─ExchangeSender_17 10000.00 mpp[tiflash] ExchangeType: HashPartition, Hash Cols: [name: test.employee.deptid, collate: binary]", - " └─TableFullScan_16 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo" + " └─Projection_21 8000.00 mpp[tiflash] Column#5", + " └─HashAgg_22 8000.00 mpp[tiflash] group by:test.employee.deptid, funcs:sum(Column#8)->Column#5", + " └─ExchangeReceiver_24 8000.00 mpp[tiflash] ", + " └─ExchangeSender_23 8000.00 mpp[tiflash] ExchangeType: HashPartition, Hash Cols: [name: test.employee.deptid, collate: binary]", + " └─HashAgg_13 8000.00 mpp[tiflash] group by:test.employee.deptid, funcs:count(test.employee.empid)->Column#8", + " └─TableFullScan_20 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo" ], "Warn": null }, @@ -372,12 +373,13 @@ "TableReader_61 8000.00 root data:ExchangeSender_60", "└─ExchangeSender_60 8000.00 mpp[tiflash] ExchangeType: PassThrough", " └─Window_59 8000.00 mpp[tiflash] row_number()->Column#7 over(partition by test.employee.deptid rows between current row and current row)", - " └─Sort_18 8000.00 mpp[tiflash] test.employee.deptid", - " └─Projection_17 8000.00 mpp[tiflash] Column#5, test.employee.deptid", - " └─HashAgg_12 8000.00 mpp[tiflash] group by:test.employee.deptid, funcs:count(test.employee.empid)->Column#5, funcs:firstrow(test.employee.deptid)->test.employee.deptid", - " └─ExchangeReceiver_16 10000.00 mpp[tiflash] ", - " └─ExchangeSender_15 10000.00 mpp[tiflash] ExchangeType: HashPartition, Hash Cols: [name: test.employee.deptid, collate: binary]", - " └─TableFullScan_14 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo" + " └─Sort_24 8000.00 mpp[tiflash] test.employee.deptid", + " └─Projection_20 8000.00 mpp[tiflash] Column#5, test.employee.deptid", + " └─HashAgg_21 8000.00 mpp[tiflash] group by:test.employee.deptid, funcs:sum(Column#8)->Column#5, funcs:firstrow(test.employee.deptid)->test.employee.deptid", + " └─ExchangeReceiver_23 8000.00 mpp[tiflash] ", + " └─ExchangeSender_22 8000.00 mpp[tiflash] ExchangeType: HashPartition, Hash Cols: [name: test.employee.deptid, collate: binary]", + " └─HashAgg_13 8000.00 mpp[tiflash] group by:test.employee.deptid, funcs:count(test.employee.empid)->Column#8", + " └─TableFullScan_19 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo" ], "Warn": null }, @@ -432,15 +434,16 @@ "Plan": [ "TableReader_54 10000.00 root data:ExchangeSender_53", "└─ExchangeSender_53 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection_48 10000.00 mpp[tiflash] Column#7", - " └─HashAgg_46 10000.00 mpp[tiflash] group by:Column#6, funcs:count(test.employee.empid)->Column#7", - " └─ExchangeReceiver_32 10000.00 mpp[tiflash] ", - " └─ExchangeSender_31 10000.00 mpp[tiflash] ExchangeType: HashPartition, Hash Cols: [name: Column#6, collate: binary]", - " └─Window_30 10000.00 mpp[tiflash] row_number()->Column#6 over(partition by test.employee.deptid rows between current row and current row)", - " └─Sort_21 10000.00 mpp[tiflash] test.employee.deptid", - " └─ExchangeReceiver_20 10000.00 mpp[tiflash] ", - " └─ExchangeSender_19 10000.00 mpp[tiflash] ExchangeType: HashPartition, Hash Cols: [name: test.employee.deptid, collate: binary]", - " └─TableFullScan_18 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo" + " └─Projection_49 10000.00 mpp[tiflash] Column#7", + " └─HashAgg_50 10000.00 mpp[tiflash] group by:Column#6, funcs:sum(Column#10)->Column#7", + " └─ExchangeReceiver_52 10000.00 mpp[tiflash] ", + " └─ExchangeSender_51 10000.00 mpp[tiflash] ExchangeType: HashPartition, Hash Cols: [name: Column#6, collate: binary]", + " └─HashAgg_47 10000.00 mpp[tiflash] group by:Column#6, funcs:count(test.employee.empid)->Column#10", + " └─Window_36 10000.00 mpp[tiflash] row_number()->Column#6 over(partition by test.employee.deptid rows between current row and current row)", + " └─Sort_21 10000.00 mpp[tiflash] test.employee.deptid", + " └─ExchangeReceiver_20 10000.00 mpp[tiflash] ", + " └─ExchangeSender_19 10000.00 mpp[tiflash] ExchangeType: HashPartition, Hash Cols: [name: test.employee.deptid, collate: binary]", + " └─TableFullScan_18 10000.00 mpp[tiflash] table:employee keep order:false, stats:pseudo" ], "Warn": null } diff --git a/planner/core/util.go b/planner/core/util.go index d37c190129a23..ccf43fc3808f7 100644 --- a/planner/core/util.go +++ b/planner/core/util.go @@ -16,7 +16,6 @@ package core import ( "fmt" - "sort" "strings" "github.com/pingcap/tidb/expression" @@ -26,6 +25,7 @@ import ( "github.com/pingcap/tidb/types" "github.com/pingcap/tidb/util/ranger" "github.com/pingcap/tidb/util/set" + "golang.org/x/exp/slices" ) // AggregateFuncExtractor visits Expr tree. @@ -294,7 +294,7 @@ func extractStringFromStringSet(set set.StringSet) string { for k := range set { l = append(l, fmt.Sprintf(`"%s"`, k)) } - sort.Strings(l) + slices.Sort(l) return strings.Join(l, ",") } @@ -303,7 +303,7 @@ func extractStringFromStringSlice(ss []string) string { if len(ss) < 1 { return "" } - sort.Strings(ss) + slices.Sort(ss) return strings.Join(ss, ",") } @@ -316,7 +316,7 @@ func extractStringFromUint64Slice(slice []uint64) string { for _, k := range slice { l = append(l, fmt.Sprintf(`%d`, k)) } - sort.Strings(l) + slices.Sort(l) return strings.Join(l, ",") } @@ -329,7 +329,7 @@ func extractStringFromBoolSlice(slice []bool) string { for _, k := range slice { l = append(l, fmt.Sprintf(`%t`, k)) } - sort.Strings(l) + slices.Sort(l) return strings.Join(l, ",") } diff --git a/planner/funcdep/BUILD.bazel b/planner/funcdep/BUILD.bazel new file mode 100644 index 0000000000000..0687c1177e8a9 --- /dev/null +++ b/planner/funcdep/BUILD.bazel @@ -0,0 +1,45 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "funcdep", + srcs = [ + "doc.go", + "fast_int_set.go", + "fd_graph.go", + ], + importpath = "github.com/pingcap/tidb/planner/funcdep", + visibility = ["//visibility:public"], + deps = [ + "//util/logutil", + "@org_golang_x_tools//container/intsets", + ], +) + +go_test( + name = "funcdep_test", + srcs = [ + "extract_fd_test.go", + "fast_int_set_bench_test.go", + "fast_int_set_test.go", + "fd_graph_test.go", + "main_test.go", + "only_full_group_by_test.go", + ], + embed = [":funcdep"], + deps = [ + "//domain", + "//infoschema", + "//parser", + "//planner/core", + "//sessionctx", + "//sessiontxn", + "//testkit", + "//testkit/testsetup", + "//util/hint", + "@com_github_stretchr_testify//require", + "@org_golang_x_exp//maps", + "@org_golang_x_exp//slices", + "@org_golang_x_tools//container/intsets", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/planner/funcdep/extract_fd_test.go b/planner/funcdep/extract_fd_test.go index 82999eb6693b4..b5bb646cba073 100644 --- a/planner/funcdep/extract_fd_test.go +++ b/planner/funcdep/extract_fd_test.go @@ -213,13 +213,15 @@ func TestFDSet_ExtractFD(t *testing.T) { is := testGetIS(t, tk.Session()) for i, tt := range tests { comment := fmt.Sprintf("case:%v sql:%s", i, tt.sql) + require.NoError(t, tk.Session().PrepareTxnCtx(context.TODO())) + require.NoError(t, sessiontxn.GetTxnManager(tk.Session()).OnStmtStart(context.TODO())) stmt, err := par.ParseOneStmt(tt.sql, "", "") require.NoError(t, err, comment) tk.Session().GetSessionVars().PlanID = 0 tk.Session().GetSessionVars().PlanColumnID = 0 err = plannercore.Preprocess(tk.Session(), stmt, plannercore.WithPreprocessorReturn(&plannercore.PreprocessorReturn{InfoSchema: is})) require.NoError(t, err) - require.NoError(t, sessiontxn.WarmUpTxn(tk.Session())) + require.NoError(t, sessiontxn.GetTxnManager(tk.Session()).AdviseWarmup()) builder, _ := plannercore.NewPlanBuilder().Init(tk.Session(), is, &hint.BlockHintProcessor{}) // extract FD to every OP p, err := builder.Build(ctx, stmt) @@ -309,6 +311,8 @@ func TestFDSet_ExtractFDForApply(t *testing.T) { ctx := context.TODO() is := testGetIS(t, tk.Session()) for i, tt := range tests { + require.NoError(t, tk.Session().PrepareTxnCtx(context.TODO())) + require.NoError(t, sessiontxn.GetTxnManager(tk.Session()).OnStmtStart(context.TODO())) comment := fmt.Sprintf("case:%v sql:%s", i, tt.sql) stmt, err := par.ParseOneStmt(tt.sql, "", "") require.NoError(t, err, comment) @@ -316,7 +320,7 @@ func TestFDSet_ExtractFDForApply(t *testing.T) { tk.Session().GetSessionVars().PlanColumnID = 0 err = plannercore.Preprocess(tk.Session(), stmt, plannercore.WithPreprocessorReturn(&plannercore.PreprocessorReturn{InfoSchema: is})) require.NoError(t, err, comment) - require.NoError(t, sessiontxn.WarmUpTxn(tk.Session())) + require.NoError(t, sessiontxn.GetTxnManager(tk.Session()).AdviseWarmup()) builder, _ := plannercore.NewPlanBuilder().Init(tk.Session(), is, &hint.BlockHintProcessor{}) // extract FD to every OP p, err := builder.Build(ctx, stmt) @@ -365,7 +369,7 @@ func TestFDSet_MakeOuterJoin(t *testing.T) { tk.Session().GetSessionVars().PlanColumnID = 0 err = plannercore.Preprocess(tk.Session(), stmt, plannercore.WithPreprocessorReturn(&plannercore.PreprocessorReturn{InfoSchema: is})) require.NoError(t, err, comment) - require.NoError(t, sessiontxn.WarmUpTxn(tk.Session())) + require.NoError(t, sessiontxn.GetTxnManager(tk.Session()).AdviseWarmup()) builder, _ := plannercore.NewPlanBuilder().Init(tk.Session(), is, &hint.BlockHintProcessor{}) // extract FD to every OP p, err := builder.Build(ctx, stmt) diff --git a/planner/implementation/BUILD.bazel b/planner/implementation/BUILD.bazel new file mode 100644 index 0000000000000..a7fd495a31e3f --- /dev/null +++ b/planner/implementation/BUILD.bazel @@ -0,0 +1,38 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "implementation", + srcs = [ + "base.go", + "datasource.go", + "join.go", + "simple_plans.go", + "sort.go", + ], + importpath = "github.com/pingcap/tidb/planner/implementation", + visibility = ["//visibility:public"], + deps = [ + "//expression", + "//kv", + "//parser/model", + "//planner/core", + "//planner/memo", + "//statistics", + ], +) + +go_test( + name = "implementation_test", + srcs = [ + "base_test.go", + "main_test.go", + ], + embed = [":implementation"], + deps = [ + "//planner/core", + "//planner/memo", + "//testkit/testsetup", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/planner/implementation/join.go b/planner/implementation/join.go index f24791e9a987e..4b247353c58bf 100644 --- a/planner/implementation/join.go +++ b/planner/implementation/join.go @@ -29,7 +29,7 @@ func (impl *HashJoinImpl) CalcCost(outCount float64, children ...memo.Implementa hashJoin := impl.plan.(*plannercore.PhysicalHashJoin) // The children here are only used to calculate the cost. hashJoin.SetChildren(children[0].GetPlan(), children[1].GetPlan()) - selfCost := hashJoin.GetCost(children[0].GetPlan().StatsCount(), children[1].GetPlan().StatsCount()) + selfCost := hashJoin.GetCost(children[0].GetPlan().StatsCount(), children[1].GetPlan().StatsCount(), false, 0) impl.cost = selfCost + children[0].GetCost() + children[1].GetCost() return impl.cost } @@ -56,7 +56,7 @@ func (impl *MergeJoinImpl) CalcCost(outCount float64, children ...memo.Implement mergeJoin := impl.plan.(*plannercore.PhysicalMergeJoin) // The children here are only used to calculate the cost. mergeJoin.SetChildren(children[0].GetPlan(), children[1].GetPlan()) - selfCost := mergeJoin.GetCost(children[0].GetPlan().StatsCount(), children[1].GetPlan().StatsCount()) + selfCost := mergeJoin.GetCost(children[0].GetPlan().StatsCount(), children[1].GetPlan().StatsCount(), 0) impl.cost = selfCost + children[0].GetCost() + children[1].GetCost() return impl.cost } diff --git a/planner/implementation/simple_plans.go b/planner/implementation/simple_plans.go index 74a85d17cc642..1c69c1cc6a6c8 100644 --- a/planner/implementation/simple_plans.go +++ b/planner/implementation/simple_plans.go @@ -53,7 +53,7 @@ type TiDBSelectionImpl struct { // CalcCost implements Implementation CalcCost interface. func (sel *TiDBSelectionImpl) CalcCost(outCount float64, children ...memo.Implementation) float64 { - sel.cost = children[0].GetPlan().Stats().RowCount*sel.plan.SCtx().GetSessionVars().CPUFactor + children[0].GetCost() + sel.cost = children[0].GetPlan().Stats().RowCount*sel.plan.SCtx().GetSessionVars().GetCPUFactor() + children[0].GetCost() return sel.cost } @@ -69,7 +69,7 @@ type TiKVSelectionImpl struct { // CalcCost implements Implementation CalcCost interface. func (sel *TiKVSelectionImpl) CalcCost(outCount float64, children ...memo.Implementation) float64 { - sel.cost = children[0].GetPlan().Stats().RowCount*sel.plan.SCtx().GetSessionVars().CopCPUFactor + children[0].GetCost() + sel.cost = children[0].GetPlan().Stats().RowCount*sel.plan.SCtx().GetSessionVars().GetCopCPUFactor() + children[0].GetCost() return sel.cost } @@ -183,7 +183,7 @@ func (impl *UnionAllImpl) CalcCost(outCount float64, children ...memo.Implementa childMaxCost = childCost } } - selfCost := float64(1+len(children)) * impl.plan.SCtx().GetSessionVars().ConcurrencyFactor + selfCost := float64(1+len(children)) * impl.plan.SCtx().GetSessionVars().GetConcurrencyFactor() // Children of UnionAll are executed in parallel. impl.cost = selfCost + childMaxCost return impl.cost diff --git a/planner/memo/BUILD.bazel b/planner/memo/BUILD.bazel new file mode 100644 index 0000000000000..5e6fb48a5f06d --- /dev/null +++ b/planner/memo/BUILD.bazel @@ -0,0 +1,43 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "memo", + srcs = [ + "expr_iterator.go", + "group.go", + "group_expr.go", + "implementation.go", + "pattern.go", + ], + importpath = "github.com/pingcap/tidb/planner/memo", + visibility = ["//visibility:public"], + deps = [ + "//expression", + "//planner/core", + "//planner/property", + ], +) + +go_test( + name = "memo_test", + srcs = [ + "expr_iterator_test.go", + "group_expr_test.go", + "group_test.go", + "main_test.go", + "pattern_test.go", + ], + embed = [":memo"], + deps = [ + "//domain", + "//expression", + "//infoschema", + "//parser", + "//parser/model", + "//planner/core", + "//planner/property", + "//testkit/testsetup", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/planner/optimize.go b/planner/optimize.go index 44081d3d22fa1..b6e2d84781265 100644 --- a/planner/optimize.go +++ b/planner/optimize.go @@ -33,7 +33,6 @@ import ( "github.com/pingcap/tidb/metrics" "github.com/pingcap/tidb/parser" "github.com/pingcap/tidb/parser/ast" - "github.com/pingcap/tidb/parser/model" "github.com/pingcap/tidb/planner/cascades" "github.com/pingcap/tidb/planner/core" plannercore "github.com/pingcap/tidb/planner/core" @@ -114,6 +113,7 @@ func Optimize(ctx context.Context, sctx sessionctx.Context, node ast.Node, is in } } + txnManger := sessiontxn.GetTxnManager(sctx) if _, isolationReadContainTiKV := sessVars.IsolationReadEngines[kv.TiKV]; isolationReadContainTiKV { var fp plannercore.Plan if fpv, ok := sctx.Value(plannercore.PointPlanKey).(plannercore.PointPlanVal); ok { @@ -123,15 +123,10 @@ func Optimize(ctx context.Context, sctx sessionctx.Context, node ast.Node, is in fp = plannercore.TryFastPlan(sctx, node) } if fp != nil { - if !useMaxTS(sctx, fp) { - if err := sessiontxn.WarmUpTxn(sctx); err != nil { - return nil, nil, err - } - } return fp, fp.OutputNames(), nil } } - if err := sessiontxn.WarmUpTxn(sctx); err != nil { + if err := txnManger.AdviseWarmup(); err != nil { return nil, nil, err } @@ -486,29 +481,6 @@ func handleEvolveTasks(ctx context.Context, sctx sessionctx.Context, br *bindinf globalHandle.AddEvolvePlanTask(br.OriginalSQL, br.Db, binding) } -// useMaxTS returns true when meets following conditions: -// 1. ctx is auto commit tagged. -// 2. plan is point get by pk. -// 3. not a cache table. -func useMaxTS(ctx sessionctx.Context, p plannercore.Plan) bool { - if !plannercore.IsAutoCommitTxn(ctx) { - return false - } - v, ok := p.(*plannercore.PointGetPlan) - if !ok { - return false - } - noSecondRead := v.IndexInfo == nil || (v.IndexInfo.Primary && v.TblInfo.IsCommonHandle) - if !noSecondRead { - return false - } - - if v.TblInfo != nil && (v.TblInfo.TableCacheStatusType != model.TableCacheStatusDisable) { - return false - } - return true -} - // OptimizeExecStmt to optimize prepare statement protocol "execute" statement // this is a short path ONLY does things filling prepare related params // for point select like plan which does not need extra things diff --git a/planner/property/BUILD.bazel b/planner/property/BUILD.bazel new file mode 100644 index 0000000000000..848fb66108b8e --- /dev/null +++ b/planner/property/BUILD.bazel @@ -0,0 +1,22 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "property", + srcs = [ + "logical_property.go", + "physical_property.go", + "stats_info.go", + "task_type.go", + ], + importpath = "github.com/pingcap/tidb/planner/property", + visibility = ["//visibility:public"], + deps = [ + "//expression", + "//sessionctx/stmtctx", + "//statistics", + "//util/codec", + "//util/collate", + "@com_github_pingcap_log//:log", + "@com_github_pingcap_tipb//go-tipb", + ], +) diff --git a/planner/util/BUILD.bazel b/planner/util/BUILD.bazel new file mode 100644 index 0000000000000..85359c0e11cef --- /dev/null +++ b/planner/util/BUILD.bazel @@ -0,0 +1,40 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "util", + srcs = [ + "byitem.go", + "path.go", + ], + importpath = "github.com/pingcap/tidb/planner/util", + visibility = ["//visibility:public"], + deps = [ + "//expression", + "//kv", + "//parser/ast", + "//parser/model", + "//sessionctx", + "//types", + "//util/collate", + "//util/ranger", + ], +) + +go_test( + name = "util_test", + srcs = [ + "main_test.go", + "path_test.go", + ], + embed = [":util"], + deps = [ + "//parser/model", + "//planner/core", + "//testkit/testsetup", + "//types", + "//util/collate", + "//util/ranger", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/plugin/BUILD.bazel b/plugin/BUILD.bazel new file mode 100644 index 0000000000000..85e61355b78fd --- /dev/null +++ b/plugin/BUILD.bazel @@ -0,0 +1,49 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "plugin", + srcs = [ + "audit.go", + "const.go", + "errors.go", + "helper.go", + "plugin.go", + "spi.go", + ], + importpath = "github.com/pingcap/tidb/plugin", + visibility = ["//visibility:public"], + deps = [ + "//domain", + "//errno", + "//sessionctx/variable", + "//util", + "//util/dbterror", + "//util/logutil", + "@com_github_pingcap_errors//:errors", + "@io_etcd_go_etcd_client_v3//:client", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "plugin_test", + srcs = [ + "const_test.go", + "helper_test.go", + "integration_test.go", + "main_test.go", + "plugin_test.go", + "spi_test.go", + ], + embed = [":plugin"], + deps = [ + "//parser/mysql", + "//server", + "//session", + "//sessionctx/variable", + "//testkit", + "//testkit/testsetup", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/plugin/conn_ip_example/BUILD.bazel b/plugin/conn_ip_example/BUILD.bazel new file mode 100644 index 0000000000000..ae22b9c56752c --- /dev/null +++ b/plugin/conn_ip_example/BUILD.bazel @@ -0,0 +1,28 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library", "go_test") + +go_library( + name = "conn_ip_example_lib", + srcs = ["conn_ip_example.go"], + importpath = "github.com/pingcap/tidb/plugin/conn_ip_example", + visibility = ["//visibility:private"], + deps = [ + "//plugin", + "//sessionctx/variable", + ], +) + +go_test( + name = "conn_ip_example_test", + srcs = [ + "conn_ip_example_test.go", + "main_test.go", + ], + embed = [":conn_ip_example_lib"], + deps = [ + "//plugin", + "//sessionctx/variable", + "//testkit/testsetup", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/plugin/integration_test.go b/plugin/integration_test.go index 96bb5c3295a5f..1c62fa440da6d 100644 --- a/plugin/integration_test.go +++ b/plugin/integration_test.go @@ -485,11 +485,13 @@ func TestAuditLogNormal(t *testing.T) { sql: "show stats_histograms", stmtType: "Show", dbs: "mysql", + tables: "stats_histograms", }, { sql: "show stats_meta", stmtType: "Show", dbs: "mysql", + tables: "stats_meta", }, { sql: "show status", diff --git a/privilege/BUILD.bazel b/privilege/BUILD.bazel new file mode 100644 index 0000000000000..ec4d5d50cbe89 --- /dev/null +++ b/privilege/BUILD.bazel @@ -0,0 +1,14 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "privilege", + srcs = ["privilege.go"], + importpath = "github.com/pingcap/tidb/privilege", + visibility = ["//visibility:public"], + deps = [ + "//parser/auth", + "//parser/mysql", + "//sessionctx", + "//types", + ], +) diff --git a/privilege/privileges/BUILD.bazel b/privilege/privileges/BUILD.bazel new file mode 100644 index 0000000000000..fc3084c3ff602 --- /dev/null +++ b/privilege/privileges/BUILD.bazel @@ -0,0 +1,68 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "privileges", + srcs = [ + "cache.go", + "errors.go", + "privileges.go", + ], + importpath = "github.com/pingcap/tidb/privilege/privileges", + visibility = ["//visibility:public"], + deps = [ + "//errno", + "//infoschema", + "//parser/ast", + "//parser/auth", + "//parser/mysql", + "//parser/terror", + "//privilege", + "//sessionctx", + "//sessionctx/variable", + "//types", + "//util", + "//util/chunk", + "//util/dbterror", + "//util/hack", + "//util/logutil", + "//util/sem", + "//util/sqlexec", + "//util/stringutil", + "@com_github_pingcap_errors//:errors", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "privileges_test", + srcs = [ + "cache_test.go", + "main_test.go", + "privileges_test.go", + ], + flaky = True, + shard_count = 50, + deps = [ + ":privileges", + "//config", + "//errno", + "//executor", + "//kv", + "//parser/auth", + "//parser/mysql", + "//parser/terror", + "//planner/core", + "//privilege", + "//session", + "//sessionctx", + "//sessionctx/variable", + "//testkit", + "//testkit/testsetup", + "//testkit/testutil", + "//util", + "//util/sem", + "//util/sqlexec", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/privilege/privileges/cache.go b/privilege/privileges/cache.go index 9e8198650d25b..d1e85b3d45091 100644 --- a/privilege/privileges/cache.go +++ b/privilege/privileges/cache.go @@ -1168,7 +1168,7 @@ func (p *MySQLPrivilege) DBIsVisible(user, host, db string) bool { } func (p *MySQLPrivilege) showGrants(user, host string, roles []*auth.RoleIdentity) []string { - var gs []string // nolint: prealloc + var gs []string //nolint: prealloc var sortFromIdx int var hasGlobalGrant = false // Some privileges may granted from role inheritance. diff --git a/privilege/privileges/privileges.go b/privilege/privileges/privileges.go index 7b499bdd64100..e6633b03f1d5d 100644 --- a/privilege/privileges/privileges.go +++ b/privilege/privileges/privileges.go @@ -23,7 +23,6 @@ import ( "sync" "github.com/pingcap/tidb/infoschema" - "github.com/pingcap/tidb/infoschema/perfschema" "github.com/pingcap/tidb/parser/auth" "github.com/pingcap/tidb/parser/mysql" "github.com/pingcap/tidb/privilege" @@ -136,29 +135,18 @@ func (p *UserPrivileges) RequestVerification(activeRoles []*auth.RoleIdentity, d } } - switch dbLowerName { - case util.InformationSchemaName.L: + if util.IsMemDB(dbLowerName) { switch priv { case mysql.CreatePriv, mysql.AlterPriv, mysql.DropPriv, mysql.IndexPriv, mysql.CreateViewPriv, - mysql.InsertPriv, mysql.UpdatePriv, mysql.DeletePriv: + mysql.InsertPriv, mysql.UpdatePriv, mysql.DeletePriv, mysql.ReferencesPriv, mysql.ExecutePriv, + mysql.ShowViewPriv, mysql.LockTablesPriv: return false } - return true - // We should be very careful of limiting privileges, so ignore `mysql` for now. - case util.PerformanceSchemaName.L: - if perfschema.IsPredefinedTable(table) { - switch priv { - case mysql.CreatePriv, mysql.AlterPriv, mysql.DropPriv, mysql.IndexPriv, mysql.InsertPriv, mysql.UpdatePriv, mysql.DeletePriv: - return false - } - } - case util.MetricSchemaName.L: - if infoschema.IsMetricTable(table) { - switch priv { - case mysql.CreatePriv, mysql.AlterPriv, mysql.DropPriv, mysql.IndexPriv, mysql.InsertPriv, mysql.UpdatePriv, mysql.DeletePriv: - return false + if dbLowerName == util.InformationSchemaName.L { + return true + } else if dbLowerName == util.MetricSchemaName.L { // PROCESS is the same with SELECT for metrics_schema. - case mysql.SelectPriv: + if priv == mysql.SelectPriv && infoschema.IsMetricTable(table) { priv |= mysql.ProcessPriv } } diff --git a/privilege/privileges/privileges_test.go b/privilege/privileges/privileges_test.go index 81ed179605c1a..c7d465c52006e 100644 --- a/privilege/privileges/privileges_test.go +++ b/privilege/privileges/privileges_test.go @@ -1277,6 +1277,9 @@ func TestSystemSchema(t *testing.T) { err = tk.ExecToErr("create table metric_schema.t(a int)") require.Error(t, err) require.True(t, terror.ErrorEqual(err, core.ErrTableaccessDenied)) + + tk.MustGetErrCode("create table metrics_schema.t (id int);", errno.ErrTableaccessDenied) + tk.MustGetErrCode("create table performance_schema.t (id int);", errno.ErrTableaccessDenied) } func TestPerformanceSchema(t *testing.T) { diff --git a/server/BUILD.bazel b/server/BUILD.bazel new file mode 100644 index 0000000000000..7a8b99826ef04 --- /dev/null +++ b/server/BUILD.bazel @@ -0,0 +1,207 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "server", + srcs = [ + "buffered_read_conn.go", + "column.go", + "conn.go", + "conn_stmt.go", + "driver.go", + "driver_tidb.go", + "http_handler.go", + "http_status.go", + "mock_conn.go", + "optimize_trace.go", + "packetio.go", + "plan_replayer.go", + "rpc_server.go", + "server.go", + "stat.go", + "statistics_handler.go", + "tokenlimiter.go", + "util.go", + ], + importpath = "github.com/pingcap/tidb/server", + visibility = ["//visibility:public"], + deps = [ + "//config", + "//ddl", + "//domain", + "//domain/infosync", + "//errno", + "//executor", + "//infoschema", + "//kv", + "//meta", + "//metrics", + "//parser", + "//parser/ast", + "//parser/auth", + "//parser/charset", + "//parser/model", + "//parser/mysql", + "//parser/terror", + "//planner/core", + "//plugin", + "//privilege", + "//privilege/privileges", + "//session", + "//session/txninfo", + "//sessionctx", + "//sessionctx/binloginfo", + "//sessionctx/stmtctx", + "//sessionctx/variable", + "//sessiontxn", + "//store/driver/error", + "//store/gcworker", + "//store/helper", + "//table", + "//table/tables", + "//tablecodec", + "//types", + "//util", + "//util/arena", + "//util/chunk", + "//util/codec", + "//util/cpuprofile", + "//util/dbterror", + "//util/deadlockhistory", + "//util/execdetails", + "//util/fastrand", + "//util/gcutil", + "//util/hack", + "//util/logutil", + "//util/memory", + "//util/pdapi", + "//util/printer", + "//util/sqlexec", + "//util/sys/linux", + "//util/timeutil", + "//util/tls", + "//util/topsql", + "//util/topsql/state", + "//util/topsql/stmtstats", + "//util/versioninfo", + "@com_github_blacktear23_go_proxyprotocol//:go-proxyprotocol", + "@com_github_gorilla_mux//:mux", + "@com_github_opentracing_opentracing_go//:opentracing-go", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_pingcap_fn//:fn", + "@com_github_pingcap_kvproto//pkg/coprocessor", + "@com_github_pingcap_kvproto//pkg/diagnosticspb", + "@com_github_pingcap_kvproto//pkg/kvrpcpb", + "@com_github_pingcap_kvproto//pkg/metapb", + "@com_github_pingcap_kvproto//pkg/tikvpb", + "@com_github_pingcap_log//:log", + "@com_github_pingcap_sysutil//:sysutil", + "@com_github_prometheus_client_golang//prometheus", + "@com_github_prometheus_client_golang//prometheus/promhttp", + "@com_github_soheilhy_cmux//:cmux", + "@com_github_stretchr_testify//require", + "@com_github_tiancaiamao_appdash//traceapp", + "@com_github_tikv_client_go_v2//oracle", + "@com_github_tikv_client_go_v2//tikv", + "@com_github_tikv_client_go_v2//util", + "@com_sourcegraph_sourcegraph_appdash_data//:appdash-data", + "@org_golang_google_grpc//:grpc", + "@org_golang_google_grpc//channelz/service", + "@org_golang_google_grpc//keepalive", + "@org_golang_google_grpc//peer", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "server_test", + srcs = [ + "column_test.go", + "conn_stmt_test.go", + "conn_test.go", + "driver_tidb_test.go", + "http_handler_serial_test.go", + "http_handler_test.go", + "main_test.go", + "mock_conn_test.go", + "optimize_trace_test.go", + "packetio_test.go", + "plan_replayer_test.go", + "server_test.go", + "stat_test.go", + "statistics_handler_test.go", + "tidb_library_test.go", + "tidb_serial_test.go", + "tidb_test.go", + "util_test.go", + ], + embed = [":server"], + flaky = True, + shard_count = 50, + deps = [ + "//config", + "//ddl", + "//ddl/util", + "//domain", + "//domain/infosync", + "//errno", + "//executor", + "//infoschema", + "//kv", + "//meta", + "//metrics", + "//parser", + "//parser/ast", + "//parser/charset", + "//parser/model", + "//parser/mysql", + "//parser/terror", + "//planner/core", + "//session", + "//sessionctx", + "//sessionctx/binloginfo", + "//sessionctx/stmtctx", + "//sessionctx/variable", + "//statistics/handle", + "//store/helper", + "//store/mockstore", + "//store/mockstore/unistore", + "//tablecodec", + "//testkit", + "//testkit/external", + "//testkit/testsetup", + "//types", + "//types/json", + "//util", + "//util/arena", + "//util/chunk", + "//util/codec", + "//util/cpuprofile", + "//util/deadlockhistory", + "//util/mock", + "//util/plancodec", + "//util/resourcegrouptag", + "//util/rowcodec", + "//util/topsql", + "//util/topsql/collector", + "//util/topsql/collector/mock", + "//util/topsql/state", + "//util/topsql/stmtstats", + "//util/versioninfo", + "@com_github_docker_go_units//:go-units", + "@com_github_go_sql_driver_mysql//:mysql", + "@com_github_gorilla_mux//:mux", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_pingcap_kvproto//pkg/kvrpcpb", + "@com_github_pingcap_kvproto//pkg/metapb", + "@com_github_pingcap_log//:log", + "@com_github_stretchr_testify//require", + "@com_github_tikv_client_go_v2//error", + "@com_github_tikv_client_go_v2//testutils", + "@com_github_tikv_client_go_v2//tikv", + "@com_github_tikv_client_go_v2//tikvrpc", + "@org_uber_go_goleak//:goleak", + "@org_uber_go_zap//:zap", + ], +) diff --git a/server/conn.go b/server/conn.go index 85b227b3f3bdf..e5289e4fec5af 100644 --- a/server/conn.go +++ b/server/conn.go @@ -1936,8 +1936,8 @@ func (cc *clientConn) prefetchPointPlanKeys(ctx context.Context, stmts []ast.Stm } } pointPlans := make([]plannercore.Plan, len(stmts)) - var idxKeys []kv.Key // nolint: prealloc - var rowKeys []kv.Key // nolint: prealloc + var idxKeys []kv.Key //nolint: prealloc + var rowKeys []kv.Key //nolint: prealloc sc := vars.StmtCtx for i, stmt := range stmts { switch stmt.(type) { diff --git a/server/http_handler.go b/server/http_handler.go index 4ef260eed12dd..5db67bcd3be0c 100644 --- a/server/http_handler.go +++ b/server/http_handler.go @@ -47,6 +47,7 @@ import ( "github.com/pingcap/tidb/parser/model" "github.com/pingcap/tidb/parser/terror" "github.com/pingcap/tidb/session" + "github.com/pingcap/tidb/session/txninfo" "github.com/pingcap/tidb/sessionctx" "github.com/pingcap/tidb/sessionctx/binloginfo" "github.com/pingcap/tidb/sessionctx/stmtctx" @@ -755,6 +756,34 @@ func (h settingsHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) { return } } + if transactionSummaryCapacity := req.Form.Get("transaction_summary_capacity"); transactionSummaryCapacity != "" { + capacity, err := strconv.Atoi(transactionSummaryCapacity) + if err != nil { + writeError(w, errors.New("illegal argument")) + return + } else if capacity < 0 || capacity > 5000 { + writeError(w, errors.New("transaction_summary_capacity out of range, should be in 0 to 5000")) + return + } + cfg := config.GetGlobalConfig() + cfg.TrxSummary.TransactionSummaryCapacity = uint(capacity) + config.StoreGlobalConfig(cfg) + txninfo.Recorder.ResizeSummaries(uint(capacity)) + } + if transactionIDDigestMinDuration := req.Form.Get("transaction_id_digest_min_duration"); transactionIDDigestMinDuration != "" { + duration, err := strconv.Atoi(transactionIDDigestMinDuration) + if err != nil { + writeError(w, errors.New("illegal argument")) + return + } else if duration < 0 || duration > 2147483647 { + writeError(w, errors.New("transaction_id_digest_min_duration out of range, should be in 0 to 2147483647")) + return + } + cfg := config.GetGlobalConfig() + cfg.TrxSummary.TransactionIDDigestMinDuration = uint(duration) + config.StoreGlobalConfig(cfg) + txninfo.Recorder.SetMinDuration(time.Duration(duration) * time.Millisecond) + } } else { writeData(w, config.GetGlobalConfig()) } diff --git a/server/server.go b/server/server.go index 3221b6edc2acb..13ed052391f59 100644 --- a/server/server.go +++ b/server/server.go @@ -352,7 +352,7 @@ func setTxnScope() { // Export config-related metrics func (s *Server) reportConfig() { metrics.ConfigStatus.WithLabelValues("token-limit").Set(float64(s.cfg.TokenLimit)) - metrics.ConfigStatus.WithLabelValues("max-server-connections").Set(float64(s.cfg.MaxServerConnections)) + metrics.ConfigStatus.WithLabelValues("max_connections").Set(float64(s.cfg.Instance.MaxConnections)) } // Run runs the server. @@ -514,11 +514,18 @@ func (s *Server) onConn(conn *clientConn) { }) terror.Log(err) } - if errors.Cause(err) == io.EOF { + switch errors.Cause(err) { + case io.EOF: // `EOF` means the connection is closed normally, we do not treat it as a noticeable error and log it in 'DEBUG' level. logutil.BgLogger().With(zap.Uint64("conn", conn.connectionID)). Debug("EOF", zap.String("remote addr", conn.bufReadConn.RemoteAddr().String())) - } else { + case errConCount: + if err := conn.writeError(ctx, err); err != nil { + logutil.BgLogger().With(zap.Uint64("conn", conn.connectionID)). + Warn("error in writing errConCount", zap.Error(err), + zap.String("remote addr", conn.bufReadConn.RemoteAddr().String())) + } + default: metrics.HandShakeErrorCounter.Inc() logutil.BgLogger().With(zap.Uint64("conn", conn.connectionID)). Warn("Server.onConn handshake", zap.Error(err), @@ -605,8 +612,8 @@ func (cc *clientConn) connectInfo() *variable.ConnectionInfo { } func (s *Server) checkConnectionCount() error { - // When the value of MaxServerConnections is 0, the number of connections is unlimited. - if int(s.cfg.MaxServerConnections) == 0 { + // When the value of Instance.MaxConnections is 0, the number of connections is unlimited. + if int(s.cfg.Instance.MaxConnections) == 0 { return nil } @@ -614,9 +621,9 @@ func (s *Server) checkConnectionCount() error { conns := len(s.clients) s.rwlock.RUnlock() - if conns >= int(s.cfg.MaxServerConnections) { + if conns >= int(s.cfg.Instance.MaxConnections) { logutil.BgLogger().Error("too many connections", - zap.Uint32("max connections", s.cfg.MaxServerConnections), zap.Error(errConCount)) + zap.Uint32("max connections", s.cfg.Instance.MaxConnections), zap.Error(errConCount)) return errConCount } return nil @@ -833,8 +840,12 @@ func (s *Server) GetInternalSessionStartTSList() []uint64 { s.sessionMapMutex.Lock() defer s.sessionMapMutex.Unlock() tsList := make([]uint64, 0, len(s.internalSessions)) + analyzeProcID := util.GetAutoAnalyzeProcID(s.ServerID) for se := range s.internalSessions { - if ts := session.GetStartTSFromSession(se); ts != 0 { + if ts, processInfoID := session.GetStartTSFromSession(se); ts != 0 { + if processInfoID == analyzeProcID { + continue + } tsList = append(tsList, ts) } } diff --git a/server/server_test.go b/server/server_test.go index 83f13fdd97b5a..b463303666baa 100644 --- a/server/server_test.go +++ b/server/server_test.go @@ -850,6 +850,144 @@ func (cli *testServerClient) checkRows(t *testing.T, rows *sql.Rows, expectedRow require.Equal(t, strings.Join(expectedRows, "\n"), strings.Join(result, "\n")) } +func (cli *testServerClient) runTestLoadDataWithColumnList(t *testing.T, _ *Server) { + fp, err := os.CreateTemp("", "load_data_test.csv") + require.NoError(t, err) + path := fp.Name() + require.NotNil(t, fp) + defer func() { + err = fp.Close() + require.NoError(t, err) + err = os.Remove(path) + require.NoError(t, err) + }() + + _, err = fp.WriteString("dsadasdas\n" + + "\"1\",\"1\",,\"2022-04-19\",\"a\",\"2022-04-19 00:00:01\"\n" + + "\"1\",\"2\",\"a\",\"2022-04-19\",\"a\",\"2022-04-19 00:00:01\"\n" + + "\"1\",\"3\",\"a\",\"2022-04-19\",\"a\",\"2022-04-19 00:00:01\"\n" + + "\"1\",\"4\",\"a\",\"2022-04-19\",\"a\",\"2022-04-19 00:00:01\"") + + cli.runTestsOnNewDB(t, func(config *mysql.Config) { + config.AllowAllFiles = true + config.Params["sql_mode"] = "''" + }, "LoadData", func(db *testkit.DBTestKit) { + db.MustExec("use test") + db.MustExec("drop table if exists t66") + db.MustExec("create table t66 (id int primary key,k int,c varchar(10),dt date,vv char(1),ts datetime)") + db.MustExec(fmt.Sprintf("LOAD DATA LOCAL INFILE '%s' INTO TABLE t66 FIELDS TERMINATED BY ',' ENCLOSED BY '\\\"' IGNORE 1 LINES (k,id,c,dt,vv,ts)", path)) + rows := db.MustQuery("select * from t66") + var ( + id sql.NullString + k sql.NullString + c sql.NullString + dt sql.NullString + vv sql.NullString + ts sql.NullString + ) + columns := []*sql.NullString{&k, &id, &c, &dt, &vv, &ts} + require.Truef(t, rows.Next(), "unexpected data") + err := rows.Scan(&id, &k, &c, &dt, &vv, &ts) + require.NoError(t, err) + columnsAsExpected(t, columns, strings.Split("1,1,,2022-04-19,a,2022-04-19 00:00:01", ",")) + require.Truef(t, rows.Next(), "unexpected data") + err = rows.Scan(&id, &k, &c, &dt, &vv, &ts) + require.NoError(t, err) + columnsAsExpected(t, columns, strings.Split("1,2,a,2022-04-19,a,2022-04-19 00:00:01", ",")) + require.Truef(t, rows.Next(), "unexpected data") + err = rows.Scan(&id, &k, &c, &dt, &vv, &ts) + require.NoError(t, err) + columnsAsExpected(t, columns, strings.Split("1,3,a,2022-04-19,a,2022-04-19 00:00:01", ",")) + require.Truef(t, rows.Next(), "unexpected data") + err = rows.Scan(&id, &k, &c, &dt, &vv, &ts) + require.NoError(t, err) + columnsAsExpected(t, columns, strings.Split("1,4,a,2022-04-19,a,2022-04-19 00:00:01", ",")) + }) + + // Also test cases where column list only specifies partial columns + cli.runTestsOnNewDB(t, func(config *mysql.Config) { + config.AllowAllFiles = true + config.Params["sql_mode"] = "''" + }, "LoadData", func(db *testkit.DBTestKit) { + db.MustExec("use test") + db.MustExec("drop table if exists t66") + db.MustExec("create table t66 (id int primary key,k int,c varchar(10),dt date,vv char(1),ts datetime)") + db.MustExec(fmt.Sprintf("LOAD DATA LOCAL INFILE '%s' INTO TABLE t66 FIELDS TERMINATED BY ',' ENCLOSED BY '\\\"' IGNORE 1 LINES (k,id,c)", path)) + rows := db.MustQuery("select * from t66") + var ( + id sql.NullString + k sql.NullString + c sql.NullString + dt sql.NullString + vv sql.NullString + ts sql.NullString + ) + columns := []*sql.NullString{&k, &id, &c, &dt, &vv, &ts} + require.Truef(t, rows.Next(), "unexpected data") + err = rows.Scan(&id, &k, &c, &dt, &vv, &ts) + require.NoError(t, err) + columnsAsExpected(t, columns, strings.Split("1,1,,,,", ",")) + require.Truef(t, rows.Next(), "unexpected data") + err = rows.Scan(&id, &k, &c, &dt, &vv, &ts) + require.NoError(t, err) + columnsAsExpected(t, columns, strings.Split("1,2,a,,,", ",")) + require.Truef(t, rows.Next(), "unexpected data") + err = rows.Scan(&id, &k, &c, &dt, &vv, &ts) + require.NoError(t, err) + columnsAsExpected(t, columns, strings.Split("1,3,a,,,", ",")) + require.Truef(t, rows.Next(), "unexpected data") + err = rows.Scan(&id, &k, &c, &dt, &vv, &ts) + require.NoError(t, err) + columnsAsExpected(t, columns, strings.Split("1,4,a,,,", ",")) + }) + + // Also test for case-insensitivity + cli.runTestsOnNewDB(t, func(config *mysql.Config) { + config.AllowAllFiles = true + config.Params["sql_mode"] = "''" + }, "LoadData", func(db *testkit.DBTestKit) { + db.MustExec("use test") + db.MustExec("drop table if exists t66") + db.MustExec("create table t66 (id int primary key,k int,c varchar(10),dt date,vv char(1),ts datetime)") + // We modify the upper case and lower case in the column list to test the case-insensitivity + db.MustExec(fmt.Sprintf("LOAD DATA LOCAL INFILE '%s' INTO TABLE t66 FIELDS TERMINATED BY ',' ENCLOSED BY '\\\"' IGNORE 1 LINES (K,Id,c,dT,Vv,Ts)", path)) + rows := db.MustQuery("select * from t66") + var ( + id sql.NullString + k sql.NullString + c sql.NullString + dt sql.NullString + vv sql.NullString + ts sql.NullString + ) + columns := []*sql.NullString{&k, &id, &c, &dt, &vv, &ts} + require.Truef(t, rows.Next(), "unexpected data") + err := rows.Scan(&id, &k, &c, &dt, &vv, &ts) + require.NoError(t, err) + columnsAsExpected(t, columns, strings.Split("1,1,,2022-04-19,a,2022-04-19 00:00:01", ",")) + require.Truef(t, rows.Next(), "unexpected data") + err = rows.Scan(&id, &k, &c, &dt, &vv, &ts) + require.NoError(t, err) + columnsAsExpected(t, columns, strings.Split("1,2,a,2022-04-19,a,2022-04-19 00:00:01", ",")) + require.Truef(t, rows.Next(), "unexpected data") + err = rows.Scan(&id, &k, &c, &dt, &vv, &ts) + require.NoError(t, err) + columnsAsExpected(t, columns, strings.Split("1,3,a,2022-04-19,a,2022-04-19 00:00:01", ",")) + require.Truef(t, rows.Next(), "unexpected data") + err = rows.Scan(&id, &k, &c, &dt, &vv, &ts) + require.NoError(t, err) + columnsAsExpected(t, columns, strings.Split("1,4,a,2022-04-19,a,2022-04-19 00:00:01", ",")) + }) +} + +func columnsAsExpected(t *testing.T, columns []*sql.NullString, expected []string) { + require.Equal(t, len(columns), len(expected)) + + for i := 0; i < len(columns); i++ { + require.Equal(t, expected[i], columns[i].String) + } +} + func (cli *testServerClient) runTestLoadData(t *testing.T, server *Server) { fp, err := os.CreateTemp("", "load_data_test.csv") require.NoError(t, err) diff --git a/server/tidb_serial_test.go b/server/tidb_serial_test.go index affce842d3df3..e2b119e4b1331 100644 --- a/server/tidb_serial_test.go +++ b/server/tidb_serial_test.go @@ -40,6 +40,7 @@ func TestLoadData1(t *testing.T) { ts, cleanup := createTidbTestSuite(t) defer cleanup() + ts.runTestLoadDataWithColumnList(t, ts.server) ts.runTestLoadData(t, ts.server) ts.runTestLoadDataWithSelectIntoOutfile(t, ts.server) ts.runTestLoadDataForSlowLog(t, ts.server) diff --git a/server/util_test.go b/server/util_test.go index 889c2512eacad..7a5040b43cd3c 100644 --- a/server/util_test.go +++ b/server/util_test.go @@ -70,7 +70,7 @@ func TestDumpBinaryTime(t *testing.T) { d = dumpBinaryDateTime(nil, parsedTime) require.Equal(t, []byte{0}, d) - myDuration, err := types.ParseDuration(sc, "0000-00-00 00:00:00.000000", 6) + myDuration, _, err := types.ParseDuration(sc, "0000-00-00 00:00:00.000000", 6) require.NoError(t, err) d = dumpBinaryTime(myDuration.Duration) require.Equal(t, []byte{0}, d) @@ -194,7 +194,7 @@ func TestDumpTextValue(t *testing.T) { require.NoError(t, err) require.Equal(t, "2017-01-06 00:00:00", mustDecodeStr(t, bs)) - duration, err := types.ParseDuration(sc, "11:30:45", 0) + duration, _, err := types.ParseDuration(sc, "11:30:45", 0) require.NoError(t, err) d.SetMysqlDuration(duration) columns[0].Type = mysql.TypeDuration diff --git a/session/BUILD.bazel b/session/BUILD.bazel new file mode 100644 index 0000000000000..a48f8238cc5ca --- /dev/null +++ b/session/BUILD.bazel @@ -0,0 +1,167 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "session", + srcs = [ + "advisory_locks.go", + "bootstrap.go", + "nontransactional.go", + "schema_amender.go", + "session.go", + "tidb.go", + "txn.go", + "txnmanager.go", + ], + importpath = "github.com/pingcap/tidb/session", + visibility = ["//visibility:public"], + deps = [ + "//bindinfo", + "//config", + "//ddl/placement", + "//domain", + "//errno", + "//executor", + "//expression", + "//infoschema", + "//kv", + "//meta", + "//metrics", + "//owner", + "//parser", + "//parser/ast", + "//parser/auth", + "//parser/charset", + "//parser/format", + "//parser/model", + "//parser/mysql", + "//parser/opcode", + "//parser/terror", + "//planner", + "//planner/core", + "//plugin", + "//privilege", + "//privilege/privileges", + "//session/txninfo", + "//sessionctx", + "//sessionctx/binloginfo", + "//sessionctx/sessionstates", + "//sessionctx/stmtctx", + "//sessionctx/variable", + "//sessiontxn", + "//sessiontxn/isolation", + "//sessiontxn/legacy", + "//sessiontxn/staleread", + "//statistics", + "//statistics/handle", + "//store/driver/error", + "//store/driver/txn", + "//store/helper", + "//table", + "//table/tables", + "//table/temptable", + "//tablecodec", + "//telemetry", + "//types", + "//types/parser_driver", + "//util", + "//util/chunk", + "//util/collate", + "//util/dbterror", + "//util/execdetails", + "//util/kvcache", + "//util/logutil", + "//util/logutil/consistency", + "//util/mathutil", + "//util/memory", + "//util/parser", + "//util/rowcodec", + "//util/sem", + "//util/sli", + "//util/sqlexec", + "//util/tableutil", + "//util/timeutil", + "//util/topsql", + "//util/topsql/state", + "//util/topsql/stmtstats", + "@com_github_ngaut_pools//:pools", + "@com_github_opentracing_opentracing_go//:opentracing-go", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_pingcap_kvproto//pkg/kvrpcpb", + "@com_github_pingcap_tipb//go-binlog", + "@com_github_tikv_client_go_v2//error", + "@com_github_tikv_client_go_v2//kv", + "@com_github_tikv_client_go_v2//oracle", + "@com_github_tikv_client_go_v2//tikv", + "@com_github_tikv_client_go_v2//txnkv/transaction", + "@com_github_tikv_client_go_v2//util", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "session_test", + srcs = [ + "bench_test.go", + "bootstrap_test.go", + "bootstrap_upgrade_test.go", + "clustered_index_test.go", + "index_usage_sync_lease_test.go", + "main_test.go", + "nontransactional_test.go", + "schema_amender_test.go", + "schema_test.go", + "tidb_test.go", + ], + data = glob(["testdata/**"]), + embed = [":session"], + flaky = True, + shard_count = 50, + deps = [ + "//bindinfo", + "//config", + "//domain", + "//errno", + "//executor", + "//infoschema", + "//kv", + "//meta", + "//parser/ast", + "//parser/auth", + "//parser/model", + "//parser/mysql", + "//parser/terror", + "//planner/core", + "//sessionctx", + "//sessionctx/variable", + "//statistics", + "//store/mockstore", + "//table", + "//tablecodec", + "//testkit", + "//testkit/testdata", + "//testkit/testmain", + "//testkit/testsetup", + "//types", + "//util", + "//util/benchdaily", + "//util/chunk", + "//util/collate", + "//util/logutil", + "//util/rowcodec", + "//util/sqlexec", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_pingcap_kvproto//pkg/kvrpcpb", + "@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_client_go_v2//txnkv/transaction", + "@com_github_tikv_client_go_v2//util", + "@org_golang_x_exp//slices", + "@org_uber_go_atomic//:atomic", + "@org_uber_go_goleak//:goleak", + "@org_uber_go_zap//:zap", + "@org_uber_go_zap//zapcore", + ], +) diff --git a/session/bootstrap.go b/session/bootstrap.go index 960ca9fa3a625..d63181829993d 100644 --- a/session/bootstrap.go +++ b/session/bootstrap.go @@ -1971,6 +1971,12 @@ func doDDLWorks(s Session) { mustExecute(s, CreateAdvisoryLocks) } +// inTestSuite checks if we are bootstrapping in the context of tests. +// There are some historical differences in behavior between tests and non-tests. +func inTestSuite() bool { + return flag.Lookup("test.v") != nil || flag.Lookup("check.v") != nil +} + // doDMLWorks executes DML statements in bootstrap stage. // All the statements run in a single transaction. // TODO: sanitize. @@ -1991,58 +1997,57 @@ func doDMLWorks(s Session) { ("%", "root", "", "mysql_native_password", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "N", "Y", "Y", "Y", "Y", "Y")`) } - // Init global system variables table. + // For GLOBAL scoped system variables, insert the initial value + // into the mysql.global_variables table. This is only run on initial + // bootstrap, and in some cases we will use a different default value + // for new installs versus existing installs. + values := make([]string, 0, len(variable.GetSysVars())) for k, v := range variable.GetSysVars() { - // Only global variables should be inserted. - if v.HasGlobalScope() { - vVal := v.Value - if v.Name == variable.TiDBTxnMode && config.GetGlobalConfig().Store == "tikv" { + if !v.HasGlobalScope() { + continue + } + vVal := v.Value + switch v.Name { + case variable.TiDBTxnMode: + if config.GetGlobalConfig().Store == "tikv" { vVal = "pessimistic" } - if v.Name == variable.TiDBRowFormatVersion { - vVal = strconv.Itoa(variable.DefTiDBRowFormatV2) - } - if v.Name == variable.TiDBPartitionPruneMode { - vVal = variable.DefTiDBPartitionPruneMode - if flag.Lookup("test.v") != nil || flag.Lookup("check.v") != nil || config.CheckTableBeforeDrop { - // enable Dynamic Prune by default in test case. - vVal = string(variable.Dynamic) - } - } - if v.Name == variable.TiDBMemOOMAction { - if flag.Lookup("test.v") != nil || flag.Lookup("check.v") != nil { - // Change the OOM action to log for the test suite. - vVal = variable.OOMActionLog - } - } - if v.Name == variable.TiDBEnableChangeMultiSchema { - vVal = variable.Off - if flag.Lookup("test.v") != nil || flag.Lookup("check.v") != nil { - // enable change multi schema in test case for compatibility with old cases. - vVal = variable.On - } - } - if v.Name == variable.TiDBEnableAsyncCommit && config.GetGlobalConfig().Store == "tikv" { + case variable.TiDBEnableAsyncCommit, variable.TiDBEnable1PC: + if config.GetGlobalConfig().Store == "tikv" { vVal = variable.On } - if v.Name == variable.TiDBEnable1PC && config.GetGlobalConfig().Store == "tikv" { - vVal = variable.On + case variable.TiDBPartitionPruneMode: + if inTestSuite() || config.CheckTableBeforeDrop { + vVal = string(variable.Dynamic) } - if v.Name == variable.TiDBEnableMutationChecker { + case variable.TiDBEnableChangeMultiSchema: + if inTestSuite() { vVal = variable.On } - if v.Name == variable.TiDBEnableAutoAnalyze { - if flag.Lookup("test.v") != nil || flag.Lookup("check.v") != nil { - vVal = variable.Off - } + case variable.TiDBMemOOMAction: + if inTestSuite() { + vVal = variable.OOMActionLog } - if v.Name == variable.TiDBTxnAssertionLevel { - vVal = variable.AssertionFastStr + case variable.TiDBEnableAutoAnalyze: + if inTestSuite() { + vVal = variable.Off } - value := fmt.Sprintf(`("%s", "%s")`, strings.ToLower(k), vVal) - values = append(values, value) + // For the following sysvars, we change the default + // FOR NEW INSTALLS ONLY. In most cases you don't want to do this. + // It is better to change the value in the Sysvar struct, so that + // all installs will have the same value. + case variable.TiDBRowFormatVersion: + vVal = strconv.Itoa(variable.DefTiDBRowFormatV2) + case variable.TiDBTxnAssertionLevel: + vVal = variable.AssertionFastStr + case variable.TiDBEnableMutationChecker: + vVal = variable.On + case variable.TiDBEnablePaging: + vVal = variable.BoolToOnOff(variable.DefTiDBEnablePaging) } + value := fmt.Sprintf(`("%s", "%s")`, strings.ToLower(k), vVal) + values = append(values, value) } sql := fmt.Sprintf("INSERT HIGH_PRIORITY INTO %s.%s VALUES %s;", mysql.SystemDB, mysql.GlobalVariablesTable, strings.Join(values, ", ")) diff --git a/session/bootstrap_test.go b/session/bootstrap_test.go index d5438998cc506..6b56501d2b2eb 100644 --- a/session/bootstrap_test.go +++ b/session/bootstrap_test.go @@ -1025,3 +1025,31 @@ func TestUpgradeToVer85(t *testing.T) { require.NoError(t, r.Close()) mustExec(t, se, "delete from mysql.bind_info where default_db = 'test'") } + +func TestTiDBEnablePagingVariable(t *testing.T) { + store, dom := createStoreAndBootstrap(t) + se := createSessionAndSetID(t, store) + defer func() { require.NoError(t, store.Close()) }() + defer dom.Close() + + for _, sql := range []string{ + "select @@global.tidb_enable_paging", + "select @@session.tidb_enable_paging", + } { + r := mustExec(t, se, sql) + require.NotNil(t, r) + + req := r.NewChunk(nil) + err := r.Next(context.Background(), req) + require.NoError(t, err) + require.NotEqual(t, 0, req.NumRows()) + + rows := statistics.RowToDatums(req.GetRow(0), r.Fields()) + if variable.DefTiDBEnablePaging { + match(t, rows, "1") + } else { + match(t, rows, "0") + } + r.Close() + } +} diff --git a/session/schema_test.go b/session/schema_test.go index a76651ef8a55b..c604e03f93c9f 100644 --- a/session/schema_test.go +++ b/session/schema_test.go @@ -17,12 +17,10 @@ package session_test import ( "context" "fmt" - "sync/atomic" "testing" "time" "github.com/pingcap/failpoint" - "github.com/pingcap/tidb/config" "github.com/pingcap/tidb/domain" "github.com/pingcap/tidb/kv" "github.com/pingcap/tidb/parser/model" @@ -475,101 +473,6 @@ func TestIndexLookUpReaderChunk(t *testing.T) { require.NoError(t, rs.Close()) } -func TestDisableTxnAutoRetry(t *testing.T) { - store, clean := createMockStoreForSchemaTest(t) - defer clean() - - tk1 := testkit.NewTestKit(t, store) - tk2 := testkit.NewTestKit(t, store) - - tk1.MustExec("use test") - tk2.MustExec("use test") - - tk1.MustExec("create table no_retry (id int)") - tk1.MustExec("insert into no_retry values (1)") - tk1.MustExec("set @@tidb_disable_txn_auto_retry = 1") - - 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 tidb_disable_txn_auto_retry is set to 1. - _, err := tk1.Session().Execute(context.Background(), "commit") - require.Error(t, err) - - // session 1 starts a transaction early. - // execute a select statement to clear retry history. - tk1.MustExec("select 1") - err = tk1.Session().PrepareTxnCtx(context.Background()) - require.NoError(t, err) - // session 2 update the value. - tk2.MustExec("update no_retry set id = 4") - // AutoCommit update will retry, so it would not fail. - tk1.MustExec("update no_retry set id = 5") - - // RestrictedSQL should retry. - tk1.Session().GetSessionVars().InRestrictedSQL = true - tk1.MustExec("begin") - - tk2.MustExec("update no_retry set id = 6") - - tk1.MustExec("update no_retry set id = 7") - tk1.MustExec("commit") - - // test for disable transaction local latch - tk1.Session().GetSessionVars().InRestrictedSQL = false - defer config.RestoreFunc()() - config.UpdateGlobal(func(conf *config.Config) { - conf.TxnLocalLatches.Enabled = false - }) - tk1.MustExec("begin") - tk1.MustExec("update no_retry set id = 9") - - tk2.MustExec("update no_retry set id = 8") - - _, err = tk1.Session().Execute(context.Background(), "commit") - require.Error(t, err) - require.True(t, kv.ErrWriteConflict.Equal(err), fmt.Sprintf("err %v", err)) - require.Contains(t, err.Error(), kv.TxnRetryableMark) - tk1.MustExec("rollback") - - config.UpdateGlobal(func(conf *config.Config) { - conf.TxnLocalLatches.Enabled = true - }) - tk1.MustExec("begin") - tk2.MustExec("alter table no_retry add index idx(id)") - tk2.MustQuery("select * from no_retry").Check(testkit.Rows("8")) - tk1.MustExec("update no_retry set id = 10") - _, err = tk1.Session().Execute(context.Background(), "commit") - require.Error(t, err) - - // set autocommit to begin and commit - tk1.MustExec("set autocommit = 0") - tk1.MustQuery("select * from no_retry").Check(testkit.Rows("8")) - tk2.MustExec("update no_retry set id = 11") - tk1.MustExec("update no_retry set id = 12") - _, err = tk1.Session().Execute(context.Background(), "set autocommit = 1") - require.Error(t, err) - require.True(t, kv.ErrWriteConflict.Equal(err), fmt.Sprintf("err %v", err)) - require.Contains(t, err.Error(), kv.TxnRetryableMark) - tk1.MustExec("rollback") - tk2.MustQuery("select * from no_retry").Check(testkit.Rows("11")) - - tk1.MustExec("set autocommit = 0") - tk1.MustQuery("select * from no_retry").Check(testkit.Rows("11")) - tk2.MustExec("update no_retry set id = 13") - tk1.MustExec("update no_retry set id = 14") - _, err = tk1.Session().Execute(context.Background(), "commit") - require.Error(t, err) - require.True(t, kv.ErrWriteConflict.Equal(err), fmt.Sprintf("err %v", err)) - require.Contains(t, err.Error(), kv.TxnRetryableMark) - tk1.MustExec("rollback") - tk2.MustQuery("select * from no_retry").Check(testkit.Rows("13")) -} - func TestTxnSize(t *testing.T) { store, clean := createMockStoreForSchemaTest(t) defer clean() @@ -587,63 +490,6 @@ func TestTxnSize(t *testing.T) { require.Greater(t, txn.Size(), 0) } -func TestLoadSchemaFailed(t *testing.T) { - originalRetryTime := domain.SchemaOutOfDateRetryTimes.Load() - originalRetryInterval := domain.SchemaOutOfDateRetryInterval.Load() - domain.SchemaOutOfDateRetryTimes.Store(3) - domain.SchemaOutOfDateRetryInterval.Store(20 * time.Millisecond) - defer func() { - domain.SchemaOutOfDateRetryTimes.Store(originalRetryTime) - domain.SchemaOutOfDateRetryInterval.Store(originalRetryInterval) - }() - - store, clean := createMockStoreForSchemaTest(t) - defer clean() - - tk := testkit.NewTestKit(t, store) - tk1 := testkit.NewTestKit(t, store) - tk2 := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk1.MustExec("use test") - tk2.MustExec("use test") - - tk.MustExec("create table t (a int);") - tk.MustExec("create table t1 (a int);") - tk.MustExec("create table t2 (a int);") - - tk1.MustExec("begin") - tk2.MustExec("begin") - - // Make sure loading information schema is failed and server is invalid. - require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/domain/ErrorMockReloadFailed", `return(true)`)) - defer func() { require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/domain/ErrorMockReloadFailed")) }() - require.Error(t, domain.GetDomain(tk.Session()).Reload()) - - lease := domain.GetDomain(tk.Session()).DDL().GetLease() - time.Sleep(lease * 2) - - // Make sure executing insert statement is failed when server is invalid. - require.Error(t, tk.ExecToErr("insert t values (100);")) - - tk1.MustExec("insert t1 values (100);") - tk2.MustExec("insert t2 values (100);") - - require.Error(t, tk1.ExecToErr("commit")) - - ver, err := store.CurrentVersion(kv.GlobalTxnScope) - require.NoError(t, err) - require.NotNil(t, ver) - - require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/domain/ErrorMockReloadFailed")) - time.Sleep(lease * 2) - - tk.MustExec("drop table if exists t;") - tk.MustExec("create table t (a int);") - tk.MustExec("insert t values (100);") - // Make sure insert to table t2 transaction executes. - tk2.MustExec("commit") -} - func TestValidationRecursion(t *testing.T) { // We have to expect that validation functions will call GlobalVarsAccessor.GetGlobalSysVar(). // This tests for a regression where GetGlobalSysVar() can not safely call the validation @@ -665,182 +511,6 @@ func TestValidationRecursion(t *testing.T) { require.Equal(t, "test", val) } -func TestSchemaCheckerSQL(t *testing.T) { - store, clean := createMockStoreForSchemaTest(t) - defer clean() - - tk := testkit.NewTestKit(t, store) - tk1 := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk1.MustExec("use test") - - // create table - tk.MustExec(`create table t (id int, c int);`) - tk.MustExec(`create table t1 (id int, c int);`) - // insert data - tk.MustExec(`insert into t values(1, 1);`) - - // The schema version is out of date in the first transaction, but the SQL can be retried. - tk.MustExec("set @@tidb_disable_txn_auto_retry = 0") - tk.MustExec(`begin;`) - tk1.MustExec(`alter table t add index idx(c);`) - tk.MustExec(`insert into t values(2, 2);`) - tk.MustExec(`commit;`) - - // The schema version is out of date in the first transaction, and the SQL can't be retried. - atomic.StoreUint32(&session.SchemaChangedWithoutRetry, 1) - defer func() { - atomic.StoreUint32(&session.SchemaChangedWithoutRetry, 0) - }() - tk.MustExec(`begin;`) - tk1.MustExec(`alter table t modify column c bigint;`) - tk.MustExec(`insert into t values(3, 3);`) - err := tk.ExecToErr(`commit;`) - require.True(t, terror.ErrorEqual(err, domain.ErrInfoSchemaChanged), fmt.Sprintf("err %v", err)) - - // But the transaction related table IDs aren't in the updated table IDs. - tk.MustExec(`begin;`) - tk1.MustExec(`alter table t add index idx2(c);`) - tk.MustExec(`insert into t1 values(4, 4);`) - tk.MustExec(`commit;`) - - // Test for "select for update". - tk.MustExec(`begin;`) - tk1.MustExec(`alter table t add index idx3(c);`) - tk.MustQuery(`select * from t for update`) - require.Error(t, tk.ExecToErr(`commit;`)) - - // Repeated tests for partitioned table - tk.MustExec(`create table pt (id int, c int) partition by hash (id) partitions 3`) - tk.MustExec(`insert into pt values(1, 1);`) - // The schema version is out of date in the first transaction, and the SQL can't be retried. - tk.MustExec(`begin;`) - tk1.MustExec(`alter table pt modify column c bigint;`) - tk.MustExec(`insert into pt values(3, 3);`) - err = tk.ExecToErr(`commit;`) - require.True(t, terror.ErrorEqual(err, domain.ErrInfoSchemaChanged), fmt.Sprintf("err %v", err)) - - // But the transaction related table IDs aren't in the updated table IDs. - tk.MustExec(`begin;`) - tk1.MustExec(`alter table pt add index idx2(c);`) - tk.MustExec(`insert into t1 values(4, 4);`) - tk.MustExec(`commit;`) - - // Test for "select for update". - tk.MustExec(`begin;`) - tk1.MustExec(`alter table pt add index idx3(c);`) - tk.MustQuery(`select * from pt for update`) - require.Error(t, tk.ExecToErr(`commit;`)) - - // Test for "select for update". - tk.MustExec(`begin;`) - tk1.MustExec(`alter table pt add index idx4(c);`) - tk.MustQuery(`select * from pt partition (p1) for update`) - require.Error(t, tk.ExecToErr(`commit;`)) -} - -func TestSchemaCheckerTempTable(t *testing.T) { - store, clean := createMockStoreForSchemaTest(t) - defer clean() - - tk1 := testkit.NewTestKit(t, store) - tk2 := testkit.NewTestKit(t, store) - - tk1.MustExec("use test") - tk2.MustExec("use test") - - // create table - tk1.MustExec(`drop table if exists normal_table`) - tk1.MustExec(`create table normal_table (id int, c int);`) - defer tk1.MustExec(`drop table if exists normal_table`) - tk1.MustExec(`drop table if exists temp_table`) - tk1.MustExec(`create global temporary table temp_table (id int primary key, c int) on commit delete rows;`) - defer tk1.MustExec(`drop table if exists temp_table`) - - // The schema version is out of date in the first transaction, and the SQL can't be retried. - atomic.StoreUint32(&session.SchemaChangedWithoutRetry, 1) - defer func() { - atomic.StoreUint32(&session.SchemaChangedWithoutRetry, 0) - }() - - // It's fine to change the schema of temporary tables. - tk1.MustExec(`begin;`) - tk2.MustExec(`alter table temp_table modify column c tinyint;`) - tk1.MustExec(`insert into temp_table values(3, 3);`) - tk1.MustExec(`commit;`) - - tk1.MustExec("begin pessimistic") - tk2.MustExec(`alter table temp_table modify column c int;`) - tk1.MustQuery(`select * from temp_table for update;`).Check(testkit.Rows()) - tk1.MustExec(`commit;`) - - tk1.MustExec("begin pessimistic") - tk2.MustExec(`alter table temp_table modify column c smallint;`) - tk1.MustExec(`insert into temp_table values(3, 4);`) - tk1.MustQuery(`select * from temp_table for update;`).Check(testkit.Rows("3 4")) - tk1.MustExec(`commit;`) - - tk1.MustExec("begin pessimistic") - tk2.MustExec(`alter table temp_table modify column c bigint;`) - tk1.MustQuery(`select * from temp_table where id=1 for update;`).Check(testkit.Rows()) - tk1.MustExec(`commit;`) - - tk1.MustExec("begin pessimistic") - tk2.MustExec(`alter table temp_table modify column c smallint;`) - tk1.MustExec("insert into temp_table values (1, 2), (2, 3), (4, 5)") - tk1.MustQuery(`select * from temp_table where id=1 for update;`).Check(testkit.Rows("1 2")) - tk1.MustExec(`commit;`) - - tk1.MustExec("begin pessimistic") - tk2.MustExec(`alter table temp_table modify column c int;`) - tk1.MustQuery(`select * from temp_table where id=1 for update;`).Check(testkit.Rows()) - tk1.MustExec(`commit;`) - - tk1.MustExec("begin pessimistic") - tk2.MustExec(`alter table temp_table modify column c bigint;`) - tk1.MustQuery(`select * from temp_table where id in (1, 2, 3) for update;`).Check(testkit.Rows()) - tk1.MustExec(`commit;`) - - tk1.MustExec("begin pessimistic") - tk2.MustExec(`alter table temp_table modify column c int;`) - tk1.MustExec("insert into temp_table values (1, 2), (2, 3), (4, 5)") - tk1.MustQuery(`select * from temp_table where id in (1, 2, 3) for update;`).Check(testkit.Rows("1 2", "2 3")) - tk1.MustExec(`commit;`) - - tk1.MustExec("insert into normal_table values(1, 2)") - tk1.MustExec("begin pessimistic") - tk2.MustExec(`alter table temp_table modify column c int;`) - tk1.MustExec(`insert into temp_table values(1, 5);`) - tk1.MustQuery(`select * from temp_table, normal_table where temp_table.id = normal_table.id for update;`).Check(testkit.Rows("1 5 1 2")) - tk1.MustExec(`commit;`) - - tk1.MustExec("begin pessimistic") - tk2.MustExec(`alter table normal_table modify column c bigint;`) - tk1.MustQuery(`select * from temp_table, normal_table where temp_table.id = normal_table.id for update;`).Check(testkit.Rows()) - tk1.MustExec(`commit;`) - - // Truncate will modify table ID. - tk1.MustExec(`begin;`) - tk2.MustExec(`truncate table temp_table;`) - tk1.MustExec(`insert into temp_table values(3, 3);`) - tk1.MustExec(`commit;`) - - // It reports error when also changing the schema of a normal table. - tk1.MustExec(`begin;`) - tk2.MustExec(`alter table normal_table modify column c bigint;`) - tk1.MustExec(`insert into temp_table values(3, 3);`) - tk1.MustExec(`insert into normal_table values(3, 3);`) - err := tk1.ExecToErr(`commit;`) - require.True(t, terror.ErrorEqual(err, domain.ErrInfoSchemaChanged), fmt.Sprintf("err %v", err)) - - tk1.MustExec("begin pessimistic") - tk2.MustExec(`alter table normal_table modify column c int;`) - tk1.MustExec(`insert into temp_table values(1, 6);`) - tk1.MustQuery(`select * from temp_table, normal_table where temp_table.id = normal_table.id for update;`).Check(testkit.Rows("1 6 1 2")) - err = tk1.ExecToErr(`commit;`) - require.True(t, terror.ErrorEqual(err, domain.ErrInfoSchemaChanged), fmt.Sprintf("err %v", err)) -} - func TestGlobalAndLocalTxn(t *testing.T) { // Because the PD config of check_dev_2 test is not compatible with local/global txn yet, // so we will skip this test for now. diff --git a/session/session.go b/session/session.go index 6e3320f9ddd67..c5c1ead4c65b4 100644 --- a/session/session.go +++ b/session/session.go @@ -26,6 +26,7 @@ import ( "encoding/json" stderrs "errors" "fmt" + "math/rand" "runtime/pprof" "runtime/trace" "strconv" @@ -46,6 +47,7 @@ import ( "github.com/pingcap/tidb/parser/model" "github.com/pingcap/tidb/parser/mysql" "github.com/pingcap/tidb/parser/terror" + "github.com/pingcap/tidb/sessionctx/sessionstates" "github.com/pingcap/tidb/sessiontxn" "github.com/pingcap/tidb/sessiontxn/legacy" "github.com/pingcap/tidb/sessiontxn/staleread" @@ -54,6 +56,7 @@ import ( "github.com/pingcap/tidb/table" "github.com/pingcap/tidb/table/temptable" "github.com/pingcap/tidb/util/logutil/consistency" + "github.com/pingcap/tidb/util/sem" "github.com/pingcap/tidb/util/topsql" topsqlstate "github.com/pingcap/tidb/util/topsql/state" "github.com/pingcap/tidb/util/topsql/stmtstats" @@ -531,9 +534,22 @@ func (s *session) doCommit(ctx context.Context) error { s.sessionVars.SetInTxn(false) s.ClearDiskFullOpt() }() + // check if the transaction is read-only if s.txn.IsReadOnly() { return nil } + // check if the cluster is read-only + if !s.sessionVars.InRestrictedSQL && variable.RestrictedReadOnly.Load() || variable.VarTiDBSuperReadOnly.Load() { + // It is not internal SQL, and the cluster has one of RestrictedReadOnly or SuperReadOnly + // We need to privilege check again: a privilege check occurred during planning, but we need + // to prevent the case that a long running auto-commit statement is now trying to commit. + pm := privilege.GetPrivilegeManager(s) + roles := s.sessionVars.ActiveRoles + if pm != nil && !pm.HasExplicitlyGrantedDynamicPrivilege(roles, "RESTRICTED_REPLICA_WRITER_ADMIN", false) { + s.RollbackTxn(ctx) + return plannercore.ErrSQLInReadOnlyMode + } + } err := s.checkPlacementPolicyBeforeCommit() if err != nil { return err @@ -845,6 +861,7 @@ func (s *session) doCommitWithRetry(ctx context.Context) error { s.GetSessionVars().SetTxnIsolationLevelOneShotStateForNextTxn() s.txn.changeToInvalid() s.cleanRetryInfo() + sessiontxn.GetTxnManager(s).OnTxnEnd() }() if !s.txn.Valid() { // If the transaction is invalid, maybe it has already been rolled back by the client. @@ -955,6 +972,7 @@ func (s *session) RollbackTxn(ctx context.Context) { s.sessionVars.TxnCtx.Cleanup() s.sessionVars.CleanupTxnReadTSIfUsed() s.sessionVars.SetInTxn(false) + sessiontxn.GetTxnManager(s).OnTxnEnd() } func (s *session) GetClient() kv.Client { @@ -1914,6 +1932,10 @@ func (s *session) ExecuteStmt(ctx context.Context, stmtNode ast.StmtNode) (sqlex // Transform abstract syntax tree to a physical plan(stored in executor.ExecStmt). compiler := executor.Compiler{Ctx: s} stmt, err := compiler.Compile(ctx, stmtNode) + if err == nil { + err = sessiontxn.OptimizeWithPlanAndThenWarmUp(s, stmt.Plan) + } + if err != nil { s.rollbackOnError(ctx) @@ -1924,6 +1946,7 @@ func (s *session) ExecuteStmt(ctx context.Context, stmtNode ast.StmtNode) (sqlex } return nil, err } + durCompile := time.Since(s.sessionVars.StartTime) s.GetSessionVars().DurationCompile = durCompile if s.isInternal() { @@ -2046,17 +2069,20 @@ func runStmt(ctx context.Context, se *session, s sqlexec.Statement) (rs sqlexec. sessVars := se.sessionVars // Record diagnostic information for DML statements - if _, ok := s.(*executor.ExecStmt).StmtNode.(ast.DMLNode); ok { - defer func() { - sessVars.LastQueryInfo = variable.QueryInfo{ - TxnScope: sessVars.CheckAndGetTxnScope(), - StartTS: sessVars.TxnCtx.StartTS, - ForUpdateTS: sessVars.TxnCtx.GetForUpdateTS(), - } - if err != nil { - sessVars.LastQueryInfo.ErrMsg = err.Error() - } - }() + if stmt, ok := s.(*executor.ExecStmt).StmtNode.(ast.DMLNode); ok { + // Keep the previous queryInfo for `show session_states` because the statement needs to encode it. + if showStmt, ok := stmt.(*ast.ShowStmt); !ok || showStmt.Tp != ast.ShowSessionStates { + defer func() { + sessVars.LastQueryInfo = sessionstates.QueryInfo{ + TxnScope: sessVars.CheckAndGetTxnScope(), + StartTS: sessVars.TxnCtx.StartTS, + ForUpdateTS: sessVars.TxnCtx.GetForUpdateTS(), + } + if err != nil { + sessVars.LastQueryInfo.ErrMsg = err.Error() + } + }() + } } // Save origTxnCtx here to avoid it reset in the transaction retry. @@ -2180,7 +2206,7 @@ func (s *session) PrepareStmt(sql string) (stmtID uint32, paramCount int, fields return } - if err = sessiontxn.WarmUpTxn(s); err != nil { + if err = sessiontxn.GetTxnManager(s).AdviseWarmup(); err != nil { return } prepareExec := executor.NewPrepareExec(s, sql) @@ -2249,6 +2275,10 @@ func (s *session) cachedPointPlanExec(ctx context.Context, return nil, false, err } + if err = sessiontxn.OptimizeWithPlanAndThenWarmUp(s, execPlan); err != nil { + return nil, false, err + } + stmtCtx := s.GetSessionVars().StmtCtx stmt := &executor.ExecStmt{ GoCtx: ctx, @@ -2289,19 +2319,10 @@ func (s *session) cachedPointPlanExec(ctx context.Context, resultSet, err = stmt.PointGet(ctx, is) s.txn.changeToInvalid() case *plannercore.Update: - if err = sessiontxn.WarmUpTxn(s); err == nil { - stmtCtx.Priority = kv.PriorityHigh - resultSet, err = runStmt(ctx, s, stmt) - } + stmtCtx.Priority = kv.PriorityHigh + resultSet, err = runStmt(ctx, s, stmt) case nil: - // cache is invalid - if prepareStmt.ForUpdateRead { - err = sessiontxn.WarmUpTxn(s) - } - - if err == nil { - resultSet, err = runStmt(ctx, s, stmt) - } + resultSet, err = runStmt(ctx, s, stmt) default: prepared.CachedPlan = nil return nil, false, nil @@ -2469,7 +2490,7 @@ func (s *session) Txn(active bool) (kv.Transaction, error) { if s.sessionVars.TxnCtx.IsPessimistic { s.txn.SetOption(kv.Pessimistic, true) } - if !s.sessionVars.IsAutocommit() { + if !s.sessionVars.IsAutocommit() && s.sessionVars.SnapshotTS == 0 { s.sessionVars.SetInTxn(true) } s.sessionVars.TxnCtx.CouldRetry = s.isTxnRetryable() @@ -2505,6 +2526,11 @@ func (s *session) isTxnRetryable() bool { return false } + // When `@@tidb_snapshot` is set, it is a ready-only statement and will not cause the errors that should retry a transaction in optimistic mode. + if sessVars.SnapshotTS != 0 { + return false + } + // If the session is not InTxn, it is an auto-committed transaction. // The auto-committed transaction could always retry. if !sessVars.InTxn() { @@ -2743,7 +2769,17 @@ func (s *session) RefreshVars(ctx context.Context) error { // CreateSession4Test creates a new session environment for test. func CreateSession4Test(store kv.Storage) (Session, error) { - return CreateSession4TestWithOpt(store, nil) + se, err := CreateSession4TestWithOpt(store, nil) + if err == nil { + // Cover both chunk rpc encoding and default encoding. + // nolint:gosec + if rand.Intn(2) == 0 { + se.GetSessionVars().EnableChunkRPC = false + } else { + se.GetSessionVars().EnableChunkRPC = true + } + } + return se, err } // Opt describes the option for creating session @@ -3147,25 +3183,32 @@ func (s *session) PrepareTxnCtx(ctx context.Context) error { } // PrepareTSFuture uses to try to get ts future. -func (s *session) PrepareTSFuture(ctx context.Context) { - if s.sessionVars.SnapshotTS != 0 { - // Do nothing when @@tidb_snapshot is set. - // In case the latest tso is misused. - return +func (s *session) PrepareTSFuture(ctx context.Context, future oracle.Future, scope string) error { + if s.txn.Valid() { + return errors.New("cannot prepare ts future when txn is valid") } - if !s.txn.validOrPending() { - if staleread.IsStmtStaleness(s) { - // Do nothing when StmtCtx.IsStaleness is true - // we don't need to request tso for stale read - return - } - failpoint.Inject("assertTSONotRequest", func() { - panic("tso shouldn't be requested") - }) - // Prepare the transaction future if the transaction is invalid (at the beginning of the transaction). - txnFuture := s.getTxnFuture(ctx) - s.txn.changeInvalidToPending(txnFuture) + + failpoint.Inject("assertTSONotRequest", func() { + panic("tso shouldn't be requested") + }) + + failpoint.InjectContext(ctx, "mockGetTSFail", func() { + future = txnFailFuture{} + }) + + s.txn.changeToPending(&txnFuture{ + future: future, + store: s.store, + txnScope: scope, + }) + return nil +} + +func (s *session) GetPreparedTSFuture() oracle.Future { + if future := s.txn.txnFuture; future != nil { + return future.future } + return nil } // RefreshTxnCtx implements context.RefreshTxnCtx interface. @@ -3185,28 +3228,6 @@ func (s *session) RefreshTxnCtx(ctx context.Context) error { return sessiontxn.NewTxn(ctx, s) } -// InitTxnWithStartTS create a transaction with startTS. -func (s *session) InitTxnWithStartTS(startTS uint64) error { - if s.txn.Valid() { - return nil - } - - // no need to get txn from txnFutureCh since txn should init with startTs - txn, err := s.store.Begin(tikv.WithTxnScope(s.GetSessionVars().CheckAndGetTxnScope()), tikv.WithStartTS(startTS)) - if err != nil { - return err - } - txn.SetVars(s.sessionVars.KVVars) - setTxnAssertionLevel(txn, s.sessionVars.AssertionLevel) - s.txn.changeInvalidToValid(txn) - err = s.loadCommonGlobalVariablesIfNeeded() - if err != nil { - return err - } - s.txn.SetOption(kv.SnapInterceptor, s.getSnapshotInterceptor()) - return nil -} - // GetSnapshotWithTS returns a snapshot with ts. func (s *session) GetSnapshotWithTS(ts uint64) kv.Snapshot { snap := s.GetStore().GetSnapshot(kv.Version{Ver: ts}) @@ -3229,12 +3250,16 @@ func (s *session) ShowProcess() *util.ProcessInfo { } // GetStartTSFromSession returns the startTS in the session `se` -func GetStartTSFromSession(se interface{}) uint64 { - var startTS uint64 +func GetStartTSFromSession(se interface{}) (uint64, uint64) { + var startTS, processInfoID uint64 tmp, ok := se.(*session) if !ok { logutil.BgLogger().Error("GetStartTSFromSession failed, can't transform to session struct") - return 0 + return 0, 0 + } + processInfo := tmp.ShowProcess() + if processInfo != nil { + processInfoID = processInfo.ID } txnInfo := tmp.TxnInfo() if txnInfo != nil { @@ -3245,7 +3270,7 @@ func GetStartTSFromSession(se interface{}) uint64 { "GetStartTSFromSession getting startTS of internal session", zap.Uint64("startTS", startTS), zap.Time("start time", oracle.GetTimeFromTS(startTS))) - return startTS + return startTS, processInfoID } // logStmt logs some crucial SQL including: CREATE USER/GRANT PRIVILEGE/CHANGE PASSWORD/DDL etc and normal SQL @@ -3299,8 +3324,9 @@ func logGeneralQuery(execStmt *executor.ExecStmt, s *session, isPrepared bool) { zap.Uint64("txnStartTS", vars.TxnCtx.StartTS), zap.Uint64("forUpdateTS", vars.TxnCtx.GetForUpdateTS()), zap.Bool("isReadConsistency", vars.IsIsolation(ast.ReadCommitted)), - zap.String("current_db", vars.CurrentDB), - zap.String("txn_mode", vars.GetReadableTxnMode()), + zap.String("currentDB", vars.CurrentDB), + zap.Bool("isPessimistic", vars.TxnCtx.IsPessimistic), + zap.String("sessionTxnMode", vars.GetReadableTxnMode()), zap.String("sql", query)) } } @@ -3426,6 +3452,11 @@ func (s *session) GetInfoSchema() sessionctx.InfoschemaMetaVersion { return temptable.AttachLocalTemporaryTableInfoSchema(s, is) } +func (s *session) GetDomainInfoSchema() sessionctx.InfoschemaMetaVersion { + is := domain.GetDomain(s).InfoSchema() + return temptable.AttachLocalTemporaryTableInfoSchema(s, is) +} + func getSnapshotInfoSchema(s sessionctx.Context, snapshotTS uint64) (infoschema.InfoSchema, error) { is, err := domain.GetDomain(s).GetSnapshotInfoSchema(snapshotTS) if err != nil { @@ -3479,3 +3510,48 @@ func (s *session) getSnapshotInterceptor() kv.SnapshotInterceptor { func (s *session) GetStmtStats() *stmtstats.StatementStats { return s.stmtStats } + +// EncodeSessionStates implements SessionStatesHandler.EncodeSessionStates interface. +func (s *session) EncodeSessionStates(ctx context.Context, sctx sessionctx.Context, sessionStates *sessionstates.SessionStates) (err error) { + if err = s.sessionVars.EncodeSessionStates(ctx, sessionStates); err != nil { + return err + } + + // Encode session variables. We put it here instead of SessionVars to avoid cycle import. + sessionStates.SystemVars = make(map[string]string) + for _, sv := range variable.GetSysVars() { + switch { + case sv.Hidden, sv.HasNoneScope(), sv.HasInstanceScope(), !sv.HasSessionScope(): + // Hidden and none-scoped variables cannot be modified. + // Instance-scoped variables don't need to be encoded. + // Noop variables should also be migrated even if they are noop. + continue + case sv.ReadOnly: + // Skip read-only variables here. We encode them into SessionStates manually. + continue + case sem.IsEnabled() && sem.IsInvisibleSysVar(sv.Name): + // If they are shown, there will be a security issue. + continue + } + // Get all session variables because the default values may change between versions. + if val, keep, err := variable.GetSessionStatesSystemVar(s.sessionVars, sv.Name); err == nil && keep { + sessionStates.SystemVars[sv.Name] = val + } + } + return +} + +// DecodeSessionStates implements SessionStatesHandler.DecodeSessionStates interface. +func (s *session) DecodeSessionStates(ctx context.Context, sctx sessionctx.Context, sessionStates *sessionstates.SessionStates) (err error) { + if err = s.sessionVars.DecodeSessionStates(ctx, sessionStates); err != nil { + return err + } + + // Decode session variables. + for name, val := range sessionStates.SystemVars { + if err = variable.SetSessionSystemVar(s.sessionVars, name, val); err != nil { + return err + } + } + return err +} diff --git a/session/session_test/BUILD.bazel b/session/session_test/BUILD.bazel new file mode 100644 index 0000000000000..57900ac9d97cc --- /dev/null +++ b/session/session_test/BUILD.bazel @@ -0,0 +1,28 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_test") + +go_test( + name = "session_test_test", + srcs = [ + "main_test.go", + "session_test.go", + ], + flaky = True, + shard_count = 4, + deps = [ + "//config", + "//domain", + "//kv", + "//parser/auth", + "//parser/terror", + "//planner/core", + "//session", + "//store/mockstore", + "//testkit", + "//testkit/testmain", + "//testkit/testsetup", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_stretchr_testify//require", + "@com_github_tikv_client_go_v2//tikv", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/session/session_test/main_test.go b/session/session_test/main_test.go new file mode 100644 index 0000000000000..b98e798a83a8b --- /dev/null +++ b/session/session_test/main_test.go @@ -0,0 +1,79 @@ +// 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 session_test + +import ( + "flag" + "testing" + "time" + + "github.com/pingcap/tidb/config" + "github.com/pingcap/tidb/kv" + "github.com/pingcap/tidb/session" + "github.com/pingcap/tidb/store/mockstore" + "github.com/pingcap/tidb/testkit/testmain" + "github.com/pingcap/tidb/testkit/testsetup" + "github.com/stretchr/testify/require" + "github.com/tikv/client-go/v2/tikv" + "go.uber.org/goleak" +) + +func TestMain(m *testing.M) { + testmain.ShortCircuitForBench(m) + + testsetup.SetupForCommonTest() + + flag.Parse() + config.UpdateGlobal(func(conf *config.Config) { + conf.TiKVClient.AsyncCommit.SafeWindow = 0 + conf.TiKVClient.AsyncCommit.AllowedClockDrift = 0 + }) + tikv.EnableFailpoints() + opts := []goleak.Option{ + // TODO: figure the reason and shorten this list + goleak.IgnoreTopFunction("github.com/golang/glog.(*loggingT).flushDaemon"), + goleak.IgnoreTopFunction("github.com/tikv/client-go/v2/internal/retry.newBackoffFn.func1"), + goleak.IgnoreTopFunction("go.etcd.io/etcd/client/v3.waitRetryBackoff"), + goleak.IgnoreTopFunction("go.etcd.io/etcd/client/pkg/v3/logutil.(*MergeLogger).outputLoop"), + goleak.IgnoreTopFunction("go.opencensus.io/stats/view.(*worker).start"), + goleak.IgnoreTopFunction("google.golang.org/grpc.(*addrConn).resetTransport"), + goleak.IgnoreTopFunction("google.golang.org/grpc.(*ccBalancerWrapper).watcher"), + goleak.IgnoreTopFunction("google.golang.org/grpc/internal/transport.(*controlBuffer).get"), + goleak.IgnoreTopFunction("google.golang.org/grpc/internal/transport.(*http2Client).keepalive"), + goleak.IgnoreTopFunction("internal/poll.runtime_pollWait"), + goleak.IgnoreTopFunction("net/http.(*persistConn).writeLoop"), + } + callback := func(i int) int { + // wait for MVCCLevelDB to close, MVCCLevelDB will be closed in one second + time.Sleep(time.Second) + return i + } + goleak.VerifyTestMain(testmain.WrapTestingM(m, callback), opts...) +} +func createMockStoreForSchemaTest(t *testing.T, opts ...mockstore.MockTiKVStoreOption) (kv.Storage, func()) { + store, err := mockstore.NewMockStore(opts...) + require.NoError(t, err) + session.DisableStats4Test() + dom, err := session.BootstrapSession(store) + require.NoError(t, err) + + dom.SetStatsUpdating(true) + + clean := func() { + dom.Close() + require.NoError(t, store.Close()) + } + return store, clean +} diff --git a/session/session_test/session_test.go b/session/session_test/session_test.go new file mode 100644 index 0000000000000..2a0f95fcbc473 --- /dev/null +++ b/session/session_test/session_test.go @@ -0,0 +1,405 @@ +// 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 session_test + +import ( + "context" + "fmt" + "sync" + "sync/atomic" + "testing" + "time" + + "github.com/pingcap/failpoint" + "github.com/pingcap/tidb/config" + "github.com/pingcap/tidb/domain" + "github.com/pingcap/tidb/kv" + "github.com/pingcap/tidb/parser/auth" + "github.com/pingcap/tidb/parser/terror" + plannercore "github.com/pingcap/tidb/planner/core" + "github.com/pingcap/tidb/session" + "github.com/pingcap/tidb/testkit" + "github.com/stretchr/testify/require" +) + +func TestSchemaCheckerSQL(t *testing.T) { + store, clean := createMockStoreForSchemaTest(t) + defer clean() + + tk := testkit.NewTestKit(t, store) + tk1 := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk1.MustExec("use test") + + // create table + tk.MustExec(`create table t (id int, c int);`) + tk.MustExec(`create table t1 (id int, c int);`) + // insert data + tk.MustExec(`insert into t values(1, 1);`) + + // The schema version is out of date in the first transaction, but the SQL can be retried. + tk.MustExec("set @@tidb_disable_txn_auto_retry = 0") + tk.MustExec(`begin;`) + tk1.MustExec(`alter table t add index idx(c);`) + tk.MustExec(`insert into t values(2, 2);`) + tk.MustExec(`commit;`) + + // The schema version is out of date in the first transaction, and the SQL can't be retried. + atomic.StoreUint32(&session.SchemaChangedWithoutRetry, 1) + defer func() { + atomic.StoreUint32(&session.SchemaChangedWithoutRetry, 0) + }() + tk.MustExec(`begin;`) + tk1.MustExec(`alter table t modify column c bigint;`) + tk.MustExec(`insert into t values(3, 3);`) + err := tk.ExecToErr(`commit;`) + require.True(t, terror.ErrorEqual(err, domain.ErrInfoSchemaChanged), fmt.Sprintf("err %v", err)) + + // But the transaction related table IDs aren't in the updated table IDs. + tk.MustExec(`begin;`) + tk1.MustExec(`alter table t add index idx2(c);`) + tk.MustExec(`insert into t1 values(4, 4);`) + tk.MustExec(`commit;`) + + // Test for "select for update". + tk.MustExec(`begin;`) + tk1.MustExec(`alter table t add index idx3(c);`) + tk.MustQuery(`select * from t for update`) + require.Error(t, tk.ExecToErr(`commit;`)) + + // Repeated tests for partitioned table + tk.MustExec(`create table pt (id int, c int) partition by hash (id) partitions 3`) + tk.MustExec(`insert into pt values(1, 1);`) + // The schema version is out of date in the first transaction, and the SQL can't be retried. + tk.MustExec(`begin;`) + tk1.MustExec(`alter table pt modify column c bigint;`) + tk.MustExec(`insert into pt values(3, 3);`) + err = tk.ExecToErr(`commit;`) + require.True(t, terror.ErrorEqual(err, domain.ErrInfoSchemaChanged), fmt.Sprintf("err %v", err)) + + // But the transaction related table IDs aren't in the updated table IDs. + tk.MustExec(`begin;`) + tk1.MustExec(`alter table pt add index idx2(c);`) + tk.MustExec(`insert into t1 values(4, 4);`) + tk.MustExec(`commit;`) + + // Test for "select for update". + tk.MustExec(`begin;`) + tk1.MustExec(`alter table pt add index idx3(c);`) + tk.MustQuery(`select * from pt for update`) + require.Error(t, tk.ExecToErr(`commit;`)) + + // Test for "select for update". + tk.MustExec(`begin;`) + tk1.MustExec(`alter table pt add index idx4(c);`) + tk.MustQuery(`select * from pt partition (p1) for update`) + require.Error(t, tk.ExecToErr(`commit;`)) +} + +func TestSchemaCheckerTempTable(t *testing.T) { + store, clean := createMockStoreForSchemaTest(t) + defer clean() + + tk1 := testkit.NewTestKit(t, store) + tk2 := testkit.NewTestKit(t, store) + + tk1.MustExec("use test") + tk2.MustExec("use test") + + // create table + tk1.MustExec(`drop table if exists normal_table`) + tk1.MustExec(`create table normal_table (id int, c int);`) + defer tk1.MustExec(`drop table if exists normal_table`) + tk1.MustExec(`drop table if exists temp_table`) + tk1.MustExec(`create global temporary table temp_table (id int primary key, c int) on commit delete rows;`) + defer tk1.MustExec(`drop table if exists temp_table`) + + // The schema version is out of date in the first transaction, and the SQL can't be retried. + atomic.StoreUint32(&session.SchemaChangedWithoutRetry, 1) + defer func() { + atomic.StoreUint32(&session.SchemaChangedWithoutRetry, 0) + }() + + // It's fine to change the schema of temporary tables. + tk1.MustExec(`begin;`) + tk2.MustExec(`alter table temp_table modify column c tinyint;`) + tk1.MustExec(`insert into temp_table values(3, 3);`) + tk1.MustExec(`commit;`) + + tk1.MustExec("begin pessimistic") + tk2.MustExec(`alter table temp_table modify column c int;`) + tk1.MustQuery(`select * from temp_table for update;`).Check(testkit.Rows()) + tk1.MustExec(`commit;`) + + tk1.MustExec("begin pessimistic") + tk2.MustExec(`alter table temp_table modify column c smallint;`) + tk1.MustExec(`insert into temp_table values(3, 4);`) + tk1.MustQuery(`select * from temp_table for update;`).Check(testkit.Rows("3 4")) + tk1.MustExec(`commit;`) + + tk1.MustExec("begin pessimistic") + tk2.MustExec(`alter table temp_table modify column c bigint;`) + tk1.MustQuery(`select * from temp_table where id=1 for update;`).Check(testkit.Rows()) + tk1.MustExec(`commit;`) + + tk1.MustExec("begin pessimistic") + tk2.MustExec(`alter table temp_table modify column c smallint;`) + tk1.MustExec("insert into temp_table values (1, 2), (2, 3), (4, 5)") + tk1.MustQuery(`select * from temp_table where id=1 for update;`).Check(testkit.Rows("1 2")) + tk1.MustExec(`commit;`) + + tk1.MustExec("begin pessimistic") + tk2.MustExec(`alter table temp_table modify column c int;`) + tk1.MustQuery(`select * from temp_table where id=1 for update;`).Check(testkit.Rows()) + tk1.MustExec(`commit;`) + + tk1.MustExec("begin pessimistic") + tk2.MustExec(`alter table temp_table modify column c bigint;`) + tk1.MustQuery(`select * from temp_table where id in (1, 2, 3) for update;`).Check(testkit.Rows()) + tk1.MustExec(`commit;`) + + tk1.MustExec("begin pessimistic") + tk2.MustExec(`alter table temp_table modify column c int;`) + tk1.MustExec("insert into temp_table values (1, 2), (2, 3), (4, 5)") + tk1.MustQuery(`select * from temp_table where id in (1, 2, 3) for update;`).Check(testkit.Rows("1 2", "2 3")) + tk1.MustExec(`commit;`) + + tk1.MustExec("insert into normal_table values(1, 2)") + tk1.MustExec("begin pessimistic") + tk2.MustExec(`alter table temp_table modify column c int;`) + tk1.MustExec(`insert into temp_table values(1, 5);`) + tk1.MustQuery(`select * from temp_table, normal_table where temp_table.id = normal_table.id for update;`).Check(testkit.Rows("1 5 1 2")) + tk1.MustExec(`commit;`) + + tk1.MustExec("begin pessimistic") + tk2.MustExec(`alter table normal_table modify column c bigint;`) + tk1.MustQuery(`select * from temp_table, normal_table where temp_table.id = normal_table.id for update;`).Check(testkit.Rows()) + tk1.MustExec(`commit;`) + + // Truncate will modify table ID. + tk1.MustExec(`begin;`) + tk2.MustExec(`truncate table temp_table;`) + tk1.MustExec(`insert into temp_table values(3, 3);`) + tk1.MustExec(`commit;`) + + // It reports error when also changing the schema of a normal table. + tk1.MustExec(`begin;`) + tk2.MustExec(`alter table normal_table modify column c bigint;`) + tk1.MustExec(`insert into temp_table values(3, 3);`) + tk1.MustExec(`insert into normal_table values(3, 3);`) + err := tk1.ExecToErr(`commit;`) + require.True(t, terror.ErrorEqual(err, domain.ErrInfoSchemaChanged), fmt.Sprintf("err %v", err)) + + tk1.MustExec("begin pessimistic") + tk2.MustExec(`alter table normal_table modify column c int;`) + tk1.MustExec(`insert into temp_table values(1, 6);`) + tk1.MustQuery(`select * from temp_table, normal_table where temp_table.id = normal_table.id for update;`).Check(testkit.Rows("1 6 1 2")) + err = tk1.ExecToErr(`commit;`) + require.True(t, terror.ErrorEqual(err, domain.ErrInfoSchemaChanged), fmt.Sprintf("err %v", err)) +} + +func TestDisableTxnAutoRetry(t *testing.T) { + store, clean := createMockStoreForSchemaTest(t) + defer clean() + + tk1 := testkit.NewTestKit(t, store) + tk2 := testkit.NewTestKit(t, store) + + tk1.MustExec("use test") + tk2.MustExec("use test") + + tk1.MustExec("create table no_retry (id int)") + tk1.MustExec("insert into no_retry values (1)") + tk1.MustExec("set @@tidb_disable_txn_auto_retry = 1") + + 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 tidb_disable_txn_auto_retry is set to 1. + _, err := tk1.Session().Execute(context.Background(), "commit") + require.Error(t, err) + + // session 1 starts a transaction early. + // execute a select statement to clear retry history. + tk1.MustExec("select 1") + err = tk1.Session().PrepareTxnCtx(context.Background()) + require.NoError(t, err) + // session 2 update the value. + tk2.MustExec("update no_retry set id = 4") + // AutoCommit update will retry, so it would not fail. + tk1.MustExec("update no_retry set id = 5") + + // RestrictedSQL should retry. + tk1.Session().GetSessionVars().InRestrictedSQL = true + tk1.MustExec("begin") + + tk2.MustExec("update no_retry set id = 6") + + tk1.MustExec("update no_retry set id = 7") + tk1.MustExec("commit") + + // test for disable transaction local latch + tk1.Session().GetSessionVars().InRestrictedSQL = false + defer config.RestoreFunc()() + config.UpdateGlobal(func(conf *config.Config) { + conf.TxnLocalLatches.Enabled = false + }) + tk1.MustExec("begin") + tk1.MustExec("update no_retry set id = 9") + + tk2.MustExec("update no_retry set id = 8") + + _, err = tk1.Session().Execute(context.Background(), "commit") + require.Error(t, err) + require.True(t, kv.ErrWriteConflict.Equal(err), fmt.Sprintf("err %v", err)) + require.Contains(t, err.Error(), kv.TxnRetryableMark) + tk1.MustExec("rollback") + + config.UpdateGlobal(func(conf *config.Config) { + conf.TxnLocalLatches.Enabled = true + }) + tk1.MustExec("begin") + tk2.MustExec("alter table no_retry add index idx(id)") + tk2.MustQuery("select * from no_retry").Check(testkit.Rows("8")) + tk1.MustExec("update no_retry set id = 10") + _, err = tk1.Session().Execute(context.Background(), "commit") + require.Error(t, err) + + // set autocommit to begin and commit + tk1.MustExec("set autocommit = 0") + tk1.MustQuery("select * from no_retry").Check(testkit.Rows("8")) + tk2.MustExec("update no_retry set id = 11") + tk1.MustExec("update no_retry set id = 12") + _, err = tk1.Session().Execute(context.Background(), "set autocommit = 1") + require.Error(t, err) + require.True(t, kv.ErrWriteConflict.Equal(err), fmt.Sprintf("err %v", err)) + require.Contains(t, err.Error(), kv.TxnRetryableMark) + tk1.MustExec("rollback") + tk2.MustQuery("select * from no_retry").Check(testkit.Rows("11")) + + tk1.MustExec("set autocommit = 0") + tk1.MustQuery("select * from no_retry").Check(testkit.Rows("11")) + tk2.MustExec("update no_retry set id = 13") + tk1.MustExec("update no_retry set id = 14") + _, err = tk1.Session().Execute(context.Background(), "commit") + require.Error(t, err) + require.True(t, kv.ErrWriteConflict.Equal(err), fmt.Sprintf("err %v", err)) + require.Contains(t, err.Error(), kv.TxnRetryableMark) + tk1.MustExec("rollback") + tk2.MustQuery("select * from no_retry").Check(testkit.Rows("13")) +} + +// The Read-only flags are checked in the planning stage of queries, +// but this test checks we check them again at commit time. +// The main use case for this is a long-running auto-commit statement. +func TestAutoCommitRespectsReadOnly(t *testing.T) { + store, clean := createMockStoreForSchemaTest(t) + defer clean() + var wg sync.WaitGroup + tk1 := testkit.NewTestKit(t, store) + tk2 := testkit.NewTestKit(t, store) + require.True(t, tk1.Session().Auth(&auth.UserIdentity{Username: "root", Hostname: "%"}, nil, nil)) + require.True(t, tk2.Session().Auth(&auth.UserIdentity{Username: "root", Hostname: "%"}, nil, nil)) + + tk1.MustExec("create table test.auto_commit_test (a int)") + wg.Add(1) + go func() { + err := tk1.ExecToErr("INSERT INTO test.auto_commit_test VALUES (SLEEP(1))") + require.True(t, terror.ErrorEqual(err, plannercore.ErrSQLInReadOnlyMode), fmt.Sprintf("err %v", err)) + wg.Done() + }() + tk2.MustExec("SET GLOBAL tidb_restricted_read_only = 1") + err := tk2.ExecToErr("INSERT INTO test.auto_commit_test VALUES (0)") // should also be an error + require.True(t, terror.ErrorEqual(err, plannercore.ErrSQLInReadOnlyMode), fmt.Sprintf("err %v", err)) + // Reset and check with the privilege to ignore the readonly flag and continue to insert. + wg.Wait() + tk1.MustExec("SET GLOBAL tidb_restricted_read_only = 0") + tk1.MustExec("SET GLOBAL tidb_super_read_only = 0") + tk1.MustExec("GRANT RESTRICTED_REPLICA_WRITER_ADMIN on *.* to 'root'") + + wg.Add(1) + go func() { + tk1.MustExec("INSERT INTO test.auto_commit_test VALUES (SLEEP(1))") + wg.Done() + }() + tk2.MustExec("SET GLOBAL tidb_restricted_read_only = 1") + tk2.MustExec("INSERT INTO test.auto_commit_test VALUES (0)") + + // wait for go routines + wg.Wait() + tk1.MustExec("SET GLOBAL tidb_restricted_read_only = 0") + tk1.MustExec("SET GLOBAL tidb_super_read_only = 0") +} + +func TestLoadSchemaFailed(t *testing.T) { + originalRetryTime := domain.SchemaOutOfDateRetryTimes.Load() + originalRetryInterval := domain.SchemaOutOfDateRetryInterval.Load() + domain.SchemaOutOfDateRetryTimes.Store(3) + domain.SchemaOutOfDateRetryInterval.Store(20 * time.Millisecond) + defer func() { + domain.SchemaOutOfDateRetryTimes.Store(originalRetryTime) + domain.SchemaOutOfDateRetryInterval.Store(originalRetryInterval) + }() + + store, clean := createMockStoreForSchemaTest(t) + defer clean() + + tk := testkit.NewTestKit(t, store) + tk1 := testkit.NewTestKit(t, store) + tk2 := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk1.MustExec("use test") + tk2.MustExec("use test") + + tk.MustExec("create table t (a int);") + tk.MustExec("create table t1 (a int);") + tk.MustExec("create table t2 (a int);") + + tk1.MustExec("begin") + tk2.MustExec("begin") + + // Make sure loading information schema is failed and server is invalid. + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/domain/ErrorMockReloadFailed", `return(true)`)) + defer func() { require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/domain/ErrorMockReloadFailed")) }() + require.Error(t, domain.GetDomain(tk.Session()).Reload()) + + lease := domain.GetDomain(tk.Session()).DDL().GetLease() + time.Sleep(lease * 2) + + // Make sure executing insert statement is failed when server is invalid. + require.Error(t, tk.ExecToErr("insert t values (100);")) + + tk1.MustExec("insert t1 values (100);") + tk2.MustExec("insert t2 values (100);") + + require.Error(t, tk1.ExecToErr("commit")) + + ver, err := store.CurrentVersion(kv.GlobalTxnScope) + require.NoError(t, err) + require.NotNil(t, ver) + + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/domain/ErrorMockReloadFailed")) + time.Sleep(lease * 2) + + tk.MustExec("drop table if exists t;") + tk.MustExec("create table t (a int);") + tk.MustExec("insert t values (100);") + // Make sure insert to table t2 transaction executes. + tk2.MustExec("commit") +} diff --git a/session/txn.go b/session/txn.go index 23e93e114aab0..5cb87948bd6ce 100644 --- a/session/txn.go +++ b/session/txn.go @@ -33,7 +33,6 @@ import ( "github.com/pingcap/tidb/session/txninfo" "github.com/pingcap/tidb/sessionctx" "github.com/pingcap/tidb/sessionctx/binloginfo" - "github.com/pingcap/tidb/sessiontxn" "github.com/pingcap/tidb/tablecodec" "github.com/pingcap/tidb/util/logutil" "github.com/pingcap/tidb/util/sli" @@ -137,6 +136,9 @@ func (txn *LazyTxn) resetTxnInfo( currentSQLDigest string, allSQLDigests []string, ) { + if txn.mu.TxnInfo.StartTS != 0 { + txninfo.Recorder.OnTrxEnd(&txn.mu.TxnInfo) + } txn.mu.TxnInfo = txninfo.TxnInfo{} txn.mu.TxnInfo.StartTS = startTS txn.mu.TxnInfo.State = state @@ -225,7 +227,7 @@ func (txn *LazyTxn) changeInvalidToValid(kvTxn kv.Transaction) { nil) } -func (txn *LazyTxn) changeInvalidToPending(future *txnFuture) { +func (txn *LazyTxn) changeToPending(future *txnFuture) { txn.Transaction = nil txn.txnFuture = future } @@ -271,6 +273,9 @@ func (txn *LazyTxn) changeToInvalid() { txn.mu.Lock() defer txn.mu.Unlock() + if txn.mu.TxnInfo.StartTS != 0 { + txninfo.Recorder.OnTrxEnd(&txn.mu.TxnInfo) + } txn.mu.TxnInfo = txninfo.TxnInfo{} } @@ -507,16 +512,6 @@ func (tf *txnFuture) wait() (kv.Transaction, error) { return tf.store.Begin(tikv.WithTxnScope(tf.txnScope)) } -func (s *session) getTxnFuture(ctx context.Context) *txnFuture { - scope := s.sessionVars.CheckAndGetTxnScope() - future := sessiontxn.NewOracleFuture(ctx, s, scope) - ret := &txnFuture{future: future, store: s.store, txnScope: scope} - failpoint.InjectContext(ctx, "mockGetTSFail", func() { - ret.future = txnFailFuture{} - }) - return ret -} - // HasDirtyContent checks whether there's dirty update on the given table. // Put this function here is to avoid cycle import. func (s *session) HasDirtyContent(tid int64) bool { diff --git a/session/txninfo/BUILD.bazel b/session/txninfo/BUILD.bazel new file mode 100644 index 0000000000000..1388aacaa6814 --- /dev/null +++ b/session/txninfo/BUILD.bazel @@ -0,0 +1,18 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "txninfo", + srcs = [ + "summary.go", + "txn_info.go", + ], + importpath = "github.com/pingcap/tidb/session/txninfo", + visibility = ["//visibility:public"], + deps = [ + "//parser/mysql", + "//types", + "//util/logutil", + "@com_github_tikv_client_go_v2//oracle", + "@org_uber_go_zap//:zap", + ], +) diff --git a/session/txninfo/summary.go b/session/txninfo/summary.go new file mode 100644 index 0000000000000..e26b2c534cb6a --- /dev/null +++ b/session/txninfo/summary.go @@ -0,0 +1,162 @@ +// 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 txninfo + +import ( + "container/list" + "encoding/json" + "fmt" + "hash/fnv" + "sync" + "time" + + "github.com/pingcap/tidb/types" + "github.com/tikv/client-go/v2/oracle" +) + +func digest(digests []string) uint64 { + // We use FNV-1a hash to generate the 64bit digest + // since 64bit digest use less memory and FNV-1a is faster than most of other hash algorithms + // You can refer to https://softwareengineering.stackexchange.com/questions/49550/which-hashing-algorithm-is-best-for-uniqueness-and-speed + hash := fnv.New64a() + for _, digest := range digests { + hash.Write([]byte(digest)) + } + return hash.Sum64() +} + +type trxSummaryEntry struct { + trxDigest uint64 + digests []string +} + +type trxSummaries struct { + capacity uint + + // lru cache for digest -> trxSummaryEntry + elements map[uint64]*list.Element + cache *list.List +} + +func newTrxSummaries(capacity uint) trxSummaries { + return trxSummaries{ + capacity: capacity, + cache: list.New(), + elements: make(map[uint64]*list.Element), + } +} + +func (s *trxSummaries) onTrxEnd(digests []string) { + key := digest(digests) + element, exists := s.elements[key] + if exists { + s.cache.MoveToFront(element) + return + } + e := trxSummaryEntry{ + trxDigest: key, + digests: digests, + } + s.elements[key] = s.cache.PushFront(e) + if uint(s.cache.Len()) > s.capacity { + last := s.cache.Back() + delete(s.elements, last.Value.(trxSummaryEntry).trxDigest) + s.cache.Remove(last) + } +} + +func (s *trxSummaries) dumpTrxSummary() [][]types.Datum { + var result [][]types.Datum + for element := s.cache.Front(); element != nil; element = element.Next() { + sqls := element.Value.(trxSummaryEntry).digests + // for consistency with other digests in TiDB, we calculate sum256 here to generate varchar(64) digest + digest := fmt.Sprintf("%x", element.Value.(trxSummaryEntry).trxDigest) + + res, err := json.Marshal(sqls) + if err != nil { + panic(err) + } + + result = append(result, []types.Datum{ + types.NewDatum(digest), + types.NewDatum(string(res)), + }) + } + return result +} + +func (s *trxSummaries) resize(capacity uint) { + s.capacity = capacity + for uint(s.cache.Len()) > s.capacity { + last := s.cache.Back() + delete(s.elements, last.Value.(trxSummaryEntry).trxDigest) + s.cache.Remove(last) + } +} + +// TrxHistoryRecorder is a history recorder for transaction. +type TrxHistoryRecorder struct { + mu sync.Mutex + minDuration time.Duration + summaries trxSummaries +} + +// DumpTrxSummary dumps the transaction summary to Datum for displaying in `TRX_SUMMARY` table. +func (recorder *TrxHistoryRecorder) DumpTrxSummary() [][]types.Datum { + recorder.mu.Lock() + defer recorder.mu.Unlock() + return recorder.summaries.dumpTrxSummary() +} + +// OnTrxEnd should be called when a transaction ends, ie. leaves `TIDB_TRX` table. +func (recorder *TrxHistoryRecorder) OnTrxEnd(info *TxnInfo) { + now := time.Now() + startTime := time.Unix(0, oracle.ExtractPhysical(info.StartTS)*1e6) + if now.Sub(startTime) < recorder.minDuration { + return + } + recorder.mu.Lock() + defer recorder.mu.Unlock() + recorder.summaries.onTrxEnd(info.AllSQLDigests) +} + +func newTrxHistoryRecorder(summariesCap uint) TrxHistoryRecorder { + return TrxHistoryRecorder{ + summaries: newTrxSummaries(summariesCap), + minDuration: 1 * time.Second, + } +} + +// Clean clears the history recorder. For test only. +func (recorder *TrxHistoryRecorder) Clean() { + recorder.summaries.cache = list.New() +} + +// SetMinDuration sets the minimum duration for a transaction to be recorded. +func (recorder *TrxHistoryRecorder) SetMinDuration(d time.Duration) { + recorder.mu.Lock() + defer recorder.mu.Unlock() + recorder.minDuration = d +} + +// ResizeSummaries resizes the summaries capacity. +func (recorder *TrxHistoryRecorder) ResizeSummaries(capacity uint) { + recorder.mu.Lock() + defer recorder.mu.Unlock() + recorder.summaries.resize(capacity) +} + +// Recorder is the recorder instance. +var Recorder TrxHistoryRecorder = newTrxHistoryRecorder(0) diff --git a/session/txnmanager.go b/session/txnmanager.go index 51ead60294398..19d28ae014f70 100644 --- a/session/txnmanager.go +++ b/session/txnmanager.go @@ -16,15 +16,15 @@ package session import ( "context" + "fmt" "github.com/pingcap/errors" - "github.com/pingcap/tidb/executor" + "github.com/pingcap/failpoint" "github.com/pingcap/tidb/infoschema" "github.com/pingcap/tidb/parser/ast" "github.com/pingcap/tidb/sessionctx" "github.com/pingcap/tidb/sessiontxn" "github.com/pingcap/tidb/sessiontxn/isolation" - "github.com/pingcap/tidb/sessiontxn/legacy" "github.com/pingcap/tidb/sessiontxn/staleread" ) @@ -54,10 +54,15 @@ func newTxnManager(sctx sessionctx.Context) *txnManager { } func (m *txnManager) GetTxnInfoSchema() infoschema.InfoSchema { - if m.ctxProvider == nil { - return nil + if m.ctxProvider != nil { + return m.ctxProvider.GetTxnInfoSchema() + } + + if is := m.sctx.GetDomainInfoSchema(); is != nil { + return is.(infoschema.InfoSchema) } - return m.ctxProvider.GetTxnInfoSchema() + + return nil } func (m *txnManager) GetStmtReadTS() (uint64, error) { @@ -71,7 +76,20 @@ func (m *txnManager) GetStmtForUpdateTS() (uint64, error) { if m.ctxProvider == nil { return 0, errors.New("context provider not set") } - return m.ctxProvider.GetStmtForUpdateTS() + + ts, err := m.ctxProvider.GetStmtForUpdateTS() + if err != nil { + return 0, err + } + + failpoint.Inject("assertTxnManagerForUpdateTSEqual", func() { + sessVars := m.sctx.GetSessionVars() + if txnCtxForUpdateTS := sessVars.TxnCtx.GetForUpdateTS(); sessVars.SnapshotTS == 0 && ts != txnCtxForUpdateTS { + panic(fmt.Sprintf("forUpdateTS not equal %d != %d", ts, txnCtxForUpdateTS)) + } + }) + + return ts, nil } func (m *txnManager) GetContextProvider() sessiontxn.TxnContextProvider { @@ -79,17 +97,27 @@ func (m *txnManager) GetContextProvider() sessiontxn.TxnContextProvider { } func (m *txnManager) EnterNewTxn(ctx context.Context, r *sessiontxn.EnterNewTxnRequest) error { - m.ctxProvider = m.newProviderWithRequest(r) - if err := m.ctxProvider.OnInitialize(ctx, r.Type); err != nil { + ctxProvider, err := m.newProviderWithRequest(r) + if err != nil { return err } + if err = ctxProvider.OnInitialize(ctx, r.Type); err != nil { + m.sctx.RollbackTxn(ctx) + return err + } + + m.ctxProvider = ctxProvider if r.Type == sessiontxn.EnterNewTxnWithBeginStmt { m.sctx.GetSessionVars().SetInTxn(true) } return nil } +func (m *txnManager) OnTxnEnd() { + m.ctxProvider = nil +} + // OnStmtStart is the hook that should be called when a new statement started func (m *txnManager) OnStmtStart(ctx context.Context) error { if m.ctxProvider == nil { @@ -114,38 +142,58 @@ func (m *txnManager) OnStmtRetry(ctx context.Context) error { return m.ctxProvider.OnStmtRetry(ctx) } -func (m *txnManager) Advise(tp sessiontxn.AdviceType) error { +func (m *txnManager) AdviseWarmup() error { if m.ctxProvider != nil { - return m.ctxProvider.Advise(tp) + return m.ctxProvider.AdviseWarmup() } return nil } -func (m *txnManager) newProviderWithRequest(r *sessiontxn.EnterNewTxnRequest) sessiontxn.TxnContextProvider { - if r.Provider != nil { - return r.Provider +// AdviseOptimizeWithPlan providers optimization according to the plan +func (m *txnManager) AdviseOptimizeWithPlan(plan interface{}) error { + if m.ctxProvider != nil { + return m.ctxProvider.AdviseOptimizeWithPlan(plan) } + return nil +} - txnMode := r.TxnMode - if txnMode == "" { - txnMode = m.sctx.GetSessionVars().TxnMode +func (m *txnManager) newProviderWithRequest(r *sessiontxn.EnterNewTxnRequest) (sessiontxn.TxnContextProvider, error) { + if r.Provider != nil { + return r.Provider, nil } if r.StaleReadTS > 0 { - return staleread.NewStalenessTxnContextProvider(m.sctx, r.StaleReadTS, nil) + return staleread.NewStalenessTxnContextProvider(m.sctx, r.StaleReadTS, nil), nil } - if txnMode == ast.Pessimistic { - switch m.sctx.GetSessionVars().IsolationLevelForNewTxn() { - case ast.ReadCommitted: - return isolation.NewPessimisticRCTxnContextProvider(m.sctx, r.CausalConsistencyOnly) - } + sessVars := m.sctx.GetSessionVars() + + txnMode := r.TxnMode + if txnMode == "" { + txnMode = sessVars.TxnMode } - return &legacy.SimpleTxnContextProvider{ - Sctx: m.sctx, - Pessimistic: txnMode == ast.Pessimistic, - CausalConsistencyOnly: r.CausalConsistencyOnly, - UpdateForUpdateTS: executor.UpdateForUpdateTS, + switch txnMode { + case "", ast.Optimistic: + // When txnMode is 'OPTIMISTIC' or '', the transaction should be optimistic + return isolation.NewOptimisticTxnContextProvider(m.sctx, r.CausalConsistencyOnly), nil + case ast.Pessimistic: + // When txnMode is 'PESSIMISTIC', the provider should be determined by the isolation level + switch sessVars.IsolationLevelForNewTxn() { + case ast.ReadCommitted: + return isolation.NewPessimisticRCTxnContextProvider(m.sctx, r.CausalConsistencyOnly), nil + case ast.Serializable: + // The Oracle serializable isolation is actually SI in pessimistic mode. + // Do not update ForUpdateTS when the user is using the Serializable isolation level. + // It can be used temporarily on the few occasions when an Oracle-like isolation level is needed. + // Support for this does not mean that TiDB supports serializable isolation of MySQL. + // tidb_skip_isolation_level_check should still be disabled by default. + return isolation.NewPessimisticSerializableTxnContextProvider(m.sctx, r.CausalConsistencyOnly), nil + default: + // We use Repeatable read for all other cases. + return isolation.NewPessimisticRRTxnContextProvider(m.sctx, r.CausalConsistencyOnly), nil + } + default: + return nil, errors.Errorf("Invalid txn mode '%s'", txnMode) } } diff --git a/sessionctx/BUILD.bazel b/sessionctx/BUILD.bazel new file mode 100644 index 0000000000000..3b542b3e8b0bd --- /dev/null +++ b/sessionctx/BUILD.bazel @@ -0,0 +1,37 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "sessionctx", + srcs = ["context.go"], + importpath = "github.com/pingcap/tidb/sessionctx", + visibility = ["//visibility:public"], + deps = [ + "//kv", + "//metrics", + "//parser/model", + "//sessionctx/sessionstates", + "//sessionctx/variable", + "//util", + "//util/kvcache", + "//util/sli", + "//util/topsql/stmtstats", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_kvproto//pkg/kvrpcpb", + "@com_github_pingcap_tipb//go-binlog", + "@com_github_tikv_client_go_v2//oracle", + ], +) + +go_test( + name = "sessionctx_test", + srcs = [ + "context_test.go", + "main_test.go", + ], + embed = [":sessionctx"], + deps = [ + "//testkit/testsetup", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/sessionctx/binloginfo/BUILD.bazel b/sessionctx/binloginfo/BUILD.bazel new file mode 100644 index 0000000000000..d5964ad8cd4af --- /dev/null +++ b/sessionctx/binloginfo/BUILD.bazel @@ -0,0 +1,56 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "binloginfo", + srcs = ["binloginfo.go"], + importpath = "github.com/pingcap/tidb/sessionctx/binloginfo", + visibility = ["//visibility:public"], + deps = [ + "//config", + "//kv", + "//metrics", + "//parser", + "//parser/format", + "//parser/terror", + "//sessionctx", + "//tidb-binlog/node", + "//tidb-binlog/pump_client", + "//util/logutil", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_tipb//go-binlog", + "@org_golang_google_grpc//:grpc", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "binloginfo_test", + srcs = [ + "binloginfo_test.go", + "main_test.go", + ], + embed = [":binloginfo"], + deps = [ + "//ddl", + "//domain", + "//kv", + "//parser/mysql", + "//parser/terror", + "//sessionctx", + "//sessionctx/variable", + "//table/tables", + "//testkit", + "//testkit/external", + "//testkit/testsetup", + "//tidb-binlog/pump_client", + "//types", + "//util/codec", + "//util/collate", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_pingcap_tipb//go-binlog", + "@com_github_stretchr_testify//require", + "@org_golang_google_grpc//:grpc", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/sessionctx/context.go b/sessionctx/context.go index be3329c1de4d3..5c4128412e0a0 100644 --- a/sessionctx/context.go +++ b/sessionctx/context.go @@ -24,6 +24,7 @@ import ( "github.com/pingcap/tidb/kv" "github.com/pingcap/tidb/metrics" "github.com/pingcap/tidb/parser/model" + "github.com/pingcap/tidb/sessionctx/sessionstates" "github.com/pingcap/tidb/sessionctx/variable" "github.com/pingcap/tidb/util" "github.com/pingcap/tidb/util/kvcache" @@ -41,8 +42,17 @@ type InfoschemaMetaVersion interface { SchemaMetaVersion() int64 } +// SessionStatesHandler is an interface for encoding and decoding session states. +type SessionStatesHandler interface { + // EncodeSessionStates encodes session states into a JSON. + EncodeSessionStates(context.Context, Context, *sessionstates.SessionStates) error + // DecodeSessionStates decodes a map into session states. + DecodeSessionStates(context.Context, Context, *sessionstates.SessionStates) error +} + // Context is an interface for transaction and executive args environment. type Context interface { + SessionStatesHandler // NewTxn creates a new transaction for further execution. // If old transaction is valid, it is committed first. // It's used in BEGIN statement and DDL statements to commit old transaction. @@ -78,9 +88,14 @@ type Context interface { // Deprecated: the semantics of session.GetInfoSchema() is ambiguous // If you want to get the infoschema of the current transaction in SQL layer, use sessiontxn.GetTxnManager(ctx).GetTxnInfoSchema() - // If you want to get the latest infoschema use domain.GetDomain(ctx).GetInfoSchema() + // If you want to get the latest infoschema use `GetDomainInfoSchema` GetInfoSchema() InfoschemaMetaVersion + // GetDomainInfoSchema returns the latest information schema in domain + // Different with `domain.InfoSchema()`, the information schema returned by this method + // includes the temporary table definitions stored in session + GetDomainInfoSchema() InfoschemaMetaVersion + GetSessionVars() *variable.SessionVars GetSessionManager() util.SessionManager @@ -94,10 +109,6 @@ type Context interface { // only used to daemon session like `statsHandle` to detect global variable change. RefreshVars(context.Context) error - // InitTxnWithStartTS initializes a transaction with startTS. - // It should be called right before we builds an executor. - InitTxnWithStartTS(startTS uint64) error - // GetSnapshotWithTS returns a snapshot with start ts GetSnapshotWithTS(ts uint64) kv.Snapshot @@ -140,7 +151,9 @@ type Context interface { // HasLockedTables uses to check whether this session locked any tables. HasLockedTables() bool // PrepareTSFuture uses to prepare timestamp by future. - PrepareTSFuture(ctx context.Context) + PrepareTSFuture(ctx context.Context, future oracle.Future, scope string) error + // GetPreparedTSFuture returns the prepared ts future + GetPreparedTSFuture() oracle.Future // StoreIndexUsage stores the index usage information. StoreIndexUsage(tblID int64, idxID int64, rowsSelected int64) // GetTxnWriteThroughputSLI returns the TxnWriteThroughputSLI. diff --git a/sessionctx/sessionstates/BUILD.bazel b/sessionctx/sessionstates/BUILD.bazel new file mode 100644 index 0000000000000..ba5cb9254f9f8 --- /dev/null +++ b/sessionctx/sessionstates/BUILD.bazel @@ -0,0 +1,25 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "sessionstates", + srcs = ["session_states.go"], + importpath = "github.com/pingcap/tidb/sessionctx/sessionstates", + visibility = ["//visibility:public"], + deps = [ + "//parser/types", + "//types", + ], +) + +go_test( + name = "sessionstates_test", + srcs = ["session_states_test.go"], + deps = [ + "//errno", + "//parser/mysql", + "//sessionctx/variable", + "//testkit", + "//util/sem", + "@com_github_stretchr_testify//require", + ], +) diff --git a/sessionctx/sessionstates/session_states.go b/sessionctx/sessionstates/session_states.go new file mode 100644 index 0000000000000..baf876ff87b4f --- /dev/null +++ b/sessionctx/sessionstates/session_states.go @@ -0,0 +1,55 @@ +// 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 sessionstates + +import ( + "time" + + ptypes "github.com/pingcap/tidb/parser/types" + "github.com/pingcap/tidb/types" +) + +// QueryInfo represents the information of last executed query. It's used to expose information for test purpose. +type QueryInfo struct { + TxnScope string `json:"txn_scope"` + StartTS uint64 `json:"start_ts"` + ForUpdateTS uint64 `json:"for_update_ts"` + ErrMsg string `json:"error,omitempty"` +} + +// LastDDLInfo represents the information of last DDL. It's used to expose information for test purpose. +type LastDDLInfo struct { + Query string `json:"query"` + SeqNum uint64 `json:"seq_num"` +} + +// SessionStates contains all the states in the session that should be migrated when the session +// is migrated to another server. It is shown by `show session_states` and recovered by `set session_states`. +type SessionStates struct { + UserVars map[string]*types.Datum `json:"user-var-values,omitempty"` + UserVarTypes map[string]*ptypes.FieldType `json:"user-var-types,omitempty"` + SystemVars map[string]string `json:"sys-vars,omitempty"` + PreparedStmtID uint32 `json:"prepared-stmt-id,omitempty"` + Status uint16 `json:"status,omitempty"` + CurrentDB string `json:"current-db,omitempty"` + LastTxnInfo string `json:"txn-info,omitempty"` + LastQueryInfo *QueryInfo `json:"query-info,omitempty"` + LastDDLInfo *LastDDLInfo `json:"ddl-info,omitempty"` + LastFoundRows uint64 `json:"found-rows,omitempty"` + FoundInPlanCache bool `json:"in-plan-cache,omitempty"` + FoundInBinding bool `json:"in-binding,omitempty"` + SequenceLatestValues map[int64]int64 `json:"seq-values,omitempty"` + MPPStoreLastFailTime map[string]time.Time `json:"store-fail-time,omitempty"` +} diff --git a/sessionctx/sessionstates/session_states_test.go b/sessionctx/sessionstates/session_states_test.go new file mode 100644 index 0000000000000..847f50f4e9a2b --- /dev/null +++ b/sessionctx/sessionstates/session_states_test.go @@ -0,0 +1,445 @@ +// 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 sessionstates_test + +import ( + "fmt" + "strconv" + "strings" + "testing" + "time" + + "github.com/pingcap/tidb/errno" + "github.com/pingcap/tidb/parser/mysql" + "github.com/pingcap/tidb/sessionctx/variable" + "github.com/pingcap/tidb/testkit" + "github.com/pingcap/tidb/util/sem" + "github.com/stretchr/testify/require" +) + +func TestGrammar(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + tk := testkit.NewTestKit(t, store) + rows := tk.MustQuery("show session_states").Rows() + require.Len(t, rows, 1) + tk.MustExec("set session_states '{}'") + tk.MustGetErrCode("set session_states 1", errno.ErrParse) +} + +func TestUserVars(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + tk := testkit.NewTestKit(t, store) + tk.MustExec("create table test.t1(" + + "j json, b blob, s varchar(255), st set('red', 'green', 'blue'), en enum('red', 'green', 'blue'))") + tk.MustExec("insert into test.t1 values('{\"color:\": \"red\"}', 'red', 'red', 'red,green', 'red')") + + tests := []string{ + "", + "set @%s=null", + "set @%s=1", + "set @%s=1.0e10", + "set @%s=1.0-1", + "set @%s=now()", + "set @%s=1, @%s=1.0-1", + "select @%s:=1+1", + // TiDB doesn't support following features. + //"select j into @%s from test.t1", + //"select j,b,s,st,en into @%s,@%s,@%s,@%s,@%s from test.t1", + } + + for _, tt := range tests { + tk1 := testkit.NewTestKit(t, store) + tk2 := testkit.NewTestKit(t, store) + namesNum := strings.Count(tt, "%s") + names := make([]any, 0, namesNum) + for i := 0; i < namesNum; i++ { + names = append(names, fmt.Sprintf("a%d", i)) + } + var sql string + if len(tt) > 0 { + sql = fmt.Sprintf(tt, names...) + tk1.MustExec(sql) + } + showSessionStatesAndSet(t, tk1, tk2) + for _, name := range names { + sql := fmt.Sprintf("select @%s", name) + msg := fmt.Sprintf("sql: %s, var name: %s", sql, name) + value1 := tk1.MustQuery(sql).Rows()[0][0] + value2 := tk2.MustQuery(sql).Rows()[0][0] + require.Equal(t, value1, value2, msg) + } + } +} + +func TestSystemVars(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + + tests := []struct { + stmts []string + varName string + inSessionStates bool + checkStmt string + expectedValue string + }{ + { + // normal variable + inSessionStates: true, + varName: variable.TiDBMaxTiFlashThreads, + expectedValue: strconv.Itoa(variable.DefTiFlashMaxThreads), + }, + { + // hidden variable + inSessionStates: false, + varName: variable.TiDBTxnReadTS, + }, + { + // none-scoped variable + inSessionStates: false, + varName: variable.DataDir, + expectedValue: "/usr/local/mysql/data/", + }, + { + // instance-scoped variable + inSessionStates: false, + varName: variable.TiDBGeneralLog, + expectedValue: "0", + }, + { + // global-scoped variable + inSessionStates: false, + varName: variable.TiDBAutoAnalyzeStartTime, + expectedValue: variable.DefAutoAnalyzeStartTime, + }, + { + // sem invisible variable + inSessionStates: false, + varName: variable.TiDBAllowRemoveAutoInc, + }, + { + // noop variables + stmts: []string{"set sql_buffer_result=true"}, + inSessionStates: true, + varName: "sql_buffer_result", + expectedValue: "1", + }, + { + stmts: []string{"set transaction isolation level repeatable read"}, + inSessionStates: true, + varName: "tx_isolation_one_shot", + expectedValue: "REPEATABLE-READ", + }, + { + inSessionStates: false, + varName: variable.Timestamp, + }, + { + stmts: []string{"set timestamp=100"}, + inSessionStates: true, + varName: variable.Timestamp, + expectedValue: "100", + }, + { + stmts: []string{"set rand_seed1=10000000, rand_seed2=1000000"}, + inSessionStates: true, + varName: variable.RandSeed1, + checkStmt: "select rand()", + expectedValue: "0.028870999839968048", + }, + { + stmts: []string{"set rand_seed1=10000000, rand_seed2=1000000", "select rand()"}, + inSessionStates: true, + varName: variable.RandSeed1, + checkStmt: "select rand()", + expectedValue: "0.11641535266900002", + }, + } + + if !sem.IsEnabled() { + sem.Enable() + defer sem.Disable() + } + for _, tt := range tests { + tk1 := testkit.NewTestKit(t, store) + for _, stmt := range tt.stmts { + if strings.HasPrefix(stmt, "select") { + tk1.MustQuery(stmt) + } else { + tk1.MustExec(stmt) + } + } + tk2 := testkit.NewTestKit(t, store) + rows := tk1.MustQuery("show session_states").Rows() + state := rows[0][0].(string) + msg := fmt.Sprintf("var name: '%s', expected value: '%s'", tt.varName, tt.expectedValue) + require.Equal(t, tt.inSessionStates, strings.Contains(state, tt.varName), msg) + state = strconv.Quote(state) + setSQL := fmt.Sprintf("set session_states %s", state) + tk2.MustExec(setSQL) + if len(tt.expectedValue) > 0 { + checkStmt := tt.checkStmt + if len(checkStmt) == 0 { + checkStmt = fmt.Sprintf("select @@%s", tt.varName) + } + tk2.MustQuery(checkStmt).Check(testkit.Rows(tt.expectedValue)) + } + } + + { + // The session value should not change even if the global value changes. + tk1 := testkit.NewTestKit(t, store) + tk1.MustQuery("select @@autocommit").Check(testkit.Rows("1")) + tk2 := testkit.NewTestKit(t, store) + tk2.MustExec("set global autocommit=0") + tk3 := testkit.NewTestKit(t, store) + showSessionStatesAndSet(t, tk1, tk3) + tk3.MustQuery("select @@autocommit").Check(testkit.Rows("1")) + } +} + +func TestSessionCtx(t *testing.T) { + store, clean := testkit.CreateMockStore(t) + defer clean() + tk := testkit.NewTestKit(t, store) + tk.MustExec("create table test.t1(id int)") + + tests := []struct { + setFunc func(tk *testkit.TestKit) any + checkFunc func(tk *testkit.TestKit, param any) + }{ + { + // check PreparedStmtID + checkFunc: func(tk *testkit.TestKit, param any) { + require.Equal(t, uint32(1), tk.Session().GetSessionVars().GetNextPreparedStmtID()) + }, + }, + { + // check PreparedStmtID + setFunc: func(tk *testkit.TestKit) any { + tk.MustExec("prepare stmt from 'select ?'") + return nil + }, + checkFunc: func(tk *testkit.TestKit, param any) { + require.Equal(t, uint32(2), tk.Session().GetSessionVars().GetNextPreparedStmtID()) + }, + }, + { + // check Status + checkFunc: func(tk *testkit.TestKit, param any) { + require.Equal(t, mysql.ServerStatusAutocommit, tk.Session().GetSessionVars().Status&mysql.ServerStatusAutocommit) + }, + }, + { + // check Status + setFunc: func(tk *testkit.TestKit) any { + tk.MustExec("set autocommit=0") + return nil + }, + checkFunc: func(tk *testkit.TestKit, param any) { + require.Equal(t, uint16(0), tk.Session().GetSessionVars().Status&mysql.ServerStatusAutocommit) + }, + }, + { + // check CurrentDB + checkFunc: func(tk *testkit.TestKit, param any) { + tk.MustQuery("select database()").Check(testkit.Rows("")) + }, + }, + { + // check CurrentDB + setFunc: func(tk *testkit.TestKit) any { + tk.MustExec("use test") + return nil + }, + checkFunc: func(tk *testkit.TestKit, param any) { + tk.MustQuery("select database()").Check(testkit.Rows("test")) + }, + }, + { + // check LastTxnInfo + checkFunc: func(tk *testkit.TestKit, param any) { + tk.MustQuery("select @@tidb_last_txn_info").Check(testkit.Rows("")) + }, + }, + { + // check LastTxnInfo + setFunc: func(tk *testkit.TestKit) any { + tk.MustExec("begin") + tk.MustExec("insert test.t1 value(1)") + tk.MustExec("commit") + rows := tk.MustQuery("select @@tidb_last_txn_info").Rows() + require.NotEqual(t, "", rows[0][0].(string)) + return rows + }, + checkFunc: func(tk *testkit.TestKit, param any) { + tk.MustQuery("select @@tidb_last_txn_info").Check(param.([][]interface{})) + }, + }, + { + // check LastQueryInfo + setFunc: func(tk *testkit.TestKit) any { + rows := tk.MustQuery("select @@tidb_last_query_info").Rows() + require.NotEqual(t, "", rows[0][0].(string)) + return rows + }, + checkFunc: func(tk *testkit.TestKit, param any) { + tk.MustQuery("select @@tidb_last_query_info").Check(param.([][]interface{})) + }, + }, + { + // check LastQueryInfo + setFunc: func(tk *testkit.TestKit) any { + tk.MustQuery("select * from test.t1") + startTS := tk.Session().GetSessionVars().LastQueryInfo.StartTS + require.NotEqual(t, uint64(0), startTS) + return startTS + }, + checkFunc: func(tk *testkit.TestKit, param any) { + startTS := tk.Session().GetSessionVars().LastQueryInfo.StartTS + require.Equal(t, param.(uint64), startTS) + }, + }, + { + // check LastDDLInfo + setFunc: func(tk *testkit.TestKit) any { + rows := tk.MustQuery("select @@tidb_last_ddl_info").Rows() + require.NotEqual(t, "", rows[0][0].(string)) + return rows + }, + checkFunc: func(tk *testkit.TestKit, param any) { + tk.MustQuery("select @@tidb_last_ddl_info").Check(param.([][]interface{})) + }, + }, + { + // check LastDDLInfo + setFunc: func(tk *testkit.TestKit) any { + tk.MustExec("truncate table test.t1") + rows := tk.MustQuery("select @@tidb_last_ddl_info").Rows() + require.NotEqual(t, "", rows[0][0].(string)) + return rows + }, + checkFunc: func(tk *testkit.TestKit, param any) { + tk.MustQuery("select @@tidb_last_ddl_info").Check(param.([][]interface{})) + }, + }, + { + // check LastFoundRows + setFunc: func(tk *testkit.TestKit) any { + tk.MustExec("insert test.t1 value(1), (2), (3), (4), (5)") + // SQL_CALC_FOUND_ROWS is not supported now, so we just test normal select. + rows := tk.MustQuery("select * from test.t1 limit 3").Rows() + require.Equal(t, 3, len(rows)) + return "3" + }, + checkFunc: func(tk *testkit.TestKit, param any) { + tk.MustQuery("select found_rows()").Check(testkit.Rows(param.(string))) + }, + }, + { + // check SequenceState + setFunc: func(tk *testkit.TestKit) any { + tk.MustExec("create sequence test.s") + tk.MustQuery("select nextval(test.s)").Check(testkit.Rows("1")) + tk.MustQuery("select lastval(test.s)").Check(testkit.Rows("1")) + return nil + }, + checkFunc: func(tk *testkit.TestKit, param any) { + tk.MustQuery("select lastval(test.s)").Check(testkit.Rows("1")) + tk.MustQuery("select nextval(test.s)").Check(testkit.Rows("2")) + }, + }, + { + // check MPPStoreLastFailTime + setFunc: func(tk *testkit.TestKit) any { + tk.Session().GetSessionVars().MPPStoreLastFailTime = map[string]time.Time{"store1": time.Now()} + return tk.Session().GetSessionVars().MPPStoreLastFailTime + }, + checkFunc: func(tk *testkit.TestKit, param any) { + failTime := tk.Session().GetSessionVars().MPPStoreLastFailTime + require.Equal(t, 1, len(failTime)) + tm, ok := failTime["store1"] + require.True(t, ok) + require.True(t, param.(map[string]time.Time)["store1"].Equal(tm)) + }, + }, + { + // check FoundInPlanCache + setFunc: func(tk *testkit.TestKit) any { + require.False(t, tk.Session().GetSessionVars().FoundInPlanCache) + return nil + }, + checkFunc: func(tk *testkit.TestKit, param any) { + tk.MustQuery("select @@last_plan_from_cache").Check(testkit.Rows("0")) + }, + }, + { + // check FoundInPlanCache + setFunc: func(tk *testkit.TestKit) any { + tk.MustExec("prepare stmt from 'select * from test.t1'") + tk.MustQuery("execute stmt") + tk.MustQuery("execute stmt") + require.True(t, tk.Session().GetSessionVars().FoundInPlanCache) + return nil + }, + checkFunc: func(tk *testkit.TestKit, param any) { + tk.MustQuery("select @@last_plan_from_cache").Check(testkit.Rows("1")) + }, + }, + { + // check FoundInBinding + setFunc: func(tk *testkit.TestKit) any { + require.False(t, tk.Session().GetSessionVars().FoundInBinding) + return nil + }, + checkFunc: func(tk *testkit.TestKit, param any) { + tk.MustQuery("select @@last_plan_from_binding").Check(testkit.Rows("0")) + }, + }, + { + // check FoundInBinding + setFunc: func(tk *testkit.TestKit) any { + tk.MustExec("create session binding for select * from test.t1 using select * from test.t1") + tk.MustQuery("select * from test.t1") + require.True(t, tk.Session().GetSessionVars().FoundInBinding) + return nil + }, + checkFunc: func(tk *testkit.TestKit, param any) { + tk.MustQuery("select @@last_plan_from_binding").Check(testkit.Rows("1")) + }, + }, + } + + for _, tt := range tests { + tk1 := testkit.NewTestKit(t, store) + var param any + if tt.setFunc != nil { + param = tt.setFunc(tk1) + } + tk2 := testkit.NewTestKit(t, store) + showSessionStatesAndSet(t, tk1, tk2) + tt.checkFunc(tk2, param) + } +} + +func showSessionStatesAndSet(t *testing.T, tk1, tk2 *testkit.TestKit) { + rows := tk1.MustQuery("show session_states").Rows() + require.Len(t, rows, 1) + state := rows[0][0].(string) + state = strconv.Quote(state) + setSQL := fmt.Sprintf("set session_states %s", state) + tk2.MustExec(setSQL) +} diff --git a/sessionctx/stmtctx/BUILD.bazel b/sessionctx/stmtctx/BUILD.bazel new file mode 100644 index 0000000000000..168b86f32cf62 --- /dev/null +++ b/sessionctx/stmtctx/BUILD.bazel @@ -0,0 +1,42 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "stmtctx", + srcs = ["stmtctx.go"], + importpath = "github.com/pingcap/tidb/sessionctx/stmtctx", + visibility = ["//visibility:public"], + deps = [ + "//parser", + "//parser/ast", + "//parser/model", + "//parser/mysql", + "//util/disk", + "//util/execdetails", + "//util/memory", + "//util/resourcegrouptag", + "//util/topsql/stmtstats", + "//util/tracing", + "@com_github_tikv_client_go_v2//tikvrpc", + "@com_github_tikv_client_go_v2//util", + "@org_uber_go_atomic//:atomic", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "stmtctx_test", + srcs = [ + "main_test.go", + "stmtctx_test.go", + ], + embed = [":stmtctx"], + deps = [ + "//kv", + "//testkit", + "//testkit/testsetup", + "//util/execdetails", + "@com_github_stretchr_testify//require", + "@com_github_tikv_client_go_v2//util", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/sessionctx/stmtctx/stmtctx.go b/sessionctx/stmtctx/stmtctx.go index b8fca363d955f..70cd4bec5f898 100644 --- a/sessionctx/stmtctx/stmtctx.go +++ b/sessionctx/stmtctx/stmtctx.go @@ -96,6 +96,7 @@ type StatementContext struct { SkipUTF8Check bool SkipASCIICheck bool SkipUTF8MB4Check bool + MultiSchemaInfo *model.MultiSchemaInfo // If the select statement was like 'select * from t as of timestamp ...' or in a stale read transaction // or is affected by the tidb_read_staleness session variable, then the statement will be makred as isStaleness // in stmtCtx diff --git a/sessionctx/variable/BUILD.bazel b/sessionctx/variable/BUILD.bazel new file mode 100644 index 0000000000000..c1bfa81623030 --- /dev/null +++ b/sessionctx/variable/BUILD.bazel @@ -0,0 +1,91 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "variable", + srcs = [ + "error.go", + "mock_globalaccessor.go", + "noop.go", + "removed.go", + "sequence_state.go", + "session.go", + "statusvar.go", + "sysvar.go", + "tidb_vars.go", + "variable.go", + "varsutil.go", + ], + importpath = "github.com/pingcap/tidb/sessionctx/variable", + visibility = ["//visibility:public"], + deps = [ + "//config", + "//errno", + "//kv", + "//meta/autoid", + "//metrics", + "//parser", + "//parser/ast", + "//parser/auth", + "//parser/charset", + "//parser/model", + "//parser/mysql", + "//parser/terror", + "//parser/types", + "//sessionctx/sessionstates", + "//sessionctx/stmtctx", + "//tidb-binlog/pump_client", + "//types", + "//util", + "//util/chunk", + "//util/collate", + "//util/dbterror", + "//util/execdetails", + "//util/logutil", + "//util/mathutil", + "//util/rowcodec", + "//util/stmtsummary", + "//util/stringutil", + "//util/tableutil", + "//util/tikvutil", + "//util/timeutil", + "//util/tls", + "//util/topsql/state", + "//util/versioninfo", + "@com_github_pingcap_errors//:errors", + "@com_github_tikv_client_go_v2//config", + "@com_github_tikv_client_go_v2//kv", + "@com_github_tikv_client_go_v2//oracle", + "@com_github_tikv_client_go_v2//tikv", + "@com_github_twmb_murmur3//:murmur3", + "@org_golang_x_exp//maps", + "@org_uber_go_atomic//:atomic", + ], +) + +go_test( + name = "variable_test", + srcs = [ + "main_test.go", + "mock_globalaccessor_test.go", + "session_test.go", + "statusvar_test.go", + "sysvar_test.go", + "varsutil_test.go", + ], + embed = [":variable"], + deps = [ + "//config", + "//kv", + "//parser", + "//parser/auth", + "//parser/mysql", + "//parser/terror", + "//sessionctx/stmtctx", + "//testkit/testsetup", + "//util/execdetails", + "//util/mock", + "@com_github_stretchr_testify//require", + "@com_github_tikv_client_go_v2//util", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/sessionctx/variable/noop.go b/sessionctx/variable/noop.go index 4f2cdac1aa690..6eb70beabfc99 100644 --- a/sessionctx/variable/noop.go +++ b/sessionctx/variable/noop.go @@ -24,7 +24,6 @@ import ( // but changing them has no effect on behavior. var noopSysVars = []*SysVar{ - {Scope: ScopeGlobal, Name: MaxConnections, Value: "151", Type: TypeUnsigned, MinValue: 1, MaxValue: 100000}, // It is unsafe to pretend that any variation of "read only" is enabled when the server // does not support it. It is possible that these features will be supported in future, // but until then... diff --git a/sessionctx/variable/sequence_state.go b/sessionctx/variable/sequence_state.go index bb8b468da2de9..38199b084fa81 100644 --- a/sessionctx/variable/sequence_state.go +++ b/sessionctx/variable/sequence_state.go @@ -50,3 +50,23 @@ func (ss *SequenceState) GetLastValue(sequenceID int64) (int64, bool, error) { } return 0, true, nil } + +// GetAllStates returns a copied latestValueMap. +func (ss *SequenceState) GetAllStates() map[int64]int64 { + ss.mu.Lock() + defer ss.mu.Unlock() + latestValueMap := make(map[int64]int64, len(ss.latestValueMap)) + for seqID, latestValue := range ss.latestValueMap { + latestValueMap[seqID] = latestValue + } + return latestValueMap +} + +// SetAllStates sets latestValueMap as a whole. +func (ss *SequenceState) SetAllStates(latestValueMap map[int64]int64) { + ss.mu.Lock() + defer ss.mu.Unlock() + for seqID, latestValue := range latestValueMap { + ss.latestValueMap[seqID] = latestValue + } +} diff --git a/sessionctx/variable/session.go b/sessionctx/variable/session.go index 57f71b5790a77..fe4f469e76134 100644 --- a/sessionctx/variable/session.go +++ b/sessionctx/variable/session.go @@ -16,6 +16,7 @@ package variable import ( "bytes" + "context" "crypto/tls" "encoding/binary" "fmt" @@ -41,6 +42,8 @@ import ( "github.com/pingcap/tidb/parser/model" "github.com/pingcap/tidb/parser/mysql" "github.com/pingcap/tidb/parser/terror" + ptypes "github.com/pingcap/tidb/parser/types" + "github.com/pingcap/tidb/sessionctx/sessionstates" "github.com/pingcap/tidb/sessionctx/stmtctx" pumpcli "github.com/pingcap/tidb/tidb-binlog/pump_client" "github.com/pingcap/tidb/types" @@ -740,12 +743,10 @@ type SessionVars struct { // CorrelationExpFactor is used to control the heuristic approach of row count estimation when CorrelationThreshold is not met. CorrelationExpFactor int - // CPUFactor is the CPU cost of processing one expression for one row. - CPUFactor float64 - // CopCPUFactor is the CPU cost of processing one expression for one row in coprocessor. - CopCPUFactor float64 - // CopTiFlashConcurrencyFactor is the concurrency number of computation in tiflash coprocessor. - CopTiFlashConcurrencyFactor float64 + // cpuFactor is the CPU cost of processing one expression for one row. + cpuFactor float64 + // copCPUFactor is the CPU cost of processing one expression for one row in coprocessor. + copCPUFactor float64 // networkFactor is the network cost of transferring 1 byte data. networkFactor float64 // ScanFactor is the IO cost of scanning 1 byte data on TiKV and TiFlash. @@ -754,12 +755,39 @@ type SessionVars struct { descScanFactor float64 // seekFactor is the IO cost of seeking the start value of a range in TiKV or TiFlash. seekFactor float64 - // MemoryFactor is the memory cost of storing one tuple. - MemoryFactor float64 - // DiskFactor is the IO cost of reading/writing one byte to temporary disk. - DiskFactor float64 - // ConcurrencyFactor is the CPU cost of additional one goroutine. - ConcurrencyFactor float64 + // memoryFactor is the memory cost of storing one tuple. + memoryFactor float64 + // diskFactor is the IO cost of reading/writing one byte to temporary disk. + diskFactor float64 + // concurrencyFactor is the CPU cost of additional one goroutine. + concurrencyFactor float64 + + // factors for cost model v2 + // cpuFactorV2 is the CPU factor for the Cost Model Ver2. + cpuFactorV2 float64 + // copCPUFactorV2 is the cop-cpu factor for the Cost Model Ver2. + copCPUFactorV2 float64 + // tiflashCPUFactorV2 is the cop-cpu factor for the Cost Model Ver2. + tiflashCPUFactorV2 float64 + // networkFactorV2 is the network factor for the Cost Model Ver2. + networkFactorV2 float64 + // scanFactorV2 is the scan factor for the Cost Model Ver2. + scanFactorV2 float64 + // descScanFactorV2 is the desc-scan factor for the Cost Model Ver2. + descScanFactorV2 float64 + // tiflashScanFactorV2 is the tiflash-scan factor for the Cost Model Ver2. + tiflashScanFactorV2 float64 + // seekFactorV2 is the seek factor for the Cost Model Ver2. + seekFactorV2 float64 + // memoryFactorV2 is the memory factor for the Cost Model Ver2. + memoryFactorV2 float64 + // diskFactorV2 is the disk factor for the Cost Model Ver2. + diskFactorV2 float64 + // concurrencyFactorV2 is the concurrency factor for the Cost Model Ver2. + concurrencyFactorV2 float64 + + // CopTiFlashConcurrencyFactor is the concurrency number of computation in tiflash coprocessor. + CopTiFlashConcurrencyFactor float64 // CurrInsertValues is used to record current ValuesExpr's values. // See http://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html#function_values @@ -837,9 +865,6 @@ type SessionVars struct { // DDLReorgPriority is the operation priority of adding indices. DDLReorgPriority int - // EnableChangeMultiSchema is used to control whether to enable the multi schema change. - EnableChangeMultiSchema bool - // EnableAutoIncrementInGenerated is used to control whether to allow auto incremented columns in generated columns. EnableAutoIncrementInGenerated bool @@ -1016,10 +1041,10 @@ type SessionVars struct { LastTxnInfo string // LastQueryInfo keeps track the info of last query. - LastQueryInfo QueryInfo + LastQueryInfo sessionstates.QueryInfo // LastDDLInfo keeps track the info of last DDL. - LastDDLInfo LastDDLInfo + LastDDLInfo sessionstates.LastDDLInfo // PartitionPruneMode indicates how and when to prune partitions. PartitionPruneMode atomic2.String @@ -1119,6 +1144,8 @@ type SessionVars struct { IgnorePreparedCacheCloseStmt bool // EnableNewCostInterface is a internal switch to indicates whether to use the new cost calculation interface. EnableNewCostInterface bool + // CostModelVersion is a internal switch to indicates the Cost Model Version. + CostModelVersion int // BatchPendingTiFlashCount shows the threshold of pending TiFlash tables when batch adding. BatchPendingTiFlashCount int // RcReadCheckTS indicates if ts check optimization is enabled for current session. @@ -1310,16 +1337,16 @@ func NewSessionVars() *SessionVars { LimitPushDownThreshold: DefOptLimitPushDownThreshold, CorrelationThreshold: DefOptCorrelationThreshold, CorrelationExpFactor: DefOptCorrelationExpFactor, - CPUFactor: DefOptCPUFactor, - CopCPUFactor: DefOptCopCPUFactor, + cpuFactor: DefOptCPUFactor, + copCPUFactor: DefOptCopCPUFactor, CopTiFlashConcurrencyFactor: DefOptTiFlashConcurrencyFactor, networkFactor: DefOptNetworkFactor, scanFactor: DefOptScanFactor, descScanFactor: DefOptDescScanFactor, seekFactor: DefOptSeekFactor, - MemoryFactor: DefOptMemoryFactor, - DiskFactor: DefOptDiskFactor, - ConcurrencyFactor: DefOptConcurrencyFactor, + memoryFactor: DefOptMemoryFactor, + diskFactor: DefOptDiskFactor, + concurrencyFactor: DefOptConcurrencyFactor, EnableVectorizedExpression: DefEnableVectorizedExpression, CommandValue: uint32(mysql.ComSleep), TiDBOptJoinReorderThreshold: DefTiDBOptJoinReorderThreshold, @@ -1348,7 +1375,6 @@ func NewSessionVars() *SessionVars { EnableClusteredIndex: DefTiDBEnableClusteredIndex, EnableParallelApply: DefTiDBEnableParallelApply, ShardAllocateStep: DefTiDBShardAllocateStep, - EnableChangeMultiSchema: DefTiDBChangeMultiSchema, EnablePointGetCache: DefTiDBPointGetCache, EnableAmendPessimisticTxn: DefTiDBEnableAmendPessimisticTxn, PartitionPruneMode: *atomic2.NewString(DefTiDBPartitionPruneMode), @@ -1811,6 +1837,74 @@ func (s *SessionVars) GetTemporaryTable(tblInfo *model.TableInfo) tableutil.Temp return nil } +// EncodeSessionStates saves session states into SessionStates. +func (s *SessionVars) EncodeSessionStates(ctx context.Context, sessionStates *sessionstates.SessionStates) (err error) { + // Encode user-defined variables. + s.UsersLock.RLock() + sessionStates.UserVars = make(map[string]*types.Datum, len(s.Users)) + for name, userVar := range s.Users { + sessionStates.UserVars[name] = userVar.Clone() + } + sessionStates.UserVarTypes = make(map[string]*ptypes.FieldType, len(s.UserVarTypes)) + for name, userVarType := range s.UserVarTypes { + sessionStates.UserVarTypes[name] = userVarType.Clone() + } + s.UsersLock.RUnlock() + + // Encode other session contexts. + sessionStates.PreparedStmtID = s.preparedStmtID + sessionStates.Status = s.Status + sessionStates.CurrentDB = s.CurrentDB + sessionStates.LastTxnInfo = s.LastTxnInfo + if s.LastQueryInfo.StartTS != 0 { + sessionStates.LastQueryInfo = &s.LastQueryInfo + } + if s.LastDDLInfo.SeqNum != 0 { + sessionStates.LastDDLInfo = &s.LastDDLInfo + } + sessionStates.LastFoundRows = s.LastFoundRows + sessionStates.SequenceLatestValues = s.SequenceState.GetAllStates() + sessionStates.MPPStoreLastFailTime = s.MPPStoreLastFailTime + sessionStates.FoundInPlanCache = s.PrevFoundInPlanCache + sessionStates.FoundInBinding = s.PrevFoundInBinding + return +} + +// DecodeSessionStates restores session states from SessionStates. +func (s *SessionVars) DecodeSessionStates(ctx context.Context, sessionStates *sessionstates.SessionStates) (err error) { + // Decode user-defined variables. + s.UsersLock.Lock() + s.Users = make(map[string]types.Datum, len(sessionStates.UserVars)) + for name, userVar := range sessionStates.UserVars { + s.Users[name] = *userVar.Clone() + } + s.UserVarTypes = make(map[string]*ptypes.FieldType, len(sessionStates.UserVarTypes)) + for name, userVarType := range sessionStates.UserVarTypes { + s.UserVarTypes[name] = userVarType.Clone() + } + s.UsersLock.Unlock() + + // Decode other session contexts. + s.preparedStmtID = sessionStates.PreparedStmtID + s.Status = sessionStates.Status + s.CurrentDB = sessionStates.CurrentDB + s.LastTxnInfo = sessionStates.LastTxnInfo + if sessionStates.LastQueryInfo != nil { + s.LastQueryInfo = *sessionStates.LastQueryInfo + } + if sessionStates.LastDDLInfo != nil { + s.LastDDLInfo = *sessionStates.LastDDLInfo + } + s.LastFoundRows = sessionStates.LastFoundRows + s.SequenceState.SetAllStates(sessionStates.SequenceLatestValues) + if sessionStates.MPPStoreLastFailTime != nil { + s.MPPStoreLastFailTime = sessionStates.MPPStoreLastFailTime + } + s.FoundInPlanCache = sessionStates.FoundInPlanCache + s.FoundInBinding = sessionStates.FoundInBinding + return +} + // TableDelta stands for the changed count for one table or partition. type TableDelta struct { Delta int64 @@ -2400,20 +2494,6 @@ func writeSlowLogItem(buf *bytes.Buffer, key, value string) { buf.WriteString(SlowLogRowPrefixStr + key + SlowLogSpaceMarkStr + value + "\n") } -// QueryInfo represents the information of last executed query. It's used to expose information for test purpose. -type QueryInfo struct { - TxnScope string `json:"txn_scope"` - StartTS uint64 `json:"start_ts"` - ForUpdateTS uint64 `json:"for_update_ts"` - ErrMsg string `json:"error,omitempty"` -} - -// LastDDLInfo represents the information of last DDL. It's used to expose information for test purpose. -type LastDDLInfo struct { - Query string `json:"query"` - SeqNum uint64 `json:"seq_num"` -} - // TxnReadTS indicates the value and used situation for tx_read_ts type TxnReadTS struct { readTS uint64 @@ -2465,6 +2545,51 @@ func (s *SessionVars) CleanupTxnReadTSIfUsed() { } } +// GetCPUFactor returns the session variable cpuFactor +func (s *SessionVars) GetCPUFactor() float64 { + if s.CostModelVersion == 2 { + return s.cpuFactorV2 + } + return s.cpuFactor +} + +// GetCopCPUFactor returns the session variable copCPUFactor +func (s *SessionVars) GetCopCPUFactor() float64 { + if s.CostModelVersion == 2 { + return s.copCPUFactorV2 + } + return s.copCPUFactor +} + +// GetTiFlashCPUFactor returns the session +func (s *SessionVars) GetTiFlashCPUFactor() float64 { + return s.tiflashCPUFactorV2 +} + +// GetMemoryFactor returns the session variable memoryFactor +func (s *SessionVars) GetMemoryFactor() float64 { + if s.CostModelVersion == 2 { + return s.memoryFactorV2 + } + return s.memoryFactor +} + +// GetDiskFactor returns the session variable diskFactor +func (s *SessionVars) GetDiskFactor() float64 { + if s.CostModelVersion == 2 { + return s.diskFactorV2 + } + return s.diskFactor +} + +// GetConcurrencyFactor returns the session variable concurrencyFactor +func (s *SessionVars) GetConcurrencyFactor() float64 { + if s.CostModelVersion == 2 { + return s.concurrencyFactorV2 + } + return s.concurrencyFactor +} + // GetNetworkFactor returns the session variable networkFactor // returns 0 when tbl is a temporary table. func (s *SessionVars) GetNetworkFactor(tbl *model.TableInfo) float64 { @@ -2473,6 +2598,9 @@ func (s *SessionVars) GetNetworkFactor(tbl *model.TableInfo) float64 { return 0 } } + if s.CostModelVersion == 2 { + return s.networkFactorV2 + } return s.networkFactor } @@ -2484,6 +2612,9 @@ func (s *SessionVars) GetScanFactor(tbl *model.TableInfo) float64 { return 0 } } + if s.CostModelVersion == 2 { + return s.scanFactorV2 + } return s.scanFactor } @@ -2495,9 +2626,17 @@ func (s *SessionVars) GetDescScanFactor(tbl *model.TableInfo) float64 { return 0 } } + if s.CostModelVersion == 2 { + return s.descScanFactorV2 + } return s.descScanFactor } +// GetTiFlashScanFactor returns the session variable tiflashScanFactorV2 +func (s *SessionVars) GetTiFlashScanFactor() float64 { + return s.tiflashScanFactorV2 +} + // GetSeekFactor returns the session variable seekFactor // returns 0 when tbl is a temporary table. func (s *SessionVars) GetSeekFactor(tbl *model.TableInfo) float64 { @@ -2506,5 +2645,8 @@ func (s *SessionVars) GetSeekFactor(tbl *model.TableInfo) float64 { return 0 } } + if s.CostModelVersion == 2 { + return s.seekFactorV2 + } return s.seekFactor } diff --git a/sessionctx/variable/sysvar.go b/sessionctx/variable/sysvar.go index 9ee43476be4d2..2e7865ac57040 100644 --- a/sessionctx/variable/sysvar.go +++ b/sessionctx/variable/sysvar.go @@ -27,6 +27,7 @@ import ( "github.com/pingcap/errors" "github.com/pingcap/tidb/config" "github.com/pingcap/tidb/kv" + "github.com/pingcap/tidb/metrics" "github.com/pingcap/tidb/parser/charset" "github.com/pingcap/tidb/parser/mysql" "github.com/pingcap/tidb/sessionctx/stmtctx" @@ -58,8 +59,8 @@ var defaultSysVars = []*SysVar{ {Scope: ScopeNone, Name: DataDir, Value: "/usr/local/mysql/data/"}, {Scope: ScopeNone, Name: Socket, Value: ""}, {Scope: ScopeNone, Name: "license", Value: "Apache License 2.0"}, - {Scope: ScopeNone, Name: "have_ssl", Value: "DISABLED"}, - {Scope: ScopeNone, Name: "have_openssl", Value: "DISABLED"}, + {Scope: ScopeNone, Name: "have_ssl", Value: "DISABLED", Type: TypeBool}, + {Scope: ScopeNone, Name: "have_openssl", Value: "DISABLED", Type: TypeBool}, {Scope: ScopeNone, Name: "ssl_ca", Value: ""}, {Scope: ScopeNone, Name: "ssl_cert", Value: ""}, {Scope: ScopeNone, Name: "ssl_key", Value: ""}, @@ -76,6 +77,9 @@ var defaultSysVars = []*SysVar{ } timestamp := s.StmtCtx.GetOrStoreStmtCache(stmtctx.StmtNowTsCacheKey, time.Now()).(time.Time) return types.ToString(float64(timestamp.UnixNano()) / float64(time.Second)) + }, GetStateValue: func(s *SessionVars) (string, bool, error) { + timestamp, ok := s.systems[Timestamp] + return timestamp, ok && timestamp != DefTimestamp, nil }}, {Scope: ScopeSession, Name: WarningCount, Value: "0", ReadOnly: true, skipInit: true, GetSession: func(s *SessionVars) (string, error) { return strconv.Itoa(s.SysWarningCount), nil @@ -83,11 +87,15 @@ var defaultSysVars = []*SysVar{ {Scope: ScopeSession, Name: ErrorCount, Value: "0", ReadOnly: true, skipInit: true, GetSession: func(s *SessionVars) (string, error) { return strconv.Itoa(int(s.SysErrorCount)), nil }}, - {Scope: ScopeSession, Name: LastInsertID, Value: "", skipInit: true, GetSession: func(s *SessionVars) (string, error) { + {Scope: ScopeSession, Name: LastInsertID, Value: "", skipInit: true, Type: TypeInt, AllowEmpty: true, MinValue: 0, MaxValue: math.MaxInt64, GetSession: func(s *SessionVars) (string, error) { return strconv.FormatUint(s.StmtCtx.PrevLastInsertID, 10), nil + }, GetStateValue: func(s *SessionVars) (string, bool, error) { + return "", false, nil }}, - {Scope: ScopeSession, Name: Identity, Value: "", skipInit: true, GetSession: func(s *SessionVars) (string, error) { + {Scope: ScopeSession, Name: Identity, Value: "", skipInit: true, Type: TypeInt, AllowEmpty: true, MinValue: 0, MaxValue: math.MaxInt64, GetSession: func(s *SessionVars) (string, error) { return strconv.FormatUint(s.StmtCtx.PrevLastInsertID, 10), nil + }, GetStateValue: func(s *SessionVars) (string, bool, error) { + return "", false, nil }}, /* TiDB specific variables */ // TODO: TiDBTxnScope is hidden because local txn feature is not done. @@ -139,11 +147,11 @@ var defaultSysVars = []*SysVar{ } return nil }}, - {Scope: ScopeSession, Name: TiDBOptProjectionPushDown, Value: BoolToOnOff(config.GetGlobalConfig().Performance.ProjectionPushDown), skipInit: true, Type: TypeBool, SetSession: func(s *SessionVars, val string) error { + {Scope: ScopeSession, Name: TiDBOptProjectionPushDown, Value: BoolToOnOff(config.GetGlobalConfig().Performance.ProjectionPushDown), Type: TypeBool, SetSession: func(s *SessionVars, val string) error { s.AllowProjectionPushDown = TiDBOptOn(val) return nil }}, - {Scope: ScopeSession, Name: TiDBOptAggPushDown, Value: BoolToOnOff(DefOptAggPushDown), Type: TypeBool, skipInit: true, SetSession: func(s *SessionVars, val string) error { + {Scope: ScopeSession, Name: TiDBOptAggPushDown, Value: BoolToOnOff(DefOptAggPushDown), Type: TypeBool, SetSession: func(s *SessionVars, val string) error { s.AllowAggPushDown = TiDBOptOn(val) return nil }}, @@ -151,11 +159,11 @@ var defaultSysVars = []*SysVar{ s.AllowDistinctAggPushDown = TiDBOptOn(val) return nil }}, - {Scope: ScopeSession, Name: TiDBOptWriteRowID, Value: BoolToOnOff(DefOptWriteRowID), skipInit: true, SetSession: func(s *SessionVars, val string) error { + {Scope: ScopeSession, Name: TiDBOptWriteRowID, Value: BoolToOnOff(DefOptWriteRowID), Type: TypeBool, skipInit: true, SetSession: func(s *SessionVars, val string) error { s.AllowWriteRowID = TiDBOptOn(val) return nil }}, - {Scope: ScopeSession, Name: TiDBChecksumTableConcurrency, skipInit: true, Value: strconv.Itoa(DefChecksumTableConcurrency)}, + {Scope: ScopeSession, Name: TiDBChecksumTableConcurrency, skipInit: true, Value: strconv.Itoa(DefChecksumTableConcurrency), Type: TypeInt, MinValue: 1, MaxValue: MaxConfigurableConcurrency}, {Scope: ScopeSession, Name: TiDBBatchInsert, Value: BoolToOnOff(DefBatchInsert), Type: TypeBool, skipInit: true, SetSession: func(s *SessionVars, val string) error { s.BatchInsert = TiDBOptOn(val) return nil @@ -168,7 +176,7 @@ var defaultSysVars = []*SysVar{ s.BatchCommit = TiDBOptOn(val) return nil }}, - {Scope: ScopeSession, Name: TiDBCurrentTS, Value: strconv.Itoa(DefCurretTS), ReadOnly: true, skipInit: true, GetSession: func(s *SessionVars) (string, error) { + {Scope: ScopeSession, Name: TiDBCurrentTS, Value: strconv.Itoa(DefCurretTS), Type: TypeInt, AllowEmpty: true, MinValue: 0, MaxValue: math.MaxInt64, ReadOnly: true, skipInit: true, GetSession: func(s *SessionVars) (string, error) { return strconv.FormatUint(s.TxnCtx.StartTS, 10), nil }}, {Scope: ScopeSession, Name: TiDBLastTxnInfo, Value: strconv.Itoa(DefCurretTS), ReadOnly: true, skipInit: true, GetSession: func(s *SessionVars) (string, error) { @@ -191,6 +199,11 @@ var defaultSysVars = []*SysVar{ s.txnIsolationLevelOneShot.state = oneShotSet s.txnIsolationLevelOneShot.value = val return nil + }, GetStateValue: func(s *SessionVars) (string, bool, error) { + if s.txnIsolationLevelOneShot.state != oneShotDef { + return s.txnIsolationLevelOneShot.value, true, nil + } + return "", false, nil }}, {Scope: ScopeSession, Name: TiDBOptimizerSelectivityLevel, Value: strconv.Itoa(DefTiDBOptimizerSelectivityLevel), skipInit: true, Type: TypeUnsigned, MinValue: 0, MaxValue: math.MaxInt32, SetSession: func(s *SessionVars, val string) error { s.OptimizerSelectivityLevel = tidbOptPositiveInt32(val, DefTiDBOptimizerSelectivityLevel) @@ -223,7 +236,7 @@ var defaultSysVars = []*SysVar{ {Scope: ScopeSession, Name: TiDBConfig, Value: "", ReadOnly: true, skipInit: true, GetSession: func(s *SessionVars) (string, error) { return config.GetJSONConfig() }}, - {Scope: ScopeSession, Name: TiDBDDLReorgPriority, Value: "PRIORITY_LOW", skipInit: true, SetSession: func(s *SessionVars, val string) error { + {Scope: ScopeSession, Name: TiDBDDLReorgPriority, Value: "PRIORITY_LOW", Type: TypeEnum, skipInit: true, PossibleValues: []string{"PRIORITY_LOW", "PRIORITY_NORMAL", "PRIORITY_HIGH"}, SetSession: func(s *SessionVars, val string) error { s.setDDLReorgPriority(val) return nil }}, @@ -306,12 +319,16 @@ var defaultSysVars = []*SysVar{ return nil }, GetSession: func(s *SessionVars) (string, error) { return "0", nil + }, GetStateValue: func(s *SessionVars) (string, bool, error) { + return strconv.FormatUint(uint64(s.Rng.GetSeed1()), 10), true, nil }}, {Scope: ScopeSession, Name: RandSeed2, Type: TypeInt, Value: "0", skipInit: true, MaxValue: math.MaxInt32, SetSession: func(s *SessionVars, val string) error { s.Rng.SetSeed2(uint32(tidbOptPositiveInt32(val, 0))) return nil }, GetSession: func(s *SessionVars) (string, error) { return "0", nil + }, GetStateValue: func(s *SessionVars) (string, bool, error) { + return strconv.FormatUint(uint64(s.Rng.GetSeed2()), 10), true, nil }}, {Scope: ScopeSession, Name: TiDBReadConsistency, Value: string(ReadConsistencyStrict), Type: TypeStr, Hidden: true, Validation: func(_ *SessionVars, normalized string, _ string, _ ScopeFlag) (string, error) { @@ -372,13 +389,13 @@ var defaultSysVars = []*SysVar{ } return val, nil }}, - {Scope: ScopeInstance, Name: TiDBDDLSlowOprThreshold, Value: strconv.Itoa(DefTiDBDDLSlowOprThreshold), skipInit: true, SetGlobal: func(s *SessionVars, val string) error { + {Scope: ScopeInstance, Name: TiDBDDLSlowOprThreshold, Value: strconv.Itoa(DefTiDBDDLSlowOprThreshold), Type: TypeInt, MinValue: 0, MaxValue: math.MaxInt32, skipInit: true, SetGlobal: func(s *SessionVars, val string) error { atomic.StoreUint32(&DDLSlowOprThreshold, uint32(tidbOptPositiveInt32(val, DefTiDBDDLSlowOprThreshold))) return nil }, GetGlobal: func(s *SessionVars) (string, error) { return strconv.FormatUint(uint64(atomic.LoadUint32(&DDLSlowOprThreshold)), 10), nil }}, - {Scope: ScopeInstance, Name: TiDBForcePriority, skipInit: true, Value: mysql.Priority2Str[DefTiDBForcePriority], SetGlobal: func(s *SessionVars, val string) error { + {Scope: ScopeInstance, Name: TiDBForcePriority, skipInit: true, Value: mysql.Priority2Str[DefTiDBForcePriority], Type: TypeEnum, PossibleValues: []string{"NO_PRIORITY", "LOW_PRIORITY", "HIGH_PRIORITY", "DELAYED"}, SetGlobal: func(s *SessionVars, val string) error { atomic.StoreInt32(&ForcePriority, int32(mysql.Str2Priority(val))) return nil }, GetGlobal: func(s *SessionVars) (string, error) { @@ -414,6 +431,12 @@ var defaultSysVars = []*SysVar{ {Scope: ScopeInstance, Name: PluginDir, Value: "/data/deploy/plugin", ReadOnly: true, GetGlobal: func(s *SessionVars) (string, error) { return config.GetGlobalConfig().Instance.PluginDir, nil }}, + {Scope: ScopeInstance, Name: MaxConnections, Value: strconv.FormatUint(uint64(config.GetGlobalConfig().Instance.MaxConnections), 10), Type: TypeUnsigned, MinValue: 0, MaxValue: 100000, SetGlobal: func(s *SessionVars, val string) error { + config.GetGlobalConfig().Instance.MaxConnections = uint32(TidbOptInt64(val, 0)) + return nil + }, GetGlobal: func(s *SessionVars) (string, error) { + return strconv.FormatUint(uint64(config.GetGlobalConfig().Instance.MaxConnections), 10), nil + }}, /* The system variables below have GLOBAL scope */ {Scope: ScopeGlobal, Name: MaxPreparedStmtCount, Value: strconv.FormatInt(DefMaxPreparedStmtCount, 10), Type: TypeInt, MinValue: -1, MaxValue: 1048576}, @@ -465,33 +488,34 @@ var defaultSysVars = []*SysVar{ SetDDLReorgRowFormat(TidbOptInt64(val, DefTiDBRowFormatV2)) return nil }}, - {Scope: ScopeGlobal, Name: TiDBDDLReorgWorkerCount, Value: strconv.Itoa(DefTiDBDDLReorgWorkerCount), Type: TypeUnsigned, MinValue: 1, MaxValue: MaxConfigurableConcurrency, SetSession: func(s *SessionVars, val string) error { + {Scope: ScopeGlobal, Name: TiDBDDLReorgWorkerCount, Value: strconv.Itoa(DefTiDBDDLReorgWorkerCount), Type: TypeUnsigned, MinValue: 1, MaxValue: MaxConfigurableConcurrency, SetGlobal: func(s *SessionVars, val string) error { SetDDLReorgWorkerCounter(int32(tidbOptPositiveInt32(val, DefTiDBDDLReorgWorkerCount))) return nil }}, - {Scope: ScopeGlobal, Name: TiDBDDLReorgBatchSize, Value: strconv.Itoa(DefTiDBDDLReorgBatchSize), Type: TypeUnsigned, MinValue: int64(MinDDLReorgBatchSize), MaxValue: uint64(MaxDDLReorgBatchSize), SetSession: func(s *SessionVars, val string) error { + {Scope: ScopeGlobal, Name: TiDBDDLReorgBatchSize, Value: strconv.Itoa(DefTiDBDDLReorgBatchSize), Type: TypeUnsigned, MinValue: int64(MinDDLReorgBatchSize), MaxValue: uint64(MaxDDLReorgBatchSize), SetGlobal: func(s *SessionVars, val string) error { SetDDLReorgBatchSize(int32(tidbOptPositiveInt32(val, DefTiDBDDLReorgBatchSize))) return nil }}, - {Scope: ScopeGlobal, Name: TiDBDDLErrorCountLimit, Value: strconv.Itoa(DefTiDBDDLErrorCountLimit), Type: TypeUnsigned, MinValue: 0, MaxValue: math.MaxInt64, SetSession: func(s *SessionVars, val string) error { + {Scope: ScopeGlobal, Name: TiDBDDLErrorCountLimit, Value: strconv.Itoa(DefTiDBDDLErrorCountLimit), Type: TypeUnsigned, MinValue: 0, MaxValue: math.MaxInt64, SetGlobal: func(s *SessionVars, val string) error { SetDDLErrorCountLimit(TidbOptInt64(val, DefTiDBDDLErrorCountLimit)) return nil }}, - {Scope: ScopeGlobal, Name: TiDBMaxDeltaSchemaCount, Value: strconv.Itoa(DefTiDBMaxDeltaSchemaCount), Type: TypeUnsigned, MinValue: 100, MaxValue: 16384, SetSession: func(s *SessionVars, val string) error { + {Scope: ScopeGlobal, Name: TiDBMaxDeltaSchemaCount, Value: strconv.Itoa(DefTiDBMaxDeltaSchemaCount), Type: TypeUnsigned, MinValue: 100, MaxValue: 16384, SetGlobal: func(s *SessionVars, val string) error { // It's a global variable, but it also wants to be cached in server. SetMaxDeltaSchemaCount(TidbOptInt64(val, DefTiDBMaxDeltaSchemaCount)) return nil }}, - {Scope: ScopeGlobal, Name: TiDBEnableChangeMultiSchema, Value: BoolToOnOff(DefTiDBChangeMultiSchema), Hidden: true, Type: TypeBool, SetSession: func(s *SessionVars, val string) error { - s.EnableChangeMultiSchema = TiDBOptOn(val) - return nil - }, SetGlobal: func(s *SessionVars, val string) error { - s.EnableChangeMultiSchema = TiDBOptOn(val) + {Scope: ScopeGlobal, Name: TiDBEnableChangeMultiSchema, Value: BoolToOnOff(DefTiDBChangeMultiSchema), Hidden: true, Type: TypeBool, SetGlobal: func(s *SessionVars, val string) error { + EnableChangeMultiSchema.Store(TiDBOptOn(val)) return nil + }, GetGlobal: func(s *SessionVars) (string, error) { + return BoolToOnOff(EnableChangeMultiSchema.Load()), nil }}, - {Scope: ScopeGlobal, Name: TiDBEnablePointGetCache, Value: BoolToOnOff(DefTiDBPointGetCache), Hidden: true, Type: TypeBool, SetSession: func(s *SessionVars, val string) error { - s.EnablePointGetCache = TiDBOptOn(val) + {Scope: ScopeGlobal, Name: TiDBEnablePointGetCache, Value: BoolToOnOff(DefTiDBPointGetCache), Hidden: true, Type: TypeBool, SetGlobal: func(s *SessionVars, val string) error { + EnablePointGetCache.Store(TiDBOptOn(val)) return nil + }, GetGlobal: func(s *SessionVars) (string, error) { + return BoolToOnOff(EnablePointGetCache.Load()), nil }}, {Scope: ScopeGlobal, Name: TiDBScatterRegion, Value: BoolToOnOff(DefTiDBScatterRegion), Type: TypeBool}, {Scope: ScopeGlobal, Name: TiDBEnableStmtSummary, Value: BoolToOnOff(DefTiDBEnableStmtSummary), Type: TypeBool, AllowEmpty: true, @@ -578,9 +602,7 @@ var defaultSysVars = []*SysVar{ }, SetGlobal: func(s *SessionVars, val string) error { return setTiDBTableValue(s, "tikv_gc_run_interval", val, "GC run interval, at least 10m, in Go format.") }}, - {Scope: ScopeGlobal, Name: TiDBGCLifetime, Value: "10m0s", Type: TypeDuration, MinValue: int64(time.Minute * 10), MaxValue: uint64(time.Hour * 24 * 365), Validation: func(vars *SessionVars, normalizedValue string, originalValue string, scope ScopeFlag) (string, error) { - return checkTiKVGCLifeTime(vars, normalizedValue, originalValue, scope) - }, GetGlobal: func(s *SessionVars) (string, error) { + {Scope: ScopeGlobal, Name: TiDBGCLifetime, Value: "10m0s", Type: TypeDuration, MinValue: int64(time.Minute * 10), MaxValue: uint64(time.Hour * 24 * 365), GetGlobal: func(s *SessionVars) (string, error) { return getTiDBTableValue(s, "tikv_gc_life_time", "10m0s") }, SetGlobal: func(s *SessionVars, val string) error { return setTiDBTableValue(s, "tikv_gc_life_time", val, "All versions within life time will not be collected by GC, at least 10m, in Go format.") @@ -607,13 +629,10 @@ var defaultSysVars = []*SysVar{ }, SetGlobal: func(s *SessionVars, val string) error { return setTiDBTableValue(s, "tikv_gc_scan_lock_mode", val, "Mode of scanning locks, \"physical\" or \"legacy\"") }}, - {Scope: ScopeGlobal, Name: TiDBGCMaxWaitTime, Value: strconv.Itoa(DefTiDBGCMaxWaitTime), Type: TypeInt, MinValue: 600, MaxValue: 31536000, - Validation: func(vars *SessionVars, normalizedValue string, originalValue string, scope ScopeFlag) (string, error) { - return checkGCTxnMaxWaitTime(vars, normalizedValue, originalValue, scope) - }, SetGlobal: func(s *SessionVars, val string) error { - GCMaxWaitTime.Store(TidbOptInt64(val, DefTiDBGCMaxWaitTime)) - return nil - }}, + {Scope: ScopeGlobal, Name: TiDBGCMaxWaitTime, Value: strconv.Itoa(DefTiDBGCMaxWaitTime), Type: TypeInt, MinValue: 600, MaxValue: 31536000, SetGlobal: func(s *SessionVars, val string) error { + GCMaxWaitTime.Store(TidbOptInt64(val, DefTiDBGCMaxWaitTime)) + return nil + }}, {Scope: ScopeGlobal, Name: TiDBTableCacheLease, Value: strconv.Itoa(DefTiDBTableCacheLease), Type: TypeUnsigned, MinValue: 1, MaxValue: 10, SetGlobal: func(s *SessionVars, sVal string) error { var val int64 val, err := strconv.ParseInt(sVal, 10, 64) @@ -797,6 +816,18 @@ var defaultSysVars = []*SysVar{ return err }, }, + {Scope: ScopeGlobal, Name: TiDBEnableConcurrentDDL, Value: BoolToOnOff(DefTiDBEnableConcurrentDDL), Type: TypeBool, SetGlobal: func(s *SessionVars, val string) error { + EnableConcurrentDDL.Store(TiDBOptOn(val)) + return nil + }, GetGlobal: func(s *SessionVars) (string, error) { + return BoolToOnOff(EnableConcurrentDDL.Load()), nil + }}, + {Scope: ScopeGlobal, Name: TiDBEnableNoopVariables, Value: BoolToOnOff(DefTiDBEnableNoopVariables), Type: TypeEnum, PossibleValues: []string{Off, On, Warn}, SetGlobal: func(s *SessionVars, val string) error { + EnableNoopVariables.Store(TiDBOptOn(val)) + return nil + }, GetGlobal: func(s *SessionVars) (string, error) { + return BoolToOnOff(EnableNoopVariables.Load()), nil + }}, /* The system variables below have GLOBAL and SESSION scope */ {Scope: ScopeGlobal | ScopeSession, Name: SQLSelectLimit, Value: "18446744073709551615", Type: TypeUnsigned, MinValue: 0, MaxValue: math.MaxUint64, SetSession: func(s *SessionVars, val string) error { @@ -998,7 +1029,7 @@ var defaultSysVars = []*SysVar{ s.WindowingUseHighPrecision = TiDBOptOn(val) return nil }}, - {Scope: ScopeGlobal | ScopeSession, Name: BlockEncryptionMode, Value: "aes-128-ecb"}, + {Scope: ScopeGlobal | ScopeSession, Name: BlockEncryptionMode, Value: "aes-128-ecb", Type: TypeEnum, PossibleValues: []string{"aes-128-ecb", "aes-192-ecb", "aes-256-ecb", "aes-128-cbc", "aes-192-cbc", "aes-256-cbc", "aes-128-ofb", "aes-192-ofb", "aes-256-ofb", "aes-128-cfb", "aes-192-cfb", "aes-256-cfb"}}, /* TiDB specific variables */ {Scope: ScopeGlobal | ScopeSession, Name: TiDBAllowMPPExecution, Type: TypeBool, Value: BoolToOnOff(DefTiDBAllowMPPExecution), SetSession: func(s *SessionVars, val string) error { s.allowMPPExecution = TiDBOptOn(val) @@ -1020,7 +1051,7 @@ var defaultSysVars = []*SysVar{ s.BroadcastJoinThresholdSize = TidbOptInt64(val, DefBroadcastJoinThresholdSize) return nil }}, - {Scope: ScopeGlobal | ScopeSession, Name: TiDBBuildStatsConcurrency, skipInit: true, Value: strconv.Itoa(DefBuildStatsConcurrency)}, + {Scope: ScopeGlobal | ScopeSession, Name: TiDBBuildStatsConcurrency, skipInit: true, Value: strconv.Itoa(DefBuildStatsConcurrency), Type: TypeInt, MinValue: 1, MaxValue: MaxConfigurableConcurrency}, {Scope: ScopeGlobal | ScopeSession, Name: TiDBOptCartesianBCJ, Value: strconv.Itoa(DefOptCartesianBCJ), Type: TypeInt, MinValue: 0, MaxValue: 2, SetSession: func(s *SessionVars, val string) error { s.AllowCartesianBCJ = TidbOptInt(val, DefOptCartesianBCJ) return nil @@ -1062,7 +1093,7 @@ var defaultSysVars = []*SysVar{ return nil }}, {Scope: ScopeGlobal | ScopeSession, Name: TiDBOptCPUFactor, Value: strconv.FormatFloat(DefOptCPUFactor, 'f', -1, 64), Type: TypeFloat, MinValue: 0, MaxValue: math.MaxUint64, SetSession: func(s *SessionVars, val string) error { - s.CPUFactor = tidbOptFloat64(val, DefOptCPUFactor) + s.cpuFactor = tidbOptFloat64(val, DefOptCPUFactor) return nil }}, {Scope: ScopeGlobal | ScopeSession, Name: TiDBOptTiFlashConcurrencyFactor, Value: strconv.FormatFloat(DefOptTiFlashConcurrencyFactor, 'f', -1, 64), skipInit: true, Type: TypeFloat, MinValue: 1, MaxValue: math.MaxUint64, SetSession: func(s *SessionVars, val string) error { @@ -1070,7 +1101,7 @@ var defaultSysVars = []*SysVar{ return nil }}, {Scope: ScopeGlobal | ScopeSession, Name: TiDBOptCopCPUFactor, Value: strconv.FormatFloat(DefOptCopCPUFactor, 'f', -1, 64), Type: TypeFloat, MinValue: 0, MaxValue: math.MaxUint64, SetSession: func(s *SessionVars, val string) error { - s.CopCPUFactor = tidbOptFloat64(val, DefOptCopCPUFactor) + s.copCPUFactor = tidbOptFloat64(val, DefOptCopCPUFactor) return nil }}, {Scope: ScopeGlobal | ScopeSession, Name: TiDBOptNetworkFactor, Value: strconv.FormatFloat(DefOptNetworkFactor, 'f', -1, 64), Type: TypeFloat, MinValue: 0, MaxValue: math.MaxUint64, SetSession: func(s *SessionVars, val string) error { @@ -1090,11 +1121,11 @@ var defaultSysVars = []*SysVar{ return nil }}, {Scope: ScopeGlobal | ScopeSession, Name: TiDBOptMemoryFactor, Value: strconv.FormatFloat(DefOptMemoryFactor, 'f', -1, 64), Type: TypeFloat, MinValue: 0, MaxValue: math.MaxUint64, SetSession: func(s *SessionVars, val string) error { - s.MemoryFactor = tidbOptFloat64(val, DefOptMemoryFactor) + s.memoryFactor = tidbOptFloat64(val, DefOptMemoryFactor) return nil }}, {Scope: ScopeGlobal | ScopeSession, Name: TiDBOptDiskFactor, Value: strconv.FormatFloat(DefOptDiskFactor, 'f', -1, 64), Type: TypeFloat, MinValue: 0, MaxValue: math.MaxUint64, SetSession: func(s *SessionVars, val string) error { - s.DiskFactor = tidbOptFloat64(val, DefOptDiskFactor) + s.diskFactor = tidbOptFloat64(val, DefOptDiskFactor) return nil }}, {Scope: ScopeGlobal | ScopeSession, Name: TiDBOptimizerEnableNewOnlyFullGroupByCheck, Value: BoolToOnOff(DefTiDBOptimizerEnableNewOFGB), Type: TypeBool, SetSession: func(s *SessionVars, val string) error { @@ -1102,7 +1133,51 @@ var defaultSysVars = []*SysVar{ return nil }}, {Scope: ScopeGlobal | ScopeSession, Name: TiDBOptConcurrencyFactor, Value: strconv.FormatFloat(DefOptConcurrencyFactor, 'f', -1, 64), Type: TypeFloat, MinValue: 0, MaxValue: math.MaxUint64, SetSession: func(s *SessionVars, val string) error { - s.ConcurrencyFactor = tidbOptFloat64(val, DefOptConcurrencyFactor) + s.concurrencyFactor = tidbOptFloat64(val, DefOptConcurrencyFactor) + return nil + }}, + {Scope: ScopeGlobal | ScopeSession, Name: TiDBOptCPUFactorV2, Value: strconv.FormatFloat(DefOptCPUFactorV2, 'f', -1, 64), Hidden: true, Type: TypeFloat, MinValue: 0, MaxValue: math.MaxUint64, SetSession: func(s *SessionVars, val string) error { + s.cpuFactorV2 = tidbOptFloat64(val, DefOptCPUFactorV2) + return nil + }}, + {Scope: ScopeGlobal | ScopeSession, Name: TiDBOptCopCPUFactorV2, Value: strconv.FormatFloat(DefOptCopCPUFactorV2, 'f', -1, 64), Hidden: true, Type: TypeFloat, MinValue: 0, MaxValue: math.MaxUint64, SetSession: func(s *SessionVars, val string) error { + s.copCPUFactorV2 = tidbOptFloat64(val, DefOptCopCPUFactorV2) + return nil + }}, + {Scope: ScopeGlobal | ScopeSession, Name: TiDBOptTiFlashCPUFactorV2, Value: strconv.FormatFloat(DefOptTiFlashCPUFactorV2, 'f', -1, 64), Hidden: true, Type: TypeFloat, MinValue: 0, MaxValue: math.MaxUint64, SetSession: func(s *SessionVars, val string) error { + s.tiflashCPUFactorV2 = tidbOptFloat64(val, DefOptTiFlashCPUFactorV2) + return nil + }}, + {Scope: ScopeGlobal | ScopeSession, Name: TiDBOptNetworkFactorV2, Value: strconv.FormatFloat(DefOptNetworkFactorV2, 'f', -1, 64), Hidden: true, Type: TypeFloat, MinValue: 0, MaxValue: math.MaxUint64, SetSession: func(s *SessionVars, val string) error { + s.networkFactorV2 = tidbOptFloat64(val, DefOptNetworkFactorV2) + return nil + }}, + {Scope: ScopeGlobal | ScopeSession, Name: TiDBOptScanFactorV2, Value: strconv.FormatFloat(DefOptScanFactorV2, 'f', -1, 64), Hidden: true, Type: TypeFloat, MinValue: 0, MaxValue: math.MaxUint64, SetSession: func(s *SessionVars, val string) error { + s.scanFactorV2 = tidbOptFloat64(val, DefOptScanFactorV2) + return nil + }}, + {Scope: ScopeGlobal | ScopeSession, Name: TiDBOptDescScanFactorV2, Value: strconv.FormatFloat(DefOptDescScanFactorV2, 'f', -1, 64), Hidden: true, Type: TypeFloat, MinValue: 0, MaxValue: math.MaxUint64, SetSession: func(s *SessionVars, val string) error { + s.descScanFactorV2 = tidbOptFloat64(val, DefOptDescScanFactorV2) + return nil + }}, + {Scope: ScopeGlobal | ScopeSession, Name: TiDBOptTiFlashScanFactorV2, Value: strconv.FormatFloat(DefOptTiFlashScanFactorV2, 'f', -1, 64), Hidden: true, Type: TypeFloat, MinValue: 0, MaxValue: math.MaxUint64, SetSession: func(s *SessionVars, val string) error { + s.tiflashScanFactorV2 = tidbOptFloat64(val, DefOptTiFlashScanFactorV2) + return nil + }}, + {Scope: ScopeGlobal | ScopeSession, Name: TiDBOptSeekFactorV2, Value: strconv.FormatFloat(DefOptSeekFactorV2, 'f', -1, 64), Hidden: true, Type: TypeFloat, MinValue: 0, MaxValue: math.MaxUint64, SetSession: func(s *SessionVars, val string) error { + s.seekFactorV2 = tidbOptFloat64(val, DefOptSeekFactorV2) + return nil + }}, + {Scope: ScopeGlobal | ScopeSession, Name: TiDBOptMemoryFactorV2, Value: strconv.FormatFloat(DefOptMemoryFactorV2, 'f', -1, 64), Hidden: true, Type: TypeFloat, MinValue: 0, MaxValue: math.MaxUint64, SetSession: func(s *SessionVars, val string) error { + s.memoryFactorV2 = tidbOptFloat64(val, DefOptMemoryFactorV2) + return nil + }}, + {Scope: ScopeGlobal | ScopeSession, Name: TiDBOptDiskFactorV2, Value: strconv.FormatFloat(DefOptDiskFactorV2, 'f', -1, 64), Hidden: true, Type: TypeFloat, MinValue: 0, MaxValue: math.MaxUint64, SetSession: func(s *SessionVars, val string) error { + s.diskFactorV2 = tidbOptFloat64(val, DefOptDiskFactorV2) + return nil + }}, + {Scope: ScopeGlobal | ScopeSession, Name: TiDBOptConcurrencyFactorV2, Value: strconv.FormatFloat(DefOptConcurrencyFactorV2, 'f', -1, 64), Hidden: true, Type: TypeFloat, MinValue: 0, MaxValue: math.MaxUint64, SetSession: func(s *SessionVars, val string) error { + s.concurrencyFactorV2 = tidbOptFloat64(val, DefOptConcurrencyFactorV2) return nil }}, {Scope: ScopeGlobal | ScopeSession, Name: TiDBIndexJoinBatchSize, Value: strconv.Itoa(DefIndexJoinBatchSize), Type: TypeUnsigned, MinValue: 1, MaxValue: math.MaxInt32, SetSession: func(s *SessionVars, val string) error { @@ -1394,7 +1469,7 @@ var defaultSysVars = []*SysVar{ s.EnableClusteredIndex = TiDBOptEnableClustered(val) return nil }}, - {Scope: ScopeGlobal | ScopeSession, Name: TiDBPartitionPruneMode, Value: DefTiDBPartitionPruneMode, Type: TypeStr, Validation: func(vars *SessionVars, normalizedValue string, originalValue string, scope ScopeFlag) (string, error) { + {Scope: ScopeGlobal | ScopeSession, Name: TiDBPartitionPruneMode, Value: DefTiDBPartitionPruneMode, Type: TypeEnum, PossibleValues: []string{"static", "dynamic", "static-only", "dynamic-only"}, Validation: func(vars *SessionVars, normalizedValue string, originalValue string, scope ScopeFlag) (string, error) { mode := PartitionPruneMode(normalizedValue).Update() if !mode.Valid() { return normalizedValue, ErrWrongTypeForVar.GenWithStackByArgs(TiDBPartitionPruneMode) @@ -1495,7 +1570,10 @@ var defaultSysVars = []*SysVar{ s.RegardNULLAsPoint = TiDBOptOn(val) return nil }}, - {Scope: ScopeGlobal | ScopeSession, Name: TiDBEnablePaging, Value: Off, Type: TypeBool, Hidden: true, SetSession: func(s *SessionVars, val string) error { + {Scope: ScopeGlobal | ScopeSession, Name: TiDBEnablePaging, Value: BoolToOnOff(DefTiDBEnablePaging), Type: TypeBool, Hidden: true, SetSession: func(s *SessionVars, val string) error { + s.EnablePaging = TiDBOptOn(val) + return nil + }, SetGlobal: func(s *SessionVars, val string) error { s.EnablePaging = TiDBOptOn(val) return nil }}, @@ -1553,6 +1631,12 @@ var defaultSysVars = []*SysVar{ return nil }, }, + {Scope: ScopeGlobal | ScopeSession, Name: TiDBCostModelVersion, Value: strconv.Itoa(1), Hidden: true, Type: TypeInt, MinValue: 1, MaxValue: 2, + SetSession: func(vars *SessionVars, s string) error { + vars.CostModelVersion = int(TidbOptInt64(s, 1)) + return nil + }, + }, {Scope: ScopeGlobal | ScopeSession, Name: TiDBRCReadCheckTS, Type: TypeBool, Value: BoolToOnOff(DefRCReadCheckTS), SetSession: func(s *SessionVars, val string) error { s.RcReadCheckTS = TiDBOptOn(val) return nil @@ -1578,6 +1662,11 @@ var defaultSysVars = []*SysVar{ return nil }, }, + {Scope: ScopeGlobal, Name: TiDBSimplifiedMetrics, Value: BoolToOnOff(DefTiDBSimplifiedMetrics), Type: TypeBool, + SetGlobal: func(vars *SessionVars, s string) error { + metrics.ToggleSimplifiedMode(TiDBOptOn(s)) + return nil + }}, } // FeedbackProbability points to the FeedbackProbability in statistics package. diff --git a/sessionctx/variable/sysvar_test.go b/sessionctx/variable/sysvar_test.go index 6c62a697e6d5b..fb821c9f5cf78 100644 --- a/sessionctx/variable/sysvar_test.go +++ b/sessionctx/variable/sysvar_test.go @@ -656,10 +656,7 @@ func TestSettersandGetters(t *testing.T) { // There are some historial exceptions where global variables are loaded into the session. // Please don't add to this list, the behavior is not MySQL compatible. switch sv.Name { - case TiDBEnableChangeMultiSchema, TiDBDDLReorgBatchSize, - TiDBMaxDeltaSchemaCount, InitConnect, MaxPreparedStmtCount, - TiDBDDLReorgWorkerCount, TiDBDDLErrorCountLimit, TiDBRowFormatVersion, - TiDBEnableTelemetry, TiDBEnablePointGetCache: + case TiDBRowFormatVersion: continue } require.Nil(t, sv.SetSession) diff --git a/sessionctx/variable/tidb_vars.go b/sessionctx/variable/tidb_vars.go index 12916ed13e874..529c31b6e560d 100644 --- a/sessionctx/variable/tidb_vars.go +++ b/sessionctx/variable/tidb_vars.go @@ -273,6 +273,30 @@ const ( // TiDBOptConcurrencyFactor is the CPU cost of additional one goroutine. TiDBOptConcurrencyFactor = "tidb_opt_concurrency_factor" + // Variables for the Cost Model Ver2 + // TiDBOptCPUFactorV2 is the CPU factor for the Cost Model Ver2 + TiDBOptCPUFactorV2 = "tidb_opt_cpu_factor_v2" + // TiDBOptCopCPUFactorV2 is the CopCPU factor for the Cost Model Ver2 + TiDBOptCopCPUFactorV2 = "tidb_opt_copcpu_factor_v2" + // TiDBOptTiFlashCPUFactorV2 is the TiFlashCPU factor for the Cost Model Ver2 + TiDBOptTiFlashCPUFactorV2 = "tidb_opt_tiflash_cpu_factor_v2" + // TiDBOptNetworkFactorV2 is the network factor for the Cost Model Ver2 + TiDBOptNetworkFactorV2 = "tidb_opt_network_factor_v2" + // TiDBOptScanFactorV2 is the scan factor for the Cost Model Ver2 + TiDBOptScanFactorV2 = "tidb_opt_scan_factor_v2" + // TiDBOptDescScanFactorV2 is the desc scan factor for the Cost Model Ver2 + TiDBOptDescScanFactorV2 = "tidb_opt_desc_factor_v2" + // TiDBOptTiFlashScanFactorV2 is the TiFlashScan factor for the Cost Model Ver2 + TiDBOptTiFlashScanFactorV2 = "tidb_opt_tiflash_scan_factor_v2" + // TiDBOptSeekFactorV2 is the seek factor for the Cost Model Ver2 + TiDBOptSeekFactorV2 = "tidb_opt_seek_factor_v2" + // TiDBOptMemoryFactorV2 is the memory factor for the Cost Model Ver2 + TiDBOptMemoryFactorV2 = "tidb_opt_memory_factor_v2" + // TiDBOptDiskFactorV2 is the disk factor for the Cost Model Ver2 + TiDBOptDiskFactorV2 = "tidb_opt_disk_factor_v2" + // TiDBOptConcurrencyFactorV2 is the concurrency factor for the Cost Model Ver2 + TiDBOptConcurrencyFactorV2 = "tidb_opt_concurrency_factor_v2" + // TiDBIndexJoinBatchSize is used to set the batch size of an index lookup join. // The index lookup join fetches batches of data from outer executor and constructs ranges for inner executor. // This value controls how much of data in a batch to do the index join. @@ -637,16 +661,25 @@ const ( // TiDBEnableNewCostInterface is a internal switch to indicates whether to use the new cost calculation interface. TiDBEnableNewCostInterface = "tidb_enable_new_cost_interface" + // TiDBCostModelVersion is a internal switch to indicates the cost model version. + TiDBCostModelVersion = "tidb_cost_model_version" + // TiDBBatchPendingTiFlashCount indicates the maximum count of non-available TiFlash tables. TiDBBatchPendingTiFlashCount = "tidb_batch_pending_tiflash_count" // TiDBQueryLogMaxLen is used to set the max length of the query in the log. TiDBQueryLogMaxLen = "tidb_query_log_max_len" + // TiDBEnableNoopVariables is used to indicate if noops appear in SHOW [GLOBAL] VARIABLES + TiDBEnableNoopVariables = "tidb_enable_noop_variables" + // TiDBNonTransactionalIgnoreError is used to ignore error in non-transactional DMLs. // When set to false, a non-transactional DML returns when it meets the first error. // When set to true, a non-transactional DML finishes all batches even if errors are met in some batches. TiDBNonTransactionalIgnoreError = "tidb_nontransactional_ignore_error" + + // TiDBSimplifiedMetrics controls whether to unregister some unused metrics. + TiDBSimplifiedMetrics = "tidb_simplified_metrics" ) // TiDB vars that have only global scope @@ -704,6 +737,8 @@ const ( // TiDBMaxAutoAnalyzeTime is the max time that auto analyze can run. If auto analyze runs longer than the value, it // will be killed. 0 indicates that there is no time limit. TiDBMaxAutoAnalyzeTime = "tidb_max_auto_analyze_time" + // TiDBEnableConcurrentDDL indicates whether to enable the new DDL framework. + TiDBEnableConcurrentDDL = "tidb_enable_concurrent_ddl" ) // TiDB intentional limits @@ -751,6 +786,17 @@ const ( DefOptMemoryFactor = 0.001 DefOptDiskFactor = 1.5 DefOptConcurrencyFactor = 3.0 + DefOptCPUFactorV2 = 30.0 + DefOptCopCPUFactorV2 = 30.0 + DefOptTiFlashCPUFactorV2 = 2.0 + DefOptNetworkFactorV2 = 4.0 + DefOptScanFactorV2 = 100.0 + DefOptDescScanFactorV2 = 150.0 + DefOptTiFlashScanFactorV2 = 15.0 + DefOptSeekFactorV2 = 9500000.0 + DefOptMemoryFactorV2 = 0.001 + DefOptDiskFactorV2 = 1.5 + DefOptConcurrencyFactorV2 = 3.0 DefOptInSubqToJoinAndAgg = true DefOptPreferRangeScan = false DefBatchInsert = false @@ -812,6 +858,7 @@ const ( DefTiDBWaitSplitRegionFinish = true DefWaitSplitRegionTimeout = 300 // 300s DefTiDBEnableNoopFuncs = Off + DefTiDBEnableNoopVariables = true DefTiDBAllowRemoveAutoInc = false DefTiDBUsePlanBaselines = true DefTiDBEvolvePlanBaselines = false @@ -892,6 +939,9 @@ const ( DefTiDBEnablePrepPlanCache = true DefTiDBPrepPlanCacheSize = 100 DefTiDBPrepPlanCacheMemoryGuardRatio = 0.1 + DefTiDBEnableConcurrentDDL = true + DefTiDBSimplifiedMetrics = false + DefTiDBEnablePaging = true ) // Process global variables. @@ -919,6 +969,8 @@ var ( DefExecutorConcurrency = 5 MemoryUsageAlarmRatio = atomic.NewFloat64(config.GetGlobalConfig().Instance.MemoryUsageAlarmRatio) EnableLocalTxn = atomic.NewBool(DefTiDBEnableLocalTxn) + EnablePointGetCache = atomic.NewBool(DefTiDBPointGetCache) + EnableChangeMultiSchema = atomic.NewBool(DefTiDBChangeMultiSchema) MaxTSOBatchWaitInterval = atomic.NewFloat64(DefTiDBTSOClientBatchMaxWaitTime) EnableTSOFollowerProxy = atomic.NewBool(DefTiDBEnableTSOFollowerProxy) RestrictedReadOnly = atomic.NewBool(DefTiDBRestrictedReadOnly) @@ -937,6 +989,8 @@ var ( EnablePreparedPlanCache = atomic.NewBool(DefTiDBEnablePrepPlanCache) PreparedPlanCacheSize = atomic.NewUint64(DefTiDBPrepPlanCacheSize) PreparedPlanCacheMemoryGuardRatio = atomic.NewFloat64(DefTiDBPrepPlanCacheMemoryGuardRatio) + EnableConcurrentDDL = atomic.NewBool(DefTiDBEnableConcurrentDDL) + EnableNoopVariables = atomic.NewBool(DefTiDBEnableNoopVariables) ) var ( diff --git a/sessionctx/variable/variable.go b/sessionctx/variable/variable.go index ad91470802795..8a882f1d6e4f2 100644 --- a/sessionctx/variable/variable.go +++ b/sessionctx/variable/variable.go @@ -132,6 +132,9 @@ type SysVar struct { GetSession func(*SessionVars) (string, error) // GetGlobal is a getter function for global scope. GetGlobal func(*SessionVars) (string, error) + // GetStateValue gets the value for session states, which is used for migrating sessions. + // We need a function to override GetSession sometimes, because GetSession may not return the real value. + GetStateValue func(*SessionVars) (string, bool, error) // skipInit defines if the sysvar should be loaded into the session on init. // This is only important to set for sysvars that include session scope, // since global scoped sysvars are not-applicable. @@ -516,10 +519,7 @@ func (sv *SysVar) SkipInit() bool { // These a special "Global-only" sysvars that for backward compatibility // are currently cached in the session. Please don't add to this list. switch sv.Name { - case TiDBEnableChangeMultiSchema, TiDBDDLReorgBatchSize, - TiDBMaxDeltaSchemaCount, InitConnect, MaxPreparedStmtCount, - TiDBDDLReorgWorkerCount, TiDBDDLErrorCountLimit, TiDBRowFormatVersion, - TiDBEnableTelemetry, TiDBEnablePointGetCache: + case TiDBRowFormatVersion: return false } return !sv.HasSessionScope() diff --git a/sessionctx/variable/varsutil.go b/sessionctx/variable/varsutil.go index 495fc1f4d5b58..38108e5cba932 100644 --- a/sessionctx/variable/varsutil.go +++ b/sessionctx/variable/varsutil.go @@ -193,6 +193,29 @@ func GetSessionOrGlobalSystemVar(s *SessionVars, name string) (string, error) { return sv.GetGlobalFromHook(s) } +// GetSessionStatesSystemVar gets the session variable value for session states. +// It's only used for encoding session states when migrating a session. +// The returned boolean indicates whether to keep this value in the session states. +func GetSessionStatesSystemVar(s *SessionVars, name string) (string, bool, error) { + sv := GetSysVar(name) + if sv == nil { + return "", false, ErrUnknownSystemVar.GenWithStackByArgs(name) + } + // Call GetStateValue first if it exists. Otherwise, call GetSession. + if sv.GetStateValue != nil { + return sv.GetStateValue(s) + } + if sv.GetSession != nil { + val, err := sv.GetSessionFromHook(s) + return val, err == nil, err + } + // Only get the cached value. No need to check the global or default value. + if val, ok := s.systems[sv.Name]; ok { + return val, true, nil + } + return "", false, nil +} + // GetGlobalSystemVar gets a global system variable. func GetGlobalSystemVar(s *SessionVars, name string) (string, error) { sv := GetSysVar(name) @@ -407,7 +430,7 @@ func parseTimeZone(s string) (*time.Location, error) { // The value can be given as a string indicating an offset from UTC, such as '+10:00' or '-6:00'. // The time zone's value should in [-12:59,+14:00]. if strings.HasPrefix(s, "+") || strings.HasPrefix(s, "-") { - d, err := types.ParseDuration(nil, s[1:], 0) + d, _, err := types.ParseDuration(nil, s[1:], 0) if err == nil { if s[0] == '-' { if d.Duration > 12*time.Hour+59*time.Minute { @@ -512,36 +535,3 @@ var GAFunction4ExpressionIndex = map[string]struct{}{ ast.VitessHash: {}, ast.TiDBShard: {}, } - -func checkGCTxnMaxWaitTime(vars *SessionVars, - normalizedValue string, - originalValue string, - scope ScopeFlag) (string, error) { - ival, err := strconv.Atoi(normalizedValue) - if err != nil { - return originalValue, errors.Trace(err) - } - GcLifeTimeStr, _ := getTiDBTableValue(vars, "tikv_gc_life_time", "10m0s") - GcLifeTimeDuration, err := time.ParseDuration(GcLifeTimeStr) - if err != nil { - return originalValue, errors.Trace(err) - } - if GcLifeTimeDuration.Seconds() > (float64)(ival) { - return originalValue, errors.Trace(ErrWrongValueForVar.GenWithStackByArgs(TiDBGCMaxWaitTime, normalizedValue)) - } - return normalizedValue, nil -} - -func checkTiKVGCLifeTime(vars *SessionVars, - normalizedValue string, - originalValue string, - scope ScopeFlag) (string, error) { - gcLifetimeDuration, err := time.ParseDuration(normalizedValue) - if err != nil { - return originalValue, errors.Trace(err) - } - if gcLifetimeDuration.Seconds() > float64(GCMaxWaitTime.Load()) { - return originalValue, errors.Trace(ErrWrongValueForVar.GenWithStackByArgs(TiDBGCLifetime, normalizedValue)) - } - return normalizedValue, nil -} diff --git a/sessionctx/variable/varsutil_test.go b/sessionctx/variable/varsutil_test.go index 4dd0d5d12953d..4641a8c2f1e0d 100644 --- a/sessionctx/variable/varsutil_test.go +++ b/sessionctx/variable/varsutil_test.go @@ -302,21 +302,21 @@ func TestVarsutil(t *testing.T) { require.Equal(t, "0", val) require.Equal(t, float64(0), v.CorrelationThreshold) - require.Equal(t, 3.0, v.CPUFactor) + require.Equal(t, 3.0, v.GetCPUFactor()) err = SetSessionSystemVar(v, TiDBOptCPUFactor, "5.0") require.NoError(t, err) val, err = GetSessionOrGlobalSystemVar(v, TiDBOptCPUFactor) require.NoError(t, err) require.Equal(t, "5.0", val) - require.Equal(t, 5.0, v.CPUFactor) + require.Equal(t, 5.0, v.GetCPUFactor()) - require.Equal(t, 3.0, v.CopCPUFactor) + require.Equal(t, 3.0, v.GetCopCPUFactor()) err = SetSessionSystemVar(v, TiDBOptCopCPUFactor, "5.0") require.NoError(t, err) val, err = GetSessionOrGlobalSystemVar(v, TiDBOptCopCPUFactor) require.NoError(t, err) require.Equal(t, "5.0", val) - require.Equal(t, 5.0, v.CopCPUFactor) + require.Equal(t, 5.0, v.GetCopCPUFactor()) require.Equal(t, 24.0, v.CopTiFlashConcurrencyFactor) err = SetSessionSystemVar(v, TiDBOptTiFlashConcurrencyFactor, "5.0") @@ -324,7 +324,7 @@ func TestVarsutil(t *testing.T) { val, err = GetSessionOrGlobalSystemVar(v, TiDBOptTiFlashConcurrencyFactor) require.NoError(t, err) require.Equal(t, "5.0", val) - require.Equal(t, 5.0, v.CopCPUFactor) + require.Equal(t, 5.0, v.GetCopCPUFactor()) require.Equal(t, 1.0, v.GetNetworkFactor(nil)) err = SetSessionSystemVar(v, TiDBOptNetworkFactor, "3.0") @@ -358,29 +358,29 @@ func TestVarsutil(t *testing.T) { require.Equal(t, "50.0", val) require.Equal(t, 50.0, v.GetSeekFactor(nil)) - require.Equal(t, 0.001, v.MemoryFactor) + require.Equal(t, 0.001, v.GetMemoryFactor()) err = SetSessionSystemVar(v, TiDBOptMemoryFactor, "1.0") require.NoError(t, err) val, err = GetSessionOrGlobalSystemVar(v, TiDBOptMemoryFactor) require.NoError(t, err) require.Equal(t, "1.0", val) - require.Equal(t, 1.0, v.MemoryFactor) + require.Equal(t, 1.0, v.GetMemoryFactor()) - require.Equal(t, 1.5, v.DiskFactor) + require.Equal(t, 1.5, v.GetDiskFactor()) err = SetSessionSystemVar(v, TiDBOptDiskFactor, "1.1") require.NoError(t, err) val, err = GetSessionOrGlobalSystemVar(v, TiDBOptDiskFactor) require.NoError(t, err) require.Equal(t, "1.1", val) - require.Equal(t, 1.1, v.DiskFactor) + require.Equal(t, 1.1, v.GetDiskFactor()) - require.Equal(t, 3.0, v.ConcurrencyFactor) + require.Equal(t, 3.0, v.GetConcurrencyFactor()) err = SetSessionSystemVar(v, TiDBOptConcurrencyFactor, "5.0") require.NoError(t, err) val, err = GetSessionOrGlobalSystemVar(v, TiDBOptConcurrencyFactor) require.NoError(t, err) require.Equal(t, "5.0", val) - require.Equal(t, 5.0, v.ConcurrencyFactor) + require.Equal(t, 5.0, v.GetConcurrencyFactor()) err = SetSessionSystemVar(v, TiDBReplicaRead, "follower") require.NoError(t, err) @@ -673,3 +673,22 @@ func TestStmtVars(t *testing.T) { err = SetStmtVar(vars, MaxExecutionTime, "100") require.NoError(t, err) } + +func TestSessionStatesSystemVar(t *testing.T) { + vars := NewSessionVars() + err := SetSessionSystemVar(vars, "autocommit", "1") + require.NoError(t, err) + val, keep, err := GetSessionStatesSystemVar(vars, "autocommit") + require.NoError(t, err) + require.Equal(t, "ON", val) + require.Equal(t, true, keep) + _, keep, err = GetSessionStatesSystemVar(vars, Timestamp) + require.NoError(t, err) + require.Equal(t, false, keep) + err = SetSessionSystemVar(vars, MaxAllowedPacket, "1024") + require.NoError(t, err) + val, keep, err = GetSessionStatesSystemVar(vars, MaxAllowedPacket) + require.NoError(t, err) + require.Equal(t, "1024", val) + require.Equal(t, true, keep) +} diff --git a/sessiontxn/BUILD.bazel b/sessiontxn/BUILD.bazel new file mode 100644 index 0000000000000..922f80480ac34 --- /dev/null +++ b/sessiontxn/BUILD.bazel @@ -0,0 +1,44 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "sessiontxn", + srcs = [ + "failpoint.go", + "interface.go", + "txn.go", + ], + importpath = "github.com/pingcap/tidb/sessiontxn", + visibility = ["//visibility:public"], + deps = [ + "//infoschema", + "//parser/ast", + "//sessionctx", + "//util/stringutil", + "@com_github_opentracing_opentracing_go//:opentracing-go", + "@com_github_tikv_client_go_v2//oracle", + ], +) + +go_test( + name = "sessiontxn_test", + srcs = [ + "txn_context_test.go", + "txn_manager_test.go", + ], + deps = [ + ":sessiontxn", + "//domain", + "//infoschema", + "//kv", + "//parser/ast", + "//planner/core", + "//sessionctx", + "//sessiontxn/staleread", + "//testkit", + "//testkit/testsetup", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_stretchr_testify//require", + "@com_github_tikv_client_go_v2//oracle", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/sessiontxn/failpoint.go b/sessiontxn/failpoint.go index 241e39b7a8436..76ff4ea60e52a 100644 --- a/sessiontxn/failpoint.go +++ b/sessiontxn/failpoint.go @@ -16,6 +16,7 @@ package sessiontxn import ( "fmt" + "time" "github.com/pingcap/tidb/infoschema" "github.com/pingcap/tidb/sessionctx" @@ -34,6 +35,14 @@ var AssertTxnInfoSchemaKey stringutil.StringerStr = "assertTxnInfoSchemaKey" // Only for test var AssertTxnInfoSchemaAfterRetryKey stringutil.StringerStr = "assertTxnInfoSchemaAfterRetryKey" +// HookBeforeFirstRunExecutorKey is the hook key for the executor first run +// Only for test +var HookBeforeFirstRunExecutorKey stringutil.StringerStr = "testHookKeyBeforeFirstRunExecutor" + +// HookAfterOnStmtRetryWithLockErrorKey is the hook key for after OnStmtRetry with lock error +// Only for test +var HookAfterOnStmtRetryWithLockErrorKey stringutil.StringerStr = "testHookKeyAfterOnStmtRetryWithLockError" + // RecordAssert is used only for test func RecordAssert(sctx sessionctx.Context, name string, value interface{}) { records, ok := sctx.Value(AssertRecordsKey).(map[string]interface{}) @@ -84,3 +93,16 @@ func AssertTxnManagerReadTS(sctx sessionctx.Context, expected uint64) { panic(fmt.Sprintf("Txn read ts not match, expect:%d, got:%d", expected, actual)) } } + +// ExecTestHook is used only for test. It consumes hookKey in session wait do what it gets from it. +func ExecTestHook(sctx sessionctx.Context, hookKey fmt.Stringer) { + c := sctx.Value(hookKey) + if ch, ok := c.(chan func()); ok { + select { + case fn := <-ch: + fn() + case <-time.After(time.Second * 10): + panic("timeout waiting for chan") + } + } +} diff --git a/sessiontxn/interface.go b/sessiontxn/interface.go index d206da22d7242..d1febc88c8a48 100644 --- a/sessiontxn/interface.go +++ b/sessiontxn/interface.go @@ -93,17 +93,27 @@ func NoIdea() (StmtErrorAction, error) { return StmtActionNoIdea, nil } -// AdviceType is the option for advice -type AdviceType int +// TxnAdvisable providers a collection of optimizations within transaction +type TxnAdvisable interface { + // AdviseWarmup provides warmup for inner state + AdviseWarmup() error + // AdviseOptimizeWithPlan providers optimization according to the plan + AdviseOptimizeWithPlan(plan interface{}) error +} -const ( - // AdviceWarmUp indicates to warm up the provider's inner state. - // For example, the provider can prefetch tso when it is advised. - AdviceWarmUp AdviceType = iota -) +// OptimizeWithPlanAndThenWarmUp first do `AdviseOptimizeWithPlan` to optimize the txn with plan +// and then do `AdviseWarmup` to do some tso fetch if necessary +func OptimizeWithPlanAndThenWarmUp(sctx sessionctx.Context, plan interface{}) error { + txnManager := GetTxnManager(sctx) + if err := txnManager.AdviseOptimizeWithPlan(plan); err != nil { + return err + } + return txnManager.AdviseWarmup() +} // TxnContextProvider provides txn context type TxnContextProvider interface { + TxnAdvisable // GetTxnInfoSchema returns the information schema used by txn GetTxnInfoSchema() infoschema.InfoSchema // GetStmtReadTS returns the read timestamp used by select statement (not for select ... for update) @@ -119,13 +129,14 @@ type TxnContextProvider interface { OnStmtErrorForNextAction(point StmtErrorHandlePoint, err error) (StmtErrorAction, error) // OnStmtRetry is the hook that should be called when a statement is retried internally. OnStmtRetry(ctx context.Context) error - // Advise is used to give advice to provider - Advise(tp AdviceType) error } // TxnManager is an interface providing txn context management in session type TxnManager interface { + TxnAdvisable // GetTxnInfoSchema returns the information schema used by txn + // If the session is not in any transaction, for example: between two autocommit statements, + // this method will return the latest information schema in session that is same with `sessionctx.GetDomainInfoSchema()` GetTxnInfoSchema() infoschema.InfoSchema // GetStmtReadTS returns the read timestamp used by select statement (not for select ... for update) GetStmtReadTS() (uint64, error) @@ -136,6 +147,8 @@ type TxnManager interface { // EnterNewTxn enters a new transaction. EnterNewTxn(ctx context.Context, req *EnterNewTxnRequest) error + // OnTxnEnd is the hook that should be called after transaction commit or rollback + OnTxnEnd() // OnStmtStart is the hook that should be called when a new statement started OnStmtStart(ctx context.Context) error // OnStmtErrorForNextAction is the hook that should be called when a new statement get an error @@ -145,9 +158,6 @@ type TxnManager interface { OnStmtErrorForNextAction(point StmtErrorHandlePoint, err error) (StmtErrorAction, error) // OnStmtRetry is the hook that should be called when a statement retry OnStmtRetry(ctx context.Context) error - // Advise is used to give advice to provider. - // For example, `AdviceWarmUp` can tell the provider to warm up its inner state. - Advise(tp AdviceType) error } // NewTxn starts a new optimistic and active txn, it can be used for the below scenes: @@ -171,10 +181,5 @@ func NewTxnInStmt(ctx context.Context, sctx sessionctx.Context) error { return GetTxnManager(sctx).OnStmtStart(ctx) } -// WarmUpTxn gives the `AdviceWarmUp` advise to the provider -func WarmUpTxn(sctx sessionctx.Context) error { - return GetTxnManager(sctx).Advise(AdviceWarmUp) -} - // GetTxnManager returns the TxnManager object from session context var GetTxnManager func(sctx sessionctx.Context) TxnManager diff --git a/sessiontxn/isolation/BUILD.bazel b/sessiontxn/isolation/BUILD.bazel new file mode 100644 index 0000000000000..35fb911f4b636 --- /dev/null +++ b/sessiontxn/isolation/BUILD.bazel @@ -0,0 +1,62 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "isolation", + srcs = [ + "base.go", + "optimistic.go", + "readcommitted.go", + "repeatable_read.go", + "serializable.go", + ], + importpath = "github.com/pingcap/tidb/sessiontxn/isolation", + visibility = ["//visibility:public"], + deps = [ + "//infoschema", + "//kv", + "//parser/ast", + "//parser/mysql", + "//parser/terror", + "//planner/core", + "//sessionctx", + "//sessionctx/variable", + "//sessiontxn", + "//sessiontxn/staleread", + "//util/logutil", + "@com_github_pingcap_errors//:errors", + "@com_github_tikv_client_go_v2//error", + "@com_github_tikv_client_go_v2//oracle", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "isolation_test", + srcs = [ + "main_test.go", + "optimistic_test.go", + "readcommitted_test.go", + "repeatable_read_test.go", + "serializable_test.go", + ], + deps = [ + ":isolation", + "//config", + "//executor", + "//infoschema", + "//kv", + "//parser", + "//parser/ast", + "//planner", + "//sessionctx", + "//sessiontxn", + "//testkit", + "//testkit/testsetup", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_kvproto//pkg/kvrpcpb", + "@com_github_stretchr_testify//require", + "@com_github_tikv_client_go_v2//error", + "@com_github_tikv_client_go_v2//oracle", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/sessiontxn/isolation/base.go b/sessiontxn/isolation/base.go index df6d234335294..d5c3bcbca7ab1 100644 --- a/sessiontxn/isolation/base.go +++ b/sessiontxn/isolation/base.go @@ -19,19 +19,19 @@ import ( "time" "github.com/pingcap/errors" - "github.com/pingcap/tidb/domain" "github.com/pingcap/tidb/infoschema" "github.com/pingcap/tidb/kv" "github.com/pingcap/tidb/sessionctx" "github.com/pingcap/tidb/sessionctx/variable" "github.com/pingcap/tidb/sessiontxn" - "github.com/pingcap/tidb/table/temptable" + "github.com/pingcap/tidb/sessiontxn/staleread" + "github.com/tikv/client-go/v2/oracle" ) // baseTxnContextProvider is a base class for the transaction context providers that implement `TxnContextProvider` in different isolation. // It provides some common functions below: // - Provides a default `OnInitialize` method to initialize its inner state. -// - Provides some methods like `activeTxn` and `prepareTxn` to manage the inner transaction. +// - Provides some methods like `activateTxn` and `prepareTxn` to manage the inner transaction. // - Provides default methods `GetTxnInfoSchema`, `GetStmtReadTS` and `GetStmtForUpdateTS` and return the snapshot information schema or ts when `tidb_snapshot` is set. // - Provides other default methods like `Advise`, `OnStmtStart`, `OnStmtRetry` and `OnStmtErrorForNextAction` // The subclass can set some inner property of `baseTxnContextProvider` when it is constructed. @@ -59,16 +59,20 @@ func (p *baseTxnContextProvider) OnInitialize(ctx context.Context, tp sessiontxn return errors.New("ts functions should not be nil") } - activeNow := false + sessVars := p.sctx.GetSessionVars() + activeNow := true switch tp { - case sessiontxn.EnterNewTxnDefault, sessiontxn.EnterNewTxnWithBeginStmt: - shouldReuseTxn := tp == sessiontxn.EnterNewTxnWithBeginStmt && sessiontxn.CanReuseTxnWhenExplicitBegin(p.sctx) - if !shouldReuseTxn { + case sessiontxn.EnterNewTxnDefault: + if err = p.sctx.NewTxn(ctx); err != nil { + return err + } + case sessiontxn.EnterNewTxnWithBeginStmt: + if !sessiontxn.CanReuseTxnWhenExplicitBegin(p.sctx) { if err = p.sctx.NewTxn(ctx); err != nil { return err } } - activeNow = true + sessVars.SetInTxn(true) case sessiontxn.EnterNewTxnBeforeStmt: activeNow = false default: @@ -76,8 +80,10 @@ func (p *baseTxnContextProvider) OnInitialize(ctx context.Context, tp sessiontxn } p.ctx = ctx - p.infoSchema = temptable.AttachLocalTemporaryTableInfoSchema(p.sctx, domain.GetDomain(p.sctx).InfoSchema()) - sessVars := p.sctx.GetSessionVars() + // For normal `sessionctx.Context` the `GetDomainInfoSchema` should always return a non-nil value with type `infoschema.InfoSchema` + // However for some test cases we are using `mock.Context` which will return nil for this method, + // so we use `p.infoSchema, _ = ...` to avoid panic in test cases + p.infoSchema, _ = p.sctx.GetDomainInfoSchema().(infoschema.InfoSchema) txnCtx := &variable.TransactionContext{ TxnCtxNoNeedToRestore: variable.TxnCtxNoNeedToRestore{ CreateTime: time.Now(), @@ -90,8 +96,14 @@ func (p *baseTxnContextProvider) OnInitialize(ctx context.Context, tp sessiontxn p.onInitializeTxnCtx(txnCtx) } sessVars.TxnCtx = txnCtx + + txn, err := p.sctx.Txn(false) + if err != nil { + return err + } + p.isTxnPrepared = txn.Valid() || p.sctx.GetPreparedTSFuture() != nil if activeNow { - _, err = p.activeTxn() + _, err = p.activateTxn() } return err @@ -105,6 +117,10 @@ func (p *baseTxnContextProvider) GetTxnInfoSchema() infoschema.InfoSchema { } func (p *baseTxnContextProvider) GetStmtReadTS() (uint64, error) { + if _, err := p.activateTxn(); err != nil { + return 0, err + } + if snapshotTS := p.sctx.GetSessionVars().SnapshotTS; snapshotTS != 0 { return snapshotTS, nil } @@ -112,20 +128,16 @@ func (p *baseTxnContextProvider) GetStmtReadTS() (uint64, error) { } func (p *baseTxnContextProvider) GetStmtForUpdateTS() (uint64, error) { + if _, err := p.activateTxn(); err != nil { + return 0, err + } + if snapshotTS := p.sctx.GetSessionVars().SnapshotTS; snapshotTS != 0 { return snapshotTS, nil } return p.getStmtForUpdateTSFunc() } -func (p *baseTxnContextProvider) Advise(tp sessiontxn.AdviceType) error { - switch tp { - case sessiontxn.AdviceWarmUp: - return p.warmUp() - } - return nil -} - func (p *baseTxnContextProvider) OnStmtStart(ctx context.Context) error { p.ctx = ctx return nil @@ -147,14 +159,14 @@ func (p *baseTxnContextProvider) OnStmtErrorForNextAction(point sessiontxn.StmtE } func (p *baseTxnContextProvider) getTxnStartTS() (uint64, error) { - txn, err := p.activeTxn() + txn, err := p.activateTxn() if err != nil { return 0, err } return txn.StartTS(), nil } -func (p *baseTxnContextProvider) activeTxn() (kv.Transaction, error) { +func (p *baseTxnContextProvider) activateTxn() (kv.Transaction, error) { if p.txn != nil { return p.txn, nil } @@ -188,7 +200,33 @@ func (p *baseTxnContextProvider) prepareTxn() error { return nil } - p.sctx.PrepareTSFuture(p.ctx) + if snapshotTS := p.sctx.GetSessionVars().SnapshotTS; snapshotTS != 0 { + return p.prepareTxnWithTS(snapshotTS) + } + + future := sessiontxn.NewOracleFuture(p.ctx, p.sctx, p.sctx.GetSessionVars().TxnCtx.TxnScope) + return p.replaceTxnTsFuture(future) +} + +func (p *baseTxnContextProvider) prepareTxnWithTS(ts uint64) error { + return p.replaceTxnTsFuture(sessiontxn.ConstantFuture(ts)) +} + +func (p *baseTxnContextProvider) replaceTxnTsFuture(future oracle.Future) error { + txn, err := p.sctx.Txn(false) + if err != nil { + return err + } + + if txn.Valid() { + return nil + } + + txnScope := p.sctx.GetSessionVars().TxnCtx.TxnScope + if err = p.sctx.PrepareTSFuture(p.ctx, future, txnScope); err != nil { + return err + } + p.isTxnPrepared = true return nil } @@ -197,9 +235,23 @@ func (p *baseTxnContextProvider) isTidbSnapshotEnabled() bool { return p.sctx.GetSessionVars().SnapshotTS != 0 } -func (p *baseTxnContextProvider) warmUp() error { - if p.isTidbSnapshotEnabled() { +// isBeginStmtWithStaleRead indicates whether the current statement is `BeginStmt` type with stale read +// Because stale read will use `staleread.StalenessTxnContextProvider` for query, so if `staleread.IsStmtStaleness()` +// returns true in other providers, it means the current statement is `BeginStmt` with stale read +func (p *baseTxnContextProvider) isBeginStmtWithStaleRead() bool { + return staleread.IsStmtStaleness(p.sctx) +} + +// AdviseWarmup provides warmup for inner state +func (p *baseTxnContextProvider) AdviseWarmup() error { + if p.isBeginStmtWithStaleRead() { + // When executing `START TRANSACTION READ ONLY AS OF ...` no need to warmUp return nil } return p.prepareTxn() } + +// AdviseOptimizeWithPlan providers optimization according to the plan +func (p *baseTxnContextProvider) AdviseOptimizeWithPlan(_ interface{}) error { + return nil +} diff --git a/sessiontxn/isolation/main_test.go b/sessiontxn/isolation/main_test.go index 2a14c31978461..4c04d03243363 100644 --- a/sessiontxn/isolation/main_test.go +++ b/sessiontxn/isolation/main_test.go @@ -52,7 +52,9 @@ type txnAssert[T sessiontxn.TxnContextProvider] struct { active bool inTxn bool minStartTS uint64 + startTS uint64 causalConsistencyOnly bool + couldRetry bool } func (a *txnAssert[T]) Check(t *testing.T) { @@ -73,25 +75,42 @@ func (a *txnAssert[T]) Check(t *testing.T) { require.GreaterOrEqual(t, txnCtx.CreateTime.Nanosecond(), a.minStartTime.Nanosecond()) require.Equal(t, a.inTxn, sessVars.InTxn()) require.Equal(t, a.inTxn, txnCtx.IsExplicit) + require.Equal(t, a.couldRetry, txnCtx.CouldRetry) txn, err := a.sctx.Txn(false) require.NoError(t, err) require.Equal(t, a.active, txn.Valid()) if !a.active { require.False(t, a.inTxn) + require.Zero(t, a.startTS) require.Zero(t, txnCtx.StartTS) } else { - require.NotZero(t, a.minStartTS) + require.True(t, a.minStartTS != 0 || a.startTS != 0) require.Greater(t, txnCtx.StartTS, a.minStartTS) + if a.startTS != 0 { + require.Equal(t, a.startTS, txnCtx.StartTS) + } require.Equal(t, txnCtx.StartTS, txn.StartTS()) require.Same(t, sessVars.KVVars, txn.GetVars()) require.Equal(t, txnCtx.TxnScope, txn.GetOption(kv.TxnScope)) require.Equal(t, a.causalConsistencyOnly, !txn.GetOption(kv.GuaranteeLinearizability).(bool)) + require.Equal(t, txnCtx.IsPessimistic, txn.IsPessimistic()) } // The next line is testing the provider has the type T, if not, the cast will panic _ = provider.(T) } +func activeSnapshotTxnAssert(sctx sessionctx.Context, ts uint64, isolation string) *txnAssert[sessiontxn.TxnContextProvider] { + return &txnAssert[sessiontxn.TxnContextProvider]{ + sctx: sctx, + minStartTime: time.Now(), + startTS: ts, + active: true, + inTxn: false, + isolation: isolation, + } +} + func (a *txnAssert[T]) CheckAndGetProvider(t *testing.T) T { a.Check(t) return sessiontxn.GetTxnManager(a.sctx).GetContextProvider().(T) diff --git a/sessiontxn/isolation/optimistic.go b/sessiontxn/isolation/optimistic.go new file mode 100644 index 0000000000000..f5d56fdf5929e --- /dev/null +++ b/sessiontxn/isolation/optimistic.go @@ -0,0 +1,83 @@ +// 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 isolation + +import ( + "math" + + "github.com/pingcap/tidb/kv" + "github.com/pingcap/tidb/parser/mysql" + plannercore "github.com/pingcap/tidb/planner/core" + "github.com/pingcap/tidb/sessionctx" + "github.com/pingcap/tidb/util/logutil" + "go.uber.org/zap" +) + +// OptimisticTxnContextProvider provides txn context for optimistic transaction +type OptimisticTxnContextProvider struct { + baseTxnContextProvider +} + +// NewOptimisticTxnContextProvider returns a new OptimisticTxnContextProvider +func NewOptimisticTxnContextProvider(sctx sessionctx.Context, causalConsistencyOnly bool) *OptimisticTxnContextProvider { + provider := &OptimisticTxnContextProvider{ + baseTxnContextProvider: baseTxnContextProvider{ + sctx: sctx, + causalConsistencyOnly: causalConsistencyOnly, + }, + } + + provider.getStmtReadTSFunc = provider.getTxnStartTS + provider.getStmtForUpdateTSFunc = provider.getTxnStartTS + return provider +} + +// AdviseOptimizeWithPlan providers optimization according to the plan +// It will use MaxTS as the startTS in autocommit txn for some plans. +func (p *OptimisticTxnContextProvider) AdviseOptimizeWithPlan(plan interface{}) (err error) { + if p.isTidbSnapshotEnabled() || p.isBeginStmtWithStaleRead() { + return nil + } + + realPlan, ok := plan.(plannercore.Plan) + if !ok { + return nil + } + + if execute, ok := plan.(*plannercore.Execute); ok { + realPlan = execute.Plan + } + + ok, err = plannercore.IsPointGetWithPKOrUniqueKeyByAutoCommit(p.sctx, realPlan) + if err != nil { + return err + } + + if ok { + sessVars := p.sctx.GetSessionVars() + logutil.BgLogger().Debug("init txnStartTS with MaxUint64", + zap.Uint64("conn", sessVars.ConnectionID), + zap.String("text", sessVars.StmtCtx.OriginalSQL), + ) + if err = p.prepareTxnWithTS(math.MaxUint64); err != nil { + return err + } + + if sessVars.StmtCtx.Priority == mysql.NoPriority { + sessVars.StmtCtx.Priority = kv.PriorityHigh + } + } + return nil +} diff --git a/sessiontxn/isolation/optimistic_test.go b/sessiontxn/isolation/optimistic_test.go new file mode 100644 index 0000000000000..25390dca1aa19 --- /dev/null +++ b/sessiontxn/isolation/optimistic_test.go @@ -0,0 +1,411 @@ +// 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 isolation_test + +import ( + "context" + "errors" + "fmt" + "math" + "testing" + "time" + + "github.com/pingcap/tidb/config" + + "github.com/pingcap/kvproto/pkg/kvrpcpb" + "github.com/pingcap/tidb/infoschema" + "github.com/pingcap/tidb/kv" + "github.com/pingcap/tidb/parser" + "github.com/pingcap/tidb/parser/ast" + "github.com/pingcap/tidb/planner" + "github.com/pingcap/tidb/sessionctx" + "github.com/pingcap/tidb/sessiontxn" + "github.com/pingcap/tidb/sessiontxn/isolation" + "github.com/pingcap/tidb/testkit" + "github.com/stretchr/testify/require" + tikverr "github.com/tikv/client-go/v2/error" +) + +func TestOptimisticTxnContextProviderTS(t *testing.T) { + store, _, clean := testkit.CreateMockStoreAndDomain(t) + defer clean() + + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t(id int primary key, v int)") + + se := tk.Session() + compareTS := getOracleTS(t, se) + provider := initializeOptimisticProvider(t, tk, true) + require.NoError(t, provider.OnStmtStart(context.TODO())) + readTS, err := provider.GetStmtReadTS() + require.NoError(t, err) + updateTS, err := provider.GetStmtForUpdateTS() + require.NoError(t, err) + require.Equal(t, readTS, updateTS) + require.Greater(t, readTS, compareTS) + compareTS = readTS + + // for optimistic mode ts, ts should be the same for all statements + require.NoError(t, provider.OnStmtStart(context.TODO())) + readTS, err = provider.GetStmtReadTS() + require.NoError(t, err) + updateTS, err = provider.GetStmtForUpdateTS() + require.NoError(t, err) + require.Equal(t, compareTS, readTS) + require.Equal(t, compareTS, updateTS) + + // when the plan is point get, `math.MaxUint64` should be used + stmts, _, err := parser.New().Parse("select * from t where id=1", "", "") + require.NoError(t, err) + stmt := stmts[0] + provider = initializeOptimisticProvider(t, tk, false) + require.NoError(t, provider.OnStmtStart(context.TODO())) + plan, _, err := planner.Optimize(context.TODO(), tk.Session(), stmt, provider.GetTxnInfoSchema()) + require.NoError(t, err) + require.NoError(t, provider.AdviseOptimizeWithPlan(plan)) + readTS, err = provider.GetStmtReadTS() + require.NoError(t, err) + updateTS, err = provider.GetStmtForUpdateTS() + require.NoError(t, err) + require.Equal(t, uint64(math.MaxUint64), readTS) + require.Equal(t, uint64(math.MaxUint64), updateTS) + + // if the oracle future is prepared fist, `math.MaxUint64` should still be used after plan + provider = initializeOptimisticProvider(t, tk, false) + require.NoError(t, provider.OnStmtStart(context.TODO())) + require.NoError(t, provider.AdviseWarmup()) + plan, _, err = planner.Optimize(context.TODO(), tk.Session(), stmt, provider.GetTxnInfoSchema()) + require.NoError(t, err) + require.NoError(t, provider.AdviseOptimizeWithPlan(plan)) + readTS, err = provider.GetStmtReadTS() + require.NoError(t, err) + updateTS, err = provider.GetStmtForUpdateTS() + require.NoError(t, err) + require.Equal(t, uint64(math.MaxUint64), readTS) + require.Equal(t, uint64(math.MaxUint64), updateTS) + + // when it is in explicit txn, we should not use `math.MaxUint64` + compareTS = getOracleTS(t, se) + provider = initializeOptimisticProvider(t, tk, true) + require.NoError(t, provider.OnStmtStart(context.TODO())) + plan, _, err = planner.Optimize(context.TODO(), tk.Session(), stmt, provider.GetTxnInfoSchema()) + require.NoError(t, err) + require.NoError(t, provider.AdviseOptimizeWithPlan(plan)) + readTS, err = provider.GetStmtReadTS() + require.NoError(t, err) + updateTS, err = provider.GetStmtForUpdateTS() + require.NoError(t, err) + require.Equal(t, readTS, updateTS) + require.Greater(t, readTS, compareTS) + + // when it autocommit=0, we should not use `math.MaxUint64` + tk.MustExec("set @@autocommit=0") + compareTS = getOracleTS(t, se) + provider = initializeOptimisticProvider(t, tk, false) + require.NoError(t, provider.OnStmtStart(context.TODO())) + plan, _, err = planner.Optimize(context.TODO(), tk.Session(), stmt, provider.GetTxnInfoSchema()) + require.NoError(t, err) + require.NoError(t, provider.AdviseOptimizeWithPlan(plan)) + readTS, err = provider.GetStmtReadTS() + require.NoError(t, err) + updateTS, err = provider.GetStmtForUpdateTS() + require.NoError(t, err) + require.Equal(t, readTS, updateTS) + require.Greater(t, readTS, compareTS) +} + +func TestOptimisticHandleError(t *testing.T) { + store, _, clean := testkit.CreateMockStoreAndDomain(t) + defer clean() + + tk := testkit.NewTestKit(t, store) + provider := initializeOptimisticProvider(t, tk, true) + startTS := tk.Session().GetSessionVars().TxnCtx.StartTS + checkTS := func() { + ts, err := provider.GetStmtReadTS() + require.NoError(t, err) + require.Equal(t, startTS, ts) + + ts, err = provider.GetStmtForUpdateTS() + require.NoError(t, err) + require.Equal(t, startTS, ts) + } + + cases := []struct { + point sessiontxn.StmtErrorHandlePoint + err error + }{ + { + point: sessiontxn.StmtErrAfterPessimisticLock, + err: kv.ErrWriteConflict, + }, + { + point: sessiontxn.StmtErrAfterPessimisticLock, + err: &tikverr.ErrDeadlock{Deadlock: &kvrpcpb.Deadlock{}, IsRetryable: true}, + }, + { + point: sessiontxn.StmtErrAfterPessimisticLock, + err: &tikverr.ErrDeadlock{Deadlock: &kvrpcpb.Deadlock{}, IsRetryable: false}, + }, + { + point: sessiontxn.StmtErrAfterPessimisticLock, + err: errors.New("test"), + }, + { + point: sessiontxn.StmtErrAfterQuery, + err: kv.ErrWriteConflict, + }, + { + point: sessiontxn.StmtErrAfterQuery, + err: errors.New("test"), + }, + } + + for _, c := range cases { + require.NoError(t, provider.OnStmtStart(context.TODO())) + action, err := provider.OnStmtErrorForNextAction(c.point, c.err) + if c.point == sessiontxn.StmtErrAfterPessimisticLock { + require.Error(t, err) + require.Same(t, c.err, err) + require.Equal(t, sessiontxn.StmtActionError, action) + + // next statement should not update ts + require.NoError(t, provider.OnStmtStart(context.TODO())) + checkTS() + } else { + require.NoError(t, err) + require.Equal(t, sessiontxn.StmtActionNoIdea, action) + + // retry should not update ts + require.NoError(t, provider.OnStmtRetry(context.TODO())) + checkTS() + + // OnStmtErrorForNextAction again + require.NoError(t, provider.OnStmtStart(context.TODO())) + action, err = provider.OnStmtErrorForNextAction(c.point, c.err) + require.NoError(t, err) + require.Equal(t, sessiontxn.StmtActionNoIdea, action) + + // next statement should not update ts + require.NoError(t, provider.OnStmtStart(context.TODO())) + checkTS() + } + } +} + +func TestOptimisticProviderInitialize(t *testing.T) { + store, _, clean := testkit.CreateMockStoreAndDomain(t) + defer clean() + + tk := testkit.NewTestKit(t, store) + se := tk.Session() + + // begin outside a txn + assert := activeOptimisticTxnAssert(t, se, true) + tk.MustExec("begin") + assert.Check(t) + + // begin in a txn + assert = activeOptimisticTxnAssert(t, se, true) + tk.MustExec("begin") + assert.Check(t) + + // begin outside a txn when tidb_disable_txn_auto_retry=0 + tk.MustExec("set @@tidb_disable_txn_auto_retry=0") + tk.MustExec("rollback") + assert = activeOptimisticTxnAssert(t, se, true) + assert.couldRetry = true + tk.MustExec("begin") + assert.Check(t) + + // START TRANSACTION WITH CAUSAL CONSISTENCY ONLY + assert = activeOptimisticTxnAssert(t, se, true) + assert.causalConsistencyOnly = true + tk.MustExec("START TRANSACTION WITH CAUSAL CONSISTENCY ONLY") + assert.Check(t) + + // EnterNewTxnDefault will create an active txn, but not explicit + assert = activeOptimisticTxnAssert(t, se, false) + require.NoError(t, sessiontxn.GetTxnManager(se).EnterNewTxn(context.TODO(), &sessiontxn.EnterNewTxnRequest{ + Type: sessiontxn.EnterNewTxnDefault, + TxnMode: ast.Optimistic, + })) + assert.Check(t) + + tk.MustExec("rollback") + require.NoError(t, sessiontxn.GetTxnManager(se).EnterNewTxn(context.TODO(), &sessiontxn.EnterNewTxnRequest{ + Type: sessiontxn.EnterNewTxnDefault, + })) + assert.Check(t) + + // non-active txn and then active it + cases := []struct { + disableTxnAutoRetry bool + autocommit bool + }{ + { + true, true, + }, + { + true, false, + }, + { + false, true, + }, + { + false, false, + }, + } + for _, c := range cases { + t.Run(fmt.Sprintf("disableAutRetry: %v, autoCommit: %v", c.disableTxnAutoRetry, c.autocommit), func(t *testing.T) { + tk.MustExec("rollback") + defer tk.MustExec("rollback") + tk.MustExec(fmt.Sprintf("set @@autocommit=%v", c.autocommit)) + tk.MustExec(fmt.Sprintf("set @@tidb_disable_txn_auto_retry=%v", c.disableTxnAutoRetry)) + assert = inactiveOptimisticTxnAssert(se) + assertAfterActive := activeOptimisticTxnAssert(t, se, !c.autocommit) + assertAfterActive.couldRetry = c.autocommit || !c.disableTxnAutoRetry + require.NoError(t, se.PrepareTxnCtx(context.TODO())) + provider := assert.CheckAndGetProvider(t) + require.NoError(t, provider.OnStmtStart(context.TODO())) + ts, err := provider.GetStmtReadTS() + require.NoError(t, err) + assertAfterActive.Check(t) + require.Equal(t, ts, se.GetSessionVars().TxnCtx.StartTS) + }) + } +} + +func TestTidbSnapshotVarInOptimisticTxn(t *testing.T) { + store, dom, clean := testkit.CreateMockStoreAndDomain(t) + defer clean() + + tk := testkit.NewTestKit(t, store) + se := tk.Session() + tk.MustExec("set @@tx_isolation = 'READ-COMMITTED'") + safePoint := "20160102-15:04:05 -0700" + tk.MustExec(fmt.Sprintf(`INSERT INTO mysql.tidb VALUES ('tikv_gc_safe_point', '%s', '') ON DUPLICATE KEY UPDATE variable_value = '%s', comment=''`, safePoint, safePoint)) + + time.Sleep(time.Millisecond * 50) + tk.MustExec("set @a=now(6)") + snapshotISVersion := dom.InfoSchema().SchemaMetaVersion() + time.Sleep(time.Millisecond * 50) + tk.MustExec("use test") + tk.MustExec("create table t1(id int)") + tk.MustExec("create temporary table t2(id int)") + tk.MustExec("set @@tidb_snapshot=@a") + snapshotTS := tk.Session().GetSessionVars().SnapshotTS + isVersion := dom.InfoSchema().SchemaMetaVersion() + + assert := activeOptimisticTxnAssert(t, se, true) + tk.MustExec("begin") + provider := assert.CheckAndGetProvider(t) + txn, err := se.Txn(false) + require.NoError(t, err) + require.Greater(t, txn.StartTS(), snapshotTS) + + checkUseSnapshot := func() { + is := provider.GetTxnInfoSchema() + require.Equal(t, snapshotISVersion, is.SchemaMetaVersion()) + require.IsType(t, &infoschema.TemporaryTableAttachedInfoSchema{}, is) + readTS, err := provider.GetStmtReadTS() + require.NoError(t, err) + require.Equal(t, snapshotTS, readTS) + forUpdateTS, err := provider.GetStmtForUpdateTS() + require.NoError(t, err) + require.Equal(t, readTS, forUpdateTS) + } + + checkUseTxn := func() { + is := provider.GetTxnInfoSchema() + require.Equal(t, isVersion, is.SchemaMetaVersion()) + require.IsType(t, &infoschema.TemporaryTableAttachedInfoSchema{}, is) + readTS, err := provider.GetStmtReadTS() + require.NoError(t, err) + require.NotEqual(t, snapshotTS, readTS) + require.Equal(t, se.GetSessionVars().TxnCtx.StartTS, readTS) + forUpdateTS, err := provider.GetStmtForUpdateTS() + require.NoError(t, err) + require.Equal(t, readTS, forUpdateTS) + } + + // information schema and ts should equal to snapshot when tidb_snapshot is set + require.NoError(t, provider.OnStmtStart(context.TODO())) + checkUseSnapshot() + + // information schema and ts will restore when set tidb_snapshot to empty + tk.MustExec("set @@tidb_snapshot=''") + require.NoError(t, provider.OnStmtStart(context.TODO())) + checkUseTxn() + + // txn will not be active after `GetStmtReadTS` or `GetStmtForUpdateTS` when `tidb_snapshot` is set + for _, autocommit := range []int{0, 1} { + func() { + tk.MustExec("rollback") + tk.MustExec(fmt.Sprintf("set @@autocommit=%d", autocommit)) + tk.MustExec("set @@tidb_snapshot=@a") + if autocommit == 1 { + origPessimisticAutoCommit := config.GetGlobalConfig().PessimisticTxn.PessimisticAutoCommit.Load() + config.GetGlobalConfig().PessimisticTxn.PessimisticAutoCommit.Store(true) + defer func() { + config.GetGlobalConfig().PessimisticTxn.PessimisticAutoCommit.Store(origPessimisticAutoCommit) + }() + } + assert = inactiveOptimisticTxnAssert(se) + assertAfterUseSnapshot := activeSnapshotTxnAssert(se, se.GetSessionVars().SnapshotTS, "") + require.NoError(t, se.PrepareTxnCtx(context.TODO())) + provider = assert.CheckAndGetProvider(t) + require.NoError(t, provider.OnStmtStart(context.TODO())) + checkUseSnapshot() + assertAfterUseSnapshot.Check(t) + }() + } +} + +func activeOptimisticTxnAssert(t *testing.T, sctx sessionctx.Context, inTxn bool) *txnAssert[*isolation.OptimisticTxnContextProvider] { + return &txnAssert[*isolation.OptimisticTxnContextProvider]{ + sctx: sctx, + minStartTime: time.Now(), + active: true, + inTxn: inTxn, + minStartTS: getOracleTS(t, sctx), + } +} + +func inactiveOptimisticTxnAssert(sctx sessionctx.Context) *txnAssert[*isolation.OptimisticTxnContextProvider] { + return &txnAssert[*isolation.OptimisticTxnContextProvider]{ + sctx: sctx, + minStartTime: time.Now(), + active: false, + } +} + +func initializeOptimisticProvider(t *testing.T, tk *testkit.TestKit, withExplicitBegin bool) *isolation.OptimisticTxnContextProvider { + tk.MustExec("commit") + if withExplicitBegin { + assert := activeOptimisticTxnAssert(t, tk.Session(), true) + tk.MustExec("begin optimistic") + return assert.CheckAndGetProvider(t) + } + + assert := inactiveOptimisticTxnAssert(tk.Session()) + err := sessiontxn.GetTxnManager(tk.Session()).EnterNewTxn(context.TODO(), &sessiontxn.EnterNewTxnRequest{ + Type: sessiontxn.EnterNewTxnBeforeStmt, + TxnMode: ast.Optimistic, + }) + require.NoError(t, err) + return assert.CheckAndGetProvider(t) +} diff --git a/sessiontxn/isolation/readcommitted.go b/sessiontxn/isolation/readcommitted.go index d5a356114a32e..8a409000d7049 100644 --- a/sessiontxn/isolation/readcommitted.go +++ b/sessiontxn/isolation/readcommitted.go @@ -107,28 +107,6 @@ func (p *PessimisticRCTxnContextProvider) OnStmtRetry(ctx context.Context) error return p.prepareStmt(false) } -// Advise is used to give advice to provider -func (p *PessimisticRCTxnContextProvider) Advise(tp sessiontxn.AdviceType) error { - switch tp { - case sessiontxn.AdviceWarmUp: - return p.warmUp() - default: - return p.baseTxnContextProvider.Advise(tp) - } -} - -func (p *PessimisticRCTxnContextProvider) warmUp() error { - if p.isTidbSnapshotEnabled() { - return nil - } - - if err := p.prepareTxn(); err != nil { - return err - } - p.prepareStmtTS() - return nil -} - func (p *PessimisticRCTxnContextProvider) prepareStmtTS() { if p.stmtTSFuture != nil { return @@ -154,7 +132,7 @@ func (p *PessimisticRCTxnContextProvider) getStmtTS() (ts uint64, err error) { } var txn kv.Transaction - if txn, err = p.activeTxn(); err != nil { + if txn, err = p.activateTxn(); err != nil { return 0, err } @@ -216,3 +194,16 @@ func (p *PessimisticRCTxnContextProvider) handleAfterPessimisticLockError(lockEr return sessiontxn.ErrorAction(lockErr) } + +// AdviseWarmup provides warmup for inner state +func (p *PessimisticRCTxnContextProvider) AdviseWarmup() error { + if p.isTidbSnapshotEnabled() { + return nil + } + + if err := p.prepareTxn(); err != nil { + return err + } + p.prepareStmtTS() + return nil +} diff --git a/sessiontxn/isolation/readcommitted_test.go b/sessiontxn/isolation/readcommitted_test.go index 70a67fdc6cfa4..d867cc689ca28 100644 --- a/sessiontxn/isolation/readcommitted_test.go +++ b/sessiontxn/isolation/readcommitted_test.go @@ -22,6 +22,7 @@ import ( "github.com/pingcap/errors" "github.com/pingcap/kvproto/pkg/kvrpcpb" + "github.com/pingcap/tidb/config" "github.com/pingcap/tidb/executor" "github.com/pingcap/tidb/infoschema" "github.com/pingcap/tidb/kv" @@ -264,7 +265,7 @@ func TestRCProviderInitialize(t *testing.T) { // non-active txn and then active it tk.MustExec("rollback") tk.MustExec("set @@autocommit=0") - assert = inActiveRCTxnAssert(se) + assert = inactiveRCTxnAssert(se) assertAfterActive := activeRCTxnAssert(t, se, true) require.NoError(t, se.PrepareTxnCtx(context.TODO())) provider := assert.CheckAndGetProvider(t) @@ -274,9 +275,22 @@ func TestRCProviderInitialize(t *testing.T) { assertAfterActive.Check(t) require.Equal(t, ts, se.GetSessionVars().TxnCtx.StartTS) tk.MustExec("rollback") + + // Case Pessimistic Autocommit + config.GetGlobalConfig().PessimisticTxn.PessimisticAutoCommit.Store(true) + assert = inactiveRCTxnAssert(se) + assertAfterActive = activeRCTxnAssert(t, se, true) + require.NoError(t, se.PrepareTxnCtx(context.TODO())) + provider = assert.CheckAndGetProvider(t) + require.NoError(t, provider.OnStmtStart(context.TODO())) + ts, err = provider.GetStmtReadTS() + require.NoError(t, err) + assertAfterActive.Check(t) + require.Equal(t, ts, se.GetSessionVars().TxnCtx.StartTS) + tk.MustExec("rollback") } -func TestTidbSnapshotVar(t *testing.T) { +func TestTidbSnapshotVarInRC(t *testing.T) { store, dom, clean := testkit.CreateMockStoreAndDomain(t) defer clean() @@ -343,23 +357,28 @@ func TestTidbSnapshotVar(t *testing.T) { checkUseTxn(false) // txn will not be active after `GetStmtReadTS` or `GetStmtForUpdateTS` when `tidb_snapshot` is set - tk.MustExec("rollback") - tk.MustExec("set @@tidb_txn_mode='pessimistic'") - tk.MustExec("set @@autocommit=0") - assert = inActiveRCTxnAssert(se) - assertAfterActive := activeRCTxnAssert(t, se, true) - require.NoError(t, se.PrepareTxnCtx(context.TODO())) - provider = assert.CheckAndGetProvider(t) - require.NoError(t, provider.OnStmtStart(context.TODO())) - tk.MustExec("set @@tidb_snapshot=@a") - checkUseSnapshot() - txn, err = se.Txn(false) - require.NoError(t, err) - require.False(t, txn.Valid()) - tk.MustExec("set @@tidb_snapshot=''") - checkUseTxn(true) - assertAfterActive.Check(t) - tk.MustExec("rollback") + for _, autocommit := range []int{0, 1} { + func() { + tk.MustExec("rollback") + tk.MustExec("set @@tidb_txn_mode='pessimistic'") + tk.MustExec(fmt.Sprintf("set @@autocommit=%d", autocommit)) + tk.MustExec("set @@tidb_snapshot=@a") + if autocommit == 1 { + origPessimisticAutoCommit := config.GetGlobalConfig().PessimisticTxn.PessimisticAutoCommit.Load() + config.GetGlobalConfig().PessimisticTxn.PessimisticAutoCommit.Store(true) + defer func() { + config.GetGlobalConfig().PessimisticTxn.PessimisticAutoCommit.Store(origPessimisticAutoCommit) + }() + } + assert = inactiveRCTxnAssert(se) + assertAfterUseSnapshot := activeSnapshotTxnAssert(se, se.GetSessionVars().SnapshotTS, "READ-COMMITTED") + require.NoError(t, se.PrepareTxnCtx(context.TODO())) + provider = assert.CheckAndGetProvider(t) + require.NoError(t, provider.OnStmtStart(context.TODO())) + checkUseSnapshot() + assertAfterUseSnapshot.Check(t) + }() + } } func activeRCTxnAssert(t *testing.T, sctx sessionctx.Context, inTxn bool) *txnAssert[*isolation.PessimisticRCTxnContextProvider] { @@ -373,7 +392,7 @@ func activeRCTxnAssert(t *testing.T, sctx sessionctx.Context, inTxn bool) *txnAs } } -func inActiveRCTxnAssert(sctx sessionctx.Context) *txnAssert[*isolation.PessimisticRCTxnContextProvider] { +func inactiveRCTxnAssert(sctx sessionctx.Context) *txnAssert[*isolation.PessimisticRCTxnContextProvider] { return &txnAssert[*isolation.PessimisticRCTxnContextProvider]{ sctx: sctx, isolation: "READ-COMMITTED", diff --git a/sessiontxn/isolation/repeatable_read.go b/sessiontxn/isolation/repeatable_read.go new file mode 100644 index 0000000000000..ef678f40c614c --- /dev/null +++ b/sessiontxn/isolation/repeatable_read.go @@ -0,0 +1,251 @@ +// 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 isolation + +import ( + "context" + + "github.com/pingcap/errors" + "github.com/pingcap/tidb/kv" + "github.com/pingcap/tidb/parser/ast" + "github.com/pingcap/tidb/parser/terror" + plannercore "github.com/pingcap/tidb/planner/core" + "github.com/pingcap/tidb/sessionctx" + "github.com/pingcap/tidb/sessionctx/variable" + "github.com/pingcap/tidb/sessiontxn" + "github.com/pingcap/tidb/util/logutil" + tikverr "github.com/tikv/client-go/v2/error" + "go.uber.org/zap" +) + +// PessimisticRRTxnContextProvider provides txn context for isolation level repeatable-read +type PessimisticRRTxnContextProvider struct { + baseTxnContextProvider + + // Used for ForUpdateRead statement + forUpdateTS uint64 + // It may decide whether to update forUpdateTs when calling provider's getForUpdateTs + // See more details in the comments of optimizeWithPlan + followingOperatorIsPointGetForUpdate bool +} + +// NewPessimisticRRTxnContextProvider returns a new PessimisticRRTxnContextProvider +func NewPessimisticRRTxnContextProvider(sctx sessionctx.Context, causalConsistencyOnly bool) *PessimisticRRTxnContextProvider { + provider := &PessimisticRRTxnContextProvider{ + baseTxnContextProvider: baseTxnContextProvider{ + sctx: sctx, + causalConsistencyOnly: causalConsistencyOnly, + onInitializeTxnCtx: func(txnCtx *variable.TransactionContext) { + txnCtx.IsPessimistic = true + txnCtx.Isolation = ast.RepeatableRead + }, + onTxnActive: func(txn kv.Transaction) { + txn.SetOption(kv.Pessimistic, true) + }, + }, + } + + provider.getStmtReadTSFunc = provider.getTxnStartTS + provider.getStmtForUpdateTSFunc = provider.getForUpdateTs + + return provider +} + +func (p *PessimisticRRTxnContextProvider) getForUpdateTs() (ts uint64, err error) { + if p.forUpdateTS != 0 { + return p.forUpdateTS, nil + } + + var txn kv.Transaction + if txn, err = p.activateTxn(); err != nil { + return 0, err + } + + if p.followingOperatorIsPointGetForUpdate { + p.forUpdateTS = p.sctx.GetSessionVars().TxnCtx.GetForUpdateTS() + return p.forUpdateTS, nil + } + + txnCtx := p.sctx.GetSessionVars().TxnCtx + futureTS := sessiontxn.NewOracleFuture(p.ctx, p.sctx, txnCtx.TxnScope) + + if ts, err = futureTS.Wait(); err != nil { + return 0, err + } + + txnCtx.SetForUpdateTS(ts) + txn.SetOption(kv.SnapshotTS, ts) + + p.forUpdateTS = ts + + return +} + +// updateForUpdateTS acquires the latest TSO and update the TransactionContext and kv.Transaction with it. +func (p *PessimisticRRTxnContextProvider) updateForUpdateTS() (err error) { + sctx := p.sctx + var txn kv.Transaction + + if txn, err = sctx.Txn(false); err != nil { + return err + } + + if !txn.Valid() { + return errors.Trace(kv.ErrInvalidTxn) + } + + // Because the ForUpdateTS is used for the snapshot for reading data in DML. + // We can avoid allocating a global TSO here to speed it up by using the local TSO. + version, err := sctx.GetStore().CurrentVersion(sctx.GetSessionVars().TxnCtx.TxnScope) + if err != nil { + return err + } + + sctx.GetSessionVars().TxnCtx.SetForUpdateTS(version.Ver) + txn.SetOption(kv.SnapshotTS, sctx.GetSessionVars().TxnCtx.GetForUpdateTS()) + + return nil +} + +// OnStmtStart is the hook that should be called when a new statement started +func (p *PessimisticRRTxnContextProvider) OnStmtStart(ctx context.Context) error { + if err := p.baseTxnContextProvider.OnStmtStart(ctx); err != nil { + return err + } + + p.forUpdateTS = 0 + p.followingOperatorIsPointGetForUpdate = false + + return nil +} + +// OnStmtRetry is the hook that should be called when a statement is retried internally. +func (p *PessimisticRRTxnContextProvider) OnStmtRetry(ctx context.Context) (err error) { + if err = p.baseTxnContextProvider.OnStmtRetry(ctx); err != nil { + return err + } + + txnCtxForUpdateTS := p.sctx.GetSessionVars().TxnCtx.GetForUpdateTS() + // If TxnCtx.forUpdateTS is updated in OnStmtErrorForNextAction, we assign the value to the provider + if txnCtxForUpdateTS > p.forUpdateTS { + p.forUpdateTS = txnCtxForUpdateTS + } else { + p.forUpdateTS = 0 + } + + p.followingOperatorIsPointGetForUpdate = false + + return nil +} + +// OnStmtErrorForNextAction is the hook that should be called when a new statement get an error +func (p *PessimisticRRTxnContextProvider) OnStmtErrorForNextAction(point sessiontxn.StmtErrorHandlePoint, err error) (sessiontxn.StmtErrorAction, error) { + switch point { + case sessiontxn.StmtErrAfterPessimisticLock: + return p.handleAfterPessimisticLockError(err) + default: + return sessiontxn.NoIdea() + } +} + +// AdviseOptimizeWithPlan optimizes for update point get related execution. +// Use case: In for update point get related operations, we do not fetch ts from PD but use the last ts we fetched. +// We expect that the data that the point get acquires has not been changed. +// Benefit: Save the cost of acquiring ts from PD. +// Drawbacks: If the data has been changed since the ts we used, we need to retry. +func (p *PessimisticRRTxnContextProvider) AdviseOptimizeWithPlan(val interface{}) (err error) { + if p.isTidbSnapshotEnabled() || p.isBeginStmtWithStaleRead() { + return nil + } + + plan, ok := val.(plannercore.Plan) + if !ok { + return nil + } + + if execute, ok := plan.(*plannercore.Execute); ok { + plan = execute.Plan + } + + mayOptimizeForPointGet := false + if v, ok := plan.(*plannercore.PhysicalLock); ok { + if _, ok := v.Children()[0].(*plannercore.PointGetPlan); ok { + mayOptimizeForPointGet = true + } + } else if v, ok := plan.(*plannercore.Update); ok { + if _, ok := v.SelectPlan.(*plannercore.PointGetPlan); ok { + mayOptimizeForPointGet = true + } + } else if v, ok := plan.(*plannercore.Delete); ok { + if _, ok := v.SelectPlan.(*plannercore.PointGetPlan); ok { + mayOptimizeForPointGet = true + } + } + + p.followingOperatorIsPointGetForUpdate = mayOptimizeForPointGet + + return nil +} + +func (p *PessimisticRRTxnContextProvider) handleAfterPessimisticLockError(lockErr error) (sessiontxn.StmtErrorAction, error) { + sessVars := p.sctx.GetSessionVars() + txnCtx := sessVars.TxnCtx + + if deadlock, ok := errors.Cause(lockErr).(*tikverr.ErrDeadlock); ok { + if !deadlock.IsRetryable { + return sessiontxn.ErrorAction(lockErr) + } + + logutil.Logger(p.ctx).Info("single statement deadlock, retry statement", + zap.Uint64("txn", txnCtx.StartTS), + zap.Uint64("lockTS", deadlock.LockTs), + zap.Stringer("lockKey", kv.Key(deadlock.LockKey)), + zap.Uint64("deadlockKeyHash", deadlock.DeadlockKeyHash)) + + } else if terror.ErrorEqual(kv.ErrWriteConflict, lockErr) { + errStr := lockErr.Error() + forUpdateTS := txnCtx.GetForUpdateTS() + + logutil.Logger(p.ctx).Debug("pessimistic write conflict, retry statement", + zap.Uint64("txn", txnCtx.StartTS), + zap.Uint64("forUpdateTS", forUpdateTS), + zap.String("err", errStr)) + // Always update forUpdateTS by getting a new timestamp from PD. + // If we use the conflict commitTS as the new forUpdateTS and async commit + // is used, the commitTS of this transaction may exceed the max timestamp + // that PD allocates. Then, the change may be invisible to a new transaction, + // which means linearizability is broken. + } else { + // This branch: if err is not nil, always update forUpdateTS to avoid problem described below. + // For nowait, when ErrLock happened, ErrLockAcquireFailAndNoWaitSet will be returned, and in the same txn + // the select for updateTs must be updated, otherwise there maybe rollback problem. + // begin + // select for update key1 (here encounters ErrLocked or other errors (or max_execution_time like util), + // key1 lock has not gotten and async rollback key1 is raised) + // select for update key1 again (this time lock is acquired successfully (maybe lock was released by others)) + // the async rollback operation rollbacks the lock just acquired + if err := p.updateForUpdateTS(); err != nil { + logutil.Logger(p.ctx).Warn("UpdateForUpdateTS failed", zap.Error(err)) + } + + return sessiontxn.ErrorAction(lockErr) + } + + if err := p.updateForUpdateTS(); err != nil { + return sessiontxn.ErrorAction(lockErr) + } + + return sessiontxn.RetryReady() +} diff --git a/sessiontxn/isolation/repeatable_read_test.go b/sessiontxn/isolation/repeatable_read_test.go new file mode 100644 index 0000000000000..dfeed73e9af33 --- /dev/null +++ b/sessiontxn/isolation/repeatable_read_test.go @@ -0,0 +1,469 @@ +// 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 isolation_test + +import ( + "context" + "fmt" + "testing" + "time" + + "github.com/pingcap/errors" + "github.com/pingcap/kvproto/pkg/kvrpcpb" + "github.com/pingcap/tidb/config" + "github.com/pingcap/tidb/executor" + "github.com/pingcap/tidb/infoschema" + "github.com/pingcap/tidb/kv" + "github.com/pingcap/tidb/parser" + "github.com/pingcap/tidb/parser/ast" + "github.com/pingcap/tidb/sessionctx" + "github.com/pingcap/tidb/sessiontxn" + "github.com/pingcap/tidb/sessiontxn/isolation" + "github.com/pingcap/tidb/testkit" + "github.com/stretchr/testify/require" + tikverr "github.com/tikv/client-go/v2/error" +) + +func newDeadLockError(isRetryable bool) error { + return &tikverr.ErrDeadlock{ + Deadlock: &kvrpcpb.Deadlock{}, + IsRetryable: isRetryable, + } +} + +func TestPessimisticRRErrorHandle(t *testing.T) { + store, _, clean := testkit.CreateMockStoreAndDomain(t) + defer clean() + tk := testkit.NewTestKit(t, store) + se := tk.Session() + provider := initializeRepeatableReadProvider(t, tk, true) + + var lockErr error + + compareTS := getOracleTS(t, se) + lockErr = kv.ErrWriteConflict + nextAction, err := provider.OnStmtErrorForNextAction(sessiontxn.StmtErrAfterPessimisticLock, lockErr) + require.NoError(t, err) + require.Equal(t, sessiontxn.StmtActionRetryReady, nextAction) + err = provider.OnStmtRetry(context.TODO()) + // In OnStmtErrorForNextAction, we set the txnCtx.forUpdateTS to be the latest ts, which is used to + // update the provider's in OnStmtRetry. So, if we acquire new ts now, it will be less than the current ts. + compareTS2 := getOracleTS(t, se) + require.NoError(t, err) + ts, err := provider.GetStmtForUpdateTS() + require.NoError(t, err) + require.Greater(t, ts, compareTS) + require.Greater(t, compareTS2, ts) + + // Update compareTS for the next comparison + compareTS = getOracleTS(t, se) + lockErr = kv.ErrWriteConflict + nextAction, err = provider.OnStmtErrorForNextAction(sessiontxn.StmtErrAfterPessimisticLock, lockErr) + require.NoError(t, err) + require.Equal(t, sessiontxn.StmtActionRetryReady, nextAction) + err = provider.OnStmtStart(context.TODO()) + // Unlike StmtRetry which uses forUpdateTS got in OnStmtErrorForNextAction, OnStmtStart will reset provider's forUpdateTS, + // which leads GetStmtForUpdateTS to acquire the latest ts. + compareTS2 = getOracleTS(t, se) + require.NoError(t, err) + ts, err = provider.GetStmtForUpdateTS() + require.NoError(t, err) + require.Greater(t, ts, compareTS) + require.Greater(t, ts, compareTS2) + + lockErr = newDeadLockError(false) + nextAction, err = provider.OnStmtErrorForNextAction(sessiontxn.StmtErrAfterPessimisticLock, lockErr) + require.Equal(t, lockErr, err) + require.Equal(t, sessiontxn.StmtActionError, nextAction) + + // Update compareTS for the next comparison + compareTS = getOracleTS(t, se) + lockErr = newDeadLockError(true) + nextAction, err = provider.OnStmtErrorForNextAction(sessiontxn.StmtErrAfterPessimisticLock, lockErr) + require.NoError(t, err) + require.Equal(t, sessiontxn.StmtActionRetryReady, nextAction) + err = provider.OnStmtRetry(context.TODO()) + require.NoError(t, err) + // In OnStmtErrorForNextAction, we set the txnCtx.forUpdateTS to be the latest ts, which is used to + // update the provider's in OnStmtRetry. So, if we acquire new ts now, it will be less than the current ts. + compareTS2 = getOracleTS(t, se) + ts, err = provider.GetStmtForUpdateTS() + require.NoError(t, err) + require.Greater(t, ts, compareTS) + require.Greater(t, compareTS2, ts) + + // Update compareTS for the next comparison + compareTS = getOracleTS(t, se) + lockErr = newDeadLockError(true) + nextAction, err = provider.OnStmtErrorForNextAction(sessiontxn.StmtErrAfterPessimisticLock, lockErr) + require.NoError(t, err) + require.Equal(t, sessiontxn.StmtActionRetryReady, nextAction) + err = provider.OnStmtStart(context.TODO()) + require.NoError(t, err) + // Unlike StmtRetry which uses forUpdateTS got in OnStmtErrorForNextAction, OnStmtStart will reset provider's forUpdateTS, + // which leads GetStmtForUpdateTS to acquire the latest ts. + compareTS2 = getOracleTS(t, se) + ts, err = provider.GetStmtForUpdateTS() + require.NoError(t, err) + require.Greater(t, ts, compareTS) + require.Greater(t, ts, compareTS2) + + // StmtErrAfterLock: other errors should only update forUpdateTS but not retry + lockErr = errors.New("other error") + nextAction, err = provider.OnStmtErrorForNextAction(sessiontxn.StmtErrAfterPessimisticLock, lockErr) + require.Equal(t, lockErr, err) + require.Equal(t, sessiontxn.StmtActionError, nextAction) + + // StmtErrAfterQuery: always not retry and not update forUpdateTS + lockErr = kv.ErrWriteConflict + nextAction, err = provider.OnStmtErrorForNextAction(sessiontxn.StmtErrAfterQuery, lockErr) + require.Equal(t, sessiontxn.StmtActionNoIdea, nextAction) + require.Nil(t, err) +} + +func TestRepeatableReadProviderTS(t *testing.T) { + store, _, clean := testkit.CreateMockStoreAndDomain(t) + defer clean() + tk := testkit.NewTestKit(t, store) + se := tk.Session() + provider := initializeRepeatableReadProvider(t, tk, true) + + stmts, _, err := parser.New().Parse("select * from t", "", "") + require.NoError(t, err) + readOnlyStmt := stmts[0] + + stmts, _, err = parser.New().Parse("select * from t for update", "", "") + require.NoError(t, err) + forUpdateStmt := stmts[0] + + var prevTS, CurrentTS uint64 + compareTS := getOracleTS(t, se) + // The read ts should be less than the compareTS + require.NoError(t, executor.ResetContextOfStmt(se, readOnlyStmt)) + require.NoError(t, provider.OnStmtStart(context.TODO())) + CurrentTS, err = provider.GetStmtReadTS() + require.NoError(t, err) + require.Greater(t, compareTS, CurrentTS) + prevTS = CurrentTS + + // The read ts should also be less than the compareTS in a new statement (after calling OnStmtStart) + require.NoError(t, executor.ResetContextOfStmt(se, readOnlyStmt)) + require.NoError(t, provider.OnStmtStart(context.TODO())) + CurrentTS, err = provider.GetStmtReadTS() + require.NoError(t, err) + require.Equal(t, CurrentTS, prevTS) + + // The read ts should not be changed after calling OnStmtRetry + require.NoError(t, executor.ResetContextOfStmt(se, readOnlyStmt)) + require.NoError(t, provider.OnStmtRetry(context.TODO())) + CurrentTS, err = provider.GetStmtReadTS() + require.NoError(t, err) + require.Equal(t, CurrentTS, prevTS) + + // The for update read ts should be larger than the compareTS + require.NoError(t, executor.ResetContextOfStmt(se, forUpdateStmt)) + require.NoError(t, provider.OnStmtStart(context.TODO())) + forUpdateTS, err := provider.GetStmtForUpdateTS() + require.NoError(t, err) + require.Greater(t, forUpdateTS, compareTS) + + // But the read ts is still less than the compareTS + require.NoError(t, executor.ResetContextOfStmt(se, readOnlyStmt)) + require.NoError(t, provider.OnStmtStart(context.TODO())) + CurrentTS, err = provider.GetStmtReadTS() + require.NoError(t, err) + require.Equal(t, CurrentTS, prevTS) +} + +func TestRepeatableReadProviderInitialize(t *testing.T) { + store, _, clean := testkit.CreateMockStoreAndDomain(t) + defer clean() + + tk := testkit.NewTestKit(t, store) + se := tk.Session() + tk.MustExec("set @@tx_isolation = 'REPEATABLE-READ'") + tk.MustExec("set @@tidb_txn_mode='pessimistic'") + + // begin outside a txn + assert := activePessimisticRRAssert(t, se, true) + tk.MustExec("begin") + assert.Check(t) + + // begin in a txn + assert = activePessimisticRRAssert(t, se, true) + tk.MustExec("begin") + assert.Check(t) + + // START TRANSACTION WITH CAUSAL CONSISTENCY ONLY + assert = activePessimisticRRAssert(t, se, true) + assert.causalConsistencyOnly = true + tk.MustExec("START TRANSACTION WITH CAUSAL CONSISTENCY ONLY") + assert.Check(t) + + // EnterNewTxnDefault will create an active txn, but not explicit + assert = activePessimisticRRAssert(t, se, false) + require.NoError(t, sessiontxn.GetTxnManager(se).EnterNewTxn(context.TODO(), &sessiontxn.EnterNewTxnRequest{ + Type: sessiontxn.EnterNewTxnDefault, + TxnMode: ast.Pessimistic, + })) + assert.Check(t) + + // non-active txn and then active it + tk.MustExec("rollback") + tk.MustExec("set @@autocommit=0") + assert = inactivePessimisticRRAssert(se) + assertAfterActive := activePessimisticRRAssert(t, se, true) + require.NoError(t, se.PrepareTxnCtx(context.TODO())) + provider := assert.CheckAndGetProvider(t) + require.NoError(t, provider.OnStmtStart(context.TODO())) + ts, err := provider.GetStmtReadTS() + require.NoError(t, err) + assertAfterActive.Check(t) + require.Equal(t, ts, se.GetSessionVars().TxnCtx.StartTS) + tk.MustExec("rollback") + + // Case Pessimistic Autocommit + config.GetGlobalConfig().PessimisticTxn.PessimisticAutoCommit.Store(true) + assert = inactivePessimisticRRAssert(se) + assertAfterActive = activePessimisticRRAssert(t, se, true) + require.NoError(t, se.PrepareTxnCtx(context.TODO())) + provider = assert.CheckAndGetProvider(t) + require.NoError(t, provider.OnStmtStart(context.TODO())) + ts, err = provider.GetStmtReadTS() + require.NoError(t, err) + assertAfterActive.Check(t) + require.Equal(t, ts, se.GetSessionVars().TxnCtx.StartTS) + tk.MustExec("rollback") +} + +func TestTidbSnapshotVarInPessimisticRepeatableRead(t *testing.T) { + store, dom, clean := testkit.CreateMockStoreAndDomain(t) + defer clean() + + tk := testkit.NewTestKit(t, store) + se := tk.Session() + tk.MustExec("set @@tx_isolation = 'REPEATABLE-READ'") + safePoint := "20160102-15:04:05 -0700" + tk.MustExec(fmt.Sprintf(`INSERT INTO mysql.tidb VALUES ('tikv_gc_safe_point', '%s', '') ON DUPLICATE KEY UPDATE variable_value = '%s', comment=''`, safePoint, safePoint)) + + time.Sleep(time.Millisecond * 50) + tk.MustExec("set @a=now(6)") + snapshotISVersion := dom.InfoSchema().SchemaMetaVersion() + time.Sleep(time.Millisecond * 50) + tk.MustExec("use test") + tk.MustExec("create table t1(id int)") + tk.MustExec("create temporary table t2(id int)") + tk.MustExec("set @@tidb_snapshot=@a") + snapshotTS := tk.Session().GetSessionVars().SnapshotTS + isVersion := dom.InfoSchema().SchemaMetaVersion() + + assert := activePessimisticRRAssert(t, se, true) + tk.MustExec("begin pessimistic") + provider := assert.CheckAndGetProvider(t) + txn, err := se.Txn(false) + require.NoError(t, err) + require.Greater(t, txn.StartTS(), snapshotTS) + + checkUseSnapshot := func() { + is := provider.GetTxnInfoSchema() + require.Equal(t, snapshotISVersion, is.SchemaMetaVersion()) + require.IsType(t, &infoschema.TemporaryTableAttachedInfoSchema{}, is) + readTS, err := provider.GetStmtReadTS() + require.NoError(t, err) + require.Equal(t, snapshotTS, readTS) + forUpdateTS, err := provider.GetStmtForUpdateTS() + require.NoError(t, err) + require.Equal(t, readTS, forUpdateTS) + } + + checkUseTxn := func() { + is := provider.GetTxnInfoSchema() + require.Equal(t, isVersion, is.SchemaMetaVersion()) + require.IsType(t, &infoschema.TemporaryTableAttachedInfoSchema{}, is) + readTS, err := provider.GetStmtReadTS() + require.NoError(t, err) + require.NotEqual(t, snapshotTS, readTS) + require.Equal(t, se.GetSessionVars().TxnCtx.StartTS, readTS) + forUpdateTS, err := provider.GetStmtForUpdateTS() + require.NoError(t, err) + require.Greater(t, forUpdateTS, readTS) + } + + // information schema and ts should equal to snapshot when tidb_snapshot is set + require.NoError(t, provider.OnStmtStart(context.TODO())) + checkUseSnapshot() + + // information schema and ts will restore when set tidb_snapshot to empty + tk.MustExec("set @@tidb_snapshot=''") + require.NoError(t, provider.OnStmtStart(context.TODO())) + checkUseTxn() + + // txn will not be active after `GetStmtReadTS` or `GetStmtForUpdateTS` when `tidb_snapshot` is set + for _, autocommit := range []int{0, 1} { + func() { + tk.MustExec("rollback") + tk.MustExec("set @@tidb_txn_mode='pessimistic'") + tk.MustExec(fmt.Sprintf("set @@autocommit=%d", autocommit)) + tk.MustExec("set @@tidb_snapshot=@a") + if autocommit == 1 { + origPessimisticAutoCommit := config.GetGlobalConfig().PessimisticTxn.PessimisticAutoCommit.Load() + config.GetGlobalConfig().PessimisticTxn.PessimisticAutoCommit.Store(true) + defer func() { + config.GetGlobalConfig().PessimisticTxn.PessimisticAutoCommit.Store(origPessimisticAutoCommit) + }() + } + assert = inactivePessimisticRRAssert(se) + assertAfterUseSnapshot := activeSnapshotTxnAssert(se, se.GetSessionVars().SnapshotTS, "REPEATABLE-READ") + require.NoError(t, se.PrepareTxnCtx(context.TODO())) + provider = assert.CheckAndGetProvider(t) + require.NoError(t, provider.OnStmtStart(context.TODO())) + checkUseSnapshot() + assertAfterUseSnapshot.Check(t) + }() + } +} + +func TestOptimizeWithPlanInPessimisticRR(t *testing.T) { + store, _, clean := testkit.CreateMockStoreAndDomain(t) + defer clean() + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (id int primary key, v int)") + tk.MustExec("insert into t values (1,1), (2,2)") + se := tk.Session() + provider := initializeRepeatableReadProvider(t, tk, true) + forUpdateTS := se.GetSessionVars().TxnCtx.GetForUpdateTS() + txnManager := sessiontxn.GetTxnManager(se) + + require.NoError(t, txnManager.OnStmtStart(context.TODO())) + stmt, err := parser.New().ParseOneStmt("delete from t where id = 1", "", "") + require.NoError(t, err) + compareTs := getOracleTS(t, se) + compiler := executor.Compiler{Ctx: se} + execStmt, err := compiler.Compile(context.TODO(), stmt) + require.NoError(t, err) + err = txnManager.AdviseOptimizeWithPlan(execStmt.Plan) + require.NoError(t, err) + ts, err := provider.GetStmtForUpdateTS() + require.NoError(t, err) + require.Greater(t, compareTs, ts) + require.Equal(t, ts, forUpdateTS) + + require.NoError(t, txnManager.OnStmtStart(context.TODO())) + stmt, err = parser.New().ParseOneStmt("update t set v = v + 10 where id = 1", "", "") + require.NoError(t, err) + compiler = executor.Compiler{Ctx: se} + execStmt, err = compiler.Compile(context.TODO(), stmt) + require.NoError(t, err) + err = txnManager.AdviseOptimizeWithPlan(execStmt.Plan) + require.NoError(t, err) + ts, err = provider.GetStmtForUpdateTS() + require.NoError(t, err) + require.Equal(t, ts, forUpdateTS) + + require.NoError(t, txnManager.OnStmtStart(context.TODO())) + stmt, err = parser.New().ParseOneStmt("select * from (select * from t where id = 1 for update) as t1 for update", "", "") + require.NoError(t, err) + compiler = executor.Compiler{Ctx: se} + execStmt, err = compiler.Compile(context.TODO(), stmt) + require.NoError(t, err) + err = txnManager.AdviseOptimizeWithPlan(execStmt.Plan) + require.NoError(t, err) + ts, err = provider.GetStmtForUpdateTS() + require.NoError(t, err) + require.Equal(t, ts, forUpdateTS) + + // Now, test for one that does not use the optimization + require.NoError(t, txnManager.OnStmtStart(context.TODO())) + stmt, err = parser.New().ParseOneStmt("select * from t for update", "", "") + compareTs = getOracleTS(t, se) + require.NoError(t, err) + compiler = executor.Compiler{Ctx: se} + execStmt, err = compiler.Compile(context.TODO(), stmt) + require.NoError(t, err) + err = txnManager.AdviseOptimizeWithPlan(execStmt.Plan) + require.NoError(t, err) + ts, err = provider.GetStmtForUpdateTS() + require.NoError(t, err) + require.Greater(t, ts, compareTs) + + // Test use startTS after optimize when autocommit=0 + activeAssert := activePessimisticRRAssert(t, tk.Session(), true) + provider = initializeRepeatableReadProvider(t, tk, false) + require.NoError(t, txnManager.OnStmtStart(context.TODO())) + stmt, err = parser.New().ParseOneStmt("update t set v = v + 10 where id = 1", "", "") + require.NoError(t, err) + execStmt, err = compiler.Compile(context.TODO(), stmt) + require.NoError(t, err) + err = txnManager.AdviseOptimizeWithPlan(execStmt.Plan) + require.NoError(t, err) + ts, err = provider.GetStmtForUpdateTS() + require.NoError(t, err) + require.Same(t, provider, activeAssert.CheckAndGetProvider(t)) + require.Equal(t, tk.Session().GetSessionVars().TxnCtx.StartTS, ts) + + // Test still fetch for update ts after optimize when autocommit=0 + compareTs = getOracleTS(t, se) + activeAssert = activePessimisticRRAssert(t, tk.Session(), true) + provider = initializeRepeatableReadProvider(t, tk, false) + require.NoError(t, txnManager.OnStmtStart(context.TODO())) + stmt, err = parser.New().ParseOneStmt("select * from t", "", "") + require.NoError(t, err) + execStmt, err = compiler.Compile(context.TODO(), stmt) + require.NoError(t, err) + err = txnManager.AdviseOptimizeWithPlan(execStmt.Plan) + require.NoError(t, err) + ts, err = provider.GetStmtForUpdateTS() + require.NoError(t, err) + require.Greater(t, ts, compareTs) +} + +func activePessimisticRRAssert(t *testing.T, sctx sessionctx.Context, + inTxn bool) *txnAssert[*isolation.PessimisticRRTxnContextProvider] { + return &txnAssert[*isolation.PessimisticRRTxnContextProvider]{ + sctx: sctx, + isolation: "REPEATABLE-READ", + minStartTime: time.Now(), + active: true, + inTxn: inTxn, + minStartTS: getOracleTS(t, sctx), + } +} + +func inactivePessimisticRRAssert(sctx sessionctx.Context) *txnAssert[*isolation.PessimisticRRTxnContextProvider] { + return &txnAssert[*isolation.PessimisticRRTxnContextProvider]{ + sctx: sctx, + isolation: "REPEATABLE-READ", + minStartTime: time.Now(), + active: false, + } +} + +func initializeRepeatableReadProvider(t *testing.T, tk *testkit.TestKit, active bool) *isolation.PessimisticRRTxnContextProvider { + tk.MustExec("commit") + tk.MustExec("set @@tx_isolation = 'REPEATABLE-READ'") + tk.MustExec("set @@tidb_txn_mode= 'pessimistic'") + + if active { + assert := activePessimisticRRAssert(t, tk.Session(), true) + tk.MustExec("begin pessimistic") + return assert.CheckAndGetProvider(t) + } + + tk.MustExec("set @@autocommit=0") + assert := inactivePessimisticRRAssert(tk.Session()) + require.NoError(t, tk.Session().PrepareTxnCtx(context.TODO())) + return assert.CheckAndGetProvider(t) +} diff --git a/sessiontxn/isolation/serializable.go b/sessiontxn/isolation/serializable.go new file mode 100644 index 0000000000000..a8256bb2294ac --- /dev/null +++ b/sessiontxn/isolation/serializable.go @@ -0,0 +1,62 @@ +// 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 isolation + +import ( + "github.com/pingcap/tidb/kv" + "github.com/pingcap/tidb/parser/ast" + "github.com/pingcap/tidb/sessionctx" + "github.com/pingcap/tidb/sessionctx/variable" + "github.com/pingcap/tidb/sessiontxn" +) + +// PessimisticSerializableTxnContextProvider provides txn context for isolation level oracle-like serializable +type PessimisticSerializableTxnContextProvider struct { + baseTxnContextProvider +} + +// NewPessimisticSerializableTxnContextProvider returns a new PessimisticSerializableTxnContextProvider +func NewPessimisticSerializableTxnContextProvider(sctx sessionctx.Context, + causalConsistencyOnly bool) *PessimisticSerializableTxnContextProvider { + provider := &PessimisticSerializableTxnContextProvider{ + baseTxnContextProvider{ + sctx: sctx, + causalConsistencyOnly: causalConsistencyOnly, + onInitializeTxnCtx: func(txnCtx *variable.TransactionContext) { + txnCtx.IsPessimistic = true + txnCtx.Isolation = ast.Serializable + }, + onTxnActive: func(txn kv.Transaction) { + txn.SetOption(kv.Pessimistic, true) + }, + }, + } + + provider.getStmtForUpdateTSFunc = provider.getTxnStartTS + provider.getStmtReadTSFunc = provider.getTxnStartTS + return provider +} + +// OnStmtErrorForNextAction is the hook that should be called when a new statement get an error +func (p *PessimisticSerializableTxnContextProvider) OnStmtErrorForNextAction( + point sessiontxn.StmtErrorHandlePoint, err error) (sessiontxn.StmtErrorAction, error) { + switch point { + case sessiontxn.StmtErrAfterPessimisticLock: + // In oracle-like serializable isolation, we do not retry encountering pessimistic lock error. + return sessiontxn.ErrorAction(err) + default: + return sessiontxn.NoIdea() + } +} diff --git a/sessiontxn/isolation/serializable_test.go b/sessiontxn/isolation/serializable_test.go new file mode 100644 index 0000000000000..a28e455195cbf --- /dev/null +++ b/sessiontxn/isolation/serializable_test.go @@ -0,0 +1,288 @@ +// 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 isolation_test + +import ( + "context" + "fmt" + "testing" + "time" + + "github.com/pingcap/errors" + "github.com/pingcap/kvproto/pkg/kvrpcpb" + "github.com/pingcap/tidb/config" + "github.com/pingcap/tidb/executor" + "github.com/pingcap/tidb/infoschema" + "github.com/pingcap/tidb/kv" + "github.com/pingcap/tidb/parser" + "github.com/pingcap/tidb/parser/ast" + "github.com/pingcap/tidb/sessionctx" + "github.com/pingcap/tidb/sessiontxn" + "github.com/pingcap/tidb/sessiontxn/isolation" + "github.com/pingcap/tidb/testkit" + "github.com/stretchr/testify/require" + tikverr "github.com/tikv/client-go/v2/error" +) + +func TestPessimisticSerializableTxnProviderTS(t *testing.T) { + store, _, clean := testkit.CreateMockStoreAndDomain(t) + defer clean() + + tk := testkit.NewTestKit(t, store) + se := tk.Session() + provider := initializePessimisticSerializableProvider(t, tk) + + stmts, _, err := parser.New().Parse("select * from t", "", "") + require.NoError(t, err) + readOnlyStmt := stmts[0] + + stmts, _, err = parser.New().Parse("select * from t for update", "", "") + require.NoError(t, err) + forUpdateStmt := stmts[0] + + compareTS := getOracleTS(t, se) + require.NoError(t, executor.ResetContextOfStmt(se, readOnlyStmt)) + require.NoError(t, provider.OnStmtStart(context.TODO())) + ts, err := provider.GetStmtReadTS() + require.NoError(t, err) + require.Greater(t, compareTS, ts) + prevTs := ts + + // In Oracle-like serializable isolation, readTS equals to the for update ts + require.NoError(t, executor.ResetContextOfStmt(se, forUpdateStmt)) + require.NoError(t, provider.OnStmtStart(context.TODO())) + ts, err = provider.GetStmtForUpdateTS() + require.NoError(t, err) + require.Greater(t, compareTS, ts) + require.Equal(t, prevTs, ts) +} + +func TestPessimisticSerializableTxnContextProviderLockError(t *testing.T) { + store, _, clean := testkit.CreateMockStoreAndDomain(t) + defer clean() + + tk := testkit.NewTestKit(t, store) + se := tk.Session() + provider := initializePessimisticSerializableProvider(t, tk) + + stmts, _, err := parser.New().Parse("select * from t for update", "", "") + require.NoError(t, err) + stmt := stmts[0] + + // retryable errors + for _, lockErr := range []error{ + kv.ErrWriteConflict, + &tikverr.ErrDeadlock{Deadlock: &kvrpcpb.Deadlock{}, IsRetryable: true}, + } { + require.NoError(t, executor.ResetContextOfStmt(se, stmt)) + require.NoError(t, provider.OnStmtStart(context.TODO())) + nextAction, err := provider.OnStmtErrorForNextAction(sessiontxn.StmtErrAfterPessimisticLock, lockErr) + require.Same(t, lockErr, err) + require.Equal(t, sessiontxn.StmtActionError, nextAction) + } + + // non-retryable errors + for _, lockErr := range []error{ + &tikverr.ErrDeadlock{Deadlock: &kvrpcpb.Deadlock{}, IsRetryable: false}, + errors.New("err"), + } { + require.NoError(t, executor.ResetContextOfStmt(se, stmt)) + require.NoError(t, provider.OnStmtStart(context.TODO())) + nextAction, err := provider.OnStmtErrorForNextAction(sessiontxn.StmtErrAfterPessimisticLock, lockErr) + require.Same(t, lockErr, err) + require.Equal(t, sessiontxn.StmtActionError, nextAction) + } +} + +func TestSerializableInitialize(t *testing.T) { + store, _, clean := testkit.CreateMockStoreAndDomain(t) + defer clean() + + tk := testkit.NewTestKit(t, store) + se := tk.Session() + tk.MustExec("set tidb_skip_isolation_level_check = 1") + tk.MustExec("set @@tx_isolation = 'SERIALIZABLE'") + tk.MustExec("set @@tidb_txn_mode='pessimistic'") + + // begin outsize a txn + assert := activeSerializableAssert(t, se, true) + tk.MustExec("begin") + assert.Check(t) + + // begin outsize a txn + assert = activeSerializableAssert(t, se, true) + tk.MustExec("begin") + assert.Check(t) + + // START TRANSACTION WITH CAUSAL CONSISTENCY ONLY + assert = activeSerializableAssert(t, se, true) + assert.causalConsistencyOnly = true + tk.MustExec("START TRANSACTION WITH CAUSAL CONSISTENCY ONLY") + assert.Check(t) + + // EnterNewTxnDefault will create an active txn, but not explicit + assert = activeSerializableAssert(t, se, false) + require.NoError(t, sessiontxn.GetTxnManager(se).EnterNewTxn(context.TODO(), &sessiontxn.EnterNewTxnRequest{ + Type: sessiontxn.EnterNewTxnDefault, + TxnMode: ast.Pessimistic, + })) + assert.Check(t) + + // non-active txn and then active it + tk.MustExec("rollback") + tk.MustExec("set @@autocommit=0") + assert = inactiveSerializableAssert(se) + assertAfterActive := activeSerializableAssert(t, se, true) + require.NoError(t, se.PrepareTxnCtx(context.TODO())) + provider := assert.CheckAndGetProvider(t) + require.NoError(t, provider.OnStmtStart(context.TODO())) + ts, err := provider.GetStmtReadTS() + require.NoError(t, err) + assertAfterActive.Check(t) + require.Equal(t, ts, se.GetSessionVars().TxnCtx.StartTS) + tk.MustExec("rollback") + + // Case Pessimistic Autocommit + config.GetGlobalConfig().PessimisticTxn.PessimisticAutoCommit.Store(true) + assert = inactiveSerializableAssert(se) + assertAfterActive = activeSerializableAssert(t, se, true) + require.NoError(t, se.PrepareTxnCtx(context.TODO())) + provider = assert.CheckAndGetProvider(t) + require.NoError(t, provider.OnStmtStart(context.TODO())) + ts, err = provider.GetStmtReadTS() + require.NoError(t, err) + assertAfterActive.Check(t) + require.Equal(t, ts, se.GetSessionVars().TxnCtx.StartTS) + tk.MustExec("rollback") +} + +func TestTidbSnapshotVarInSerialize(t *testing.T) { + store, dom, clean := testkit.CreateMockStoreAndDomain(t) + defer clean() + + tk := testkit.NewTestKit(t, store) + se := tk.Session() + tk.MustExec("set tidb_skip_isolation_level_check = 1") + tk.MustExec("set @@tx_isolation = 'SERIALIZABLE'") + safePoint := "20160102-15:04:05 -0700" + tk.MustExec(fmt.Sprintf(`INSERT INTO mysql.tidb VALUES ('tikv_gc_safe_point', '%s', '') ON DUPLICATE KEY UPDATE variable_value = '%s', comment=''`, safePoint, safePoint)) + + time.Sleep(time.Millisecond * 50) + tk.MustExec("set @a=now(6)") + snapshotISVersion := dom.InfoSchema().SchemaMetaVersion() + time.Sleep(time.Millisecond * 50) + tk.MustExec("use test") + tk.MustExec("create table t1(id int)") + tk.MustExec("create temporary table t2(id int)") + tk.MustExec("set @@tidb_snapshot=@a") + snapshotTS := tk.Session().GetSessionVars().SnapshotTS + isVersion := dom.InfoSchema().SchemaMetaVersion() + + assert := activeSerializableAssert(t, se, true) + tk.MustExec("begin pessimistic") + provider := assert.CheckAndGetProvider(t) + txn, err := se.Txn(false) + require.NoError(t, err) + require.Greater(t, txn.StartTS(), snapshotTS) + + checkUseSnapshot := func() { + is := provider.GetTxnInfoSchema() + require.Equal(t, snapshotISVersion, is.SchemaMetaVersion()) + require.IsType(t, &infoschema.TemporaryTableAttachedInfoSchema{}, is) + readTS, err := provider.GetStmtReadTS() + require.NoError(t, err) + require.Equal(t, snapshotTS, readTS) + forUpdateTS, err := provider.GetStmtForUpdateTS() + require.NoError(t, err) + require.Equal(t, readTS, forUpdateTS) + } + + checkUseTxn := func() { + is := provider.GetTxnInfoSchema() + require.Equal(t, isVersion, is.SchemaMetaVersion()) + require.IsType(t, &infoschema.TemporaryTableAttachedInfoSchema{}, is) + readTS, err := provider.GetStmtReadTS() + require.NoError(t, err) + require.NotEqual(t, snapshotTS, readTS) + require.Equal(t, se.GetSessionVars().TxnCtx.StartTS, readTS) + forUpdateTS, err := provider.GetStmtForUpdateTS() + require.NoError(t, err) + require.Equal(t, readTS, forUpdateTS) + } + + // information schema and ts should equal to snapshot when tidb_snapshot is set + require.NoError(t, provider.OnStmtStart(context.TODO())) + checkUseSnapshot() + + // information schema and ts will restore when set tidb_snapshot to empty + tk.MustExec("set @@tidb_snapshot=''") + require.NoError(t, provider.OnStmtStart(context.TODO())) + checkUseTxn() + + // txn will not be active after `GetStmtReadTS` or `GetStmtForUpdateTS` when `tidb_snapshot` is set + // txn will not be active after `GetStmtReadTS` or `GetStmtForUpdateTS` when `tidb_snapshot` is set + for _, autocommit := range []int{0, 1} { + func() { + tk.MustExec("rollback") + tk.MustExec("set @@tidb_txn_mode='pessimistic'") + tk.MustExec(fmt.Sprintf("set @@autocommit=%d", autocommit)) + tk.MustExec("set @@tidb_snapshot=@a") + if autocommit == 1 { + origPessimisticAutoCommit := config.GetGlobalConfig().PessimisticTxn.PessimisticAutoCommit.Load() + config.GetGlobalConfig().PessimisticTxn.PessimisticAutoCommit.Store(true) + defer func() { + config.GetGlobalConfig().PessimisticTxn.PessimisticAutoCommit.Store(origPessimisticAutoCommit) + }() + } + assert = inactiveSerializableAssert(se) + assertAfterUseSnapshot := activeSnapshotTxnAssert(se, se.GetSessionVars().SnapshotTS, "SERIALIZABLE") + require.NoError(t, se.PrepareTxnCtx(context.TODO())) + provider = assert.CheckAndGetProvider(t) + require.NoError(t, provider.OnStmtStart(context.TODO())) + checkUseSnapshot() + assertAfterUseSnapshot.Check(t) + }() + } +} + +func activeSerializableAssert(t *testing.T, sctx sessionctx.Context, + inTxn bool) *txnAssert[*isolation.PessimisticSerializableTxnContextProvider] { + return &txnAssert[*isolation.PessimisticSerializableTxnContextProvider]{ + sctx: sctx, + isolation: "SERIALIZABLE", + minStartTime: time.Now(), + active: true, + inTxn: inTxn, + minStartTS: getOracleTS(t, sctx), + } +} + +func inactiveSerializableAssert(sctx sessionctx.Context) *txnAssert[*isolation.PessimisticSerializableTxnContextProvider] { + return &txnAssert[*isolation.PessimisticSerializableTxnContextProvider]{ + sctx: sctx, + isolation: "SERIALIZABLE", + minStartTime: time.Now(), + active: false, + } +} + +func initializePessimisticSerializableProvider(t *testing.T, + tk *testkit.TestKit) *isolation.PessimisticSerializableTxnContextProvider { + tk.MustExec("set tidb_skip_isolation_level_check = 1") + tk.MustExec("set @@tx_isolation = 'SERIALIZABLE'") + assert := activeSerializableAssert(t, tk.Session(), true) + tk.MustExec("begin pessimistic") + return assert.CheckAndGetProvider(t) +} diff --git a/sessiontxn/legacy/BUILD.bazel b/sessiontxn/legacy/BUILD.bazel new file mode 100644 index 0000000000000..d9e9b5249cbbf --- /dev/null +++ b/sessiontxn/legacy/BUILD.bazel @@ -0,0 +1,41 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "legacy", + srcs = ["provider.go"], + importpath = "github.com/pingcap/tidb/sessiontxn/legacy", + visibility = ["//visibility:public"], + deps = [ + "//domain", + "//infoschema", + "//kv", + "//parser/ast", + "//parser/terror", + "//sessionctx", + "//sessionctx/variable", + "//sessiontxn", + "//sessiontxn/staleread", + "//table/temptable", + "//util/logutil", + "@com_github_pingcap_errors//:errors", + "@com_github_tikv_client_go_v2//error", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "legacy_test", + srcs = ["provider_test.go"], + deps = [ + ":legacy", + "//domain", + "//kv", + "//sessionctx", + "//sessiontxn", + "//testkit", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_kvproto//pkg/kvrpcpb", + "@com_github_stretchr_testify//require", + "@com_github_tikv_client_go_v2//error", + ], +) diff --git a/sessiontxn/legacy/provider.go b/sessiontxn/legacy/provider.go index 64e75f5206d96..a571c612f24aa 100644 --- a/sessiontxn/legacy/provider.go +++ b/sessiontxn/legacy/provider.go @@ -27,6 +27,7 @@ import ( "github.com/pingcap/tidb/sessionctx" "github.com/pingcap/tidb/sessionctx/variable" "github.com/pingcap/tidb/sessiontxn" + "github.com/pingcap/tidb/sessiontxn/staleread" "github.com/pingcap/tidb/table/temptable" "github.com/pingcap/tidb/util/logutil" tikverr "github.com/tikv/client-go/v2/error" @@ -92,7 +93,7 @@ func (p *SimpleTxnContextProvider) OnInitialize(ctx context.Context, tp sessiont } sessVars.TxnCtx.IsPessimistic = p.Pessimistic - if _, err := p.activeTxn(); err != nil { + if _, err := p.activateTxn(); err != nil { return err } @@ -189,17 +190,27 @@ func (p *SimpleTxnContextProvider) OnStmtRetry(_ context.Context) error { return nil } -// Advise is used to give advice to provider -func (p *SimpleTxnContextProvider) Advise(tp sessiontxn.AdviceType) error { - switch tp { - case sessiontxn.AdviceWarmUp: - p.Sctx.PrepareTSFuture(p.Ctx) +func (p *SimpleTxnContextProvider) prepareTSFuture() error { + if p.Sctx.GetSessionVars().SnapshotTS != 0 || staleread.IsStmtStaleness(p.Sctx) || p.Sctx.GetPreparedTSFuture() != nil { + return nil } - return nil + + txn, err := p.Sctx.Txn(false) + if err != nil { + return err + } + + if txn.Valid() { + return nil + } + + txnScope := p.Sctx.GetSessionVars().CheckAndGetTxnScope() + future := sessiontxn.NewOracleFuture(p.Ctx, p.Sctx, txnScope) + return p.Sctx.PrepareTSFuture(p.Ctx, future, txnScope) } -// activeTxn actives the txn -func (p *SimpleTxnContextProvider) activeTxn() (kv.Transaction, error) { +// activateTxn actives the txn +func (p *SimpleTxnContextProvider) activateTxn() (kv.Transaction, error) { if p.isTxnActive { return p.Sctx.Txn(true) } @@ -220,3 +231,13 @@ func (p *SimpleTxnContextProvider) activeTxn() (kv.Transaction, error) { p.isTxnActive = true return txn, nil } + +// AdviseWarmup provides warmup for inner state +func (p *SimpleTxnContextProvider) AdviseWarmup() error { + return p.prepareTSFuture() +} + +// AdviseOptimizeWithPlan providers optimization according to the plan +func (p *SimpleTxnContextProvider) AdviseOptimizeWithPlan(_ interface{}) error { + return nil +} diff --git a/sessiontxn/staleread/BUILD.bazel b/sessiontxn/staleread/BUILD.bazel new file mode 100644 index 0000000000000..727ee725341ec --- /dev/null +++ b/sessiontxn/staleread/BUILD.bazel @@ -0,0 +1,50 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "staleread", + srcs = [ + "errors.go", + "failpoint.go", + "processor.go", + "provider.go", + "util.go", + ], + importpath = "github.com/pingcap/tidb/sessiontxn/staleread", + visibility = ["//visibility:public"], + deps = [ + "//domain", + "//errno", + "//expression", + "//infoschema", + "//parser/ast", + "//parser/mysql", + "//sessionctx", + "//sessionctx/variable", + "//sessiontxn", + "//table/temptable", + "//types", + "//util/dbterror", + "@com_github_pingcap_errors//:errors", + "@com_github_tikv_client_go_v2//oracle", + ], +) + +go_test( + name = "staleread_test", + srcs = ["processor_test.go"], + deps = [ + ":staleread", + "//domain", + "//infoschema", + "//parser", + "//parser/ast", + "//sessionctx", + "//table/temptable", + "//testkit", + "//testkit/testsetup", + "@com_github_pingcap_errors//:errors", + "@com_github_stretchr_testify//require", + "@com_github_tikv_client_go_v2//oracle", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/sessiontxn/staleread/provider.go b/sessiontxn/staleread/provider.go index f6a092ffae95c..cc77cdd214b37 100644 --- a/sessiontxn/staleread/provider.go +++ b/sessiontxn/staleread/provider.go @@ -100,7 +100,12 @@ func (p *StalenessTxnContextProvider) OnStmtRetry(_ context.Context) error { return nil } -// Advise is used to give advice to provider -func (p *StalenessTxnContextProvider) Advise(_ sessiontxn.AdviceType) error { +// AdviseWarmup provides warmup for inner state +func (p *StalenessTxnContextProvider) AdviseWarmup() error { + return nil +} + +// AdviseOptimizeWithPlan providers optimization according to the plan +func (p *StalenessTxnContextProvider) AdviseOptimizeWithPlan(_ interface{}) error { return nil } diff --git a/sessiontxn/txn_context_test.go b/sessiontxn/txn_context_test.go index c7c03d67e8b5e..8ac6f0aaa7322 100644 --- a/sessiontxn/txn_context_test.go +++ b/sessiontxn/txn_context_test.go @@ -17,12 +17,14 @@ package sessiontxn_test import ( "context" "fmt" + "strings" "testing" "time" "github.com/pingcap/failpoint" "github.com/pingcap/tidb/domain" "github.com/pingcap/tidb/kv" + "github.com/pingcap/tidb/parser/ast" "github.com/pingcap/tidb/planner/core" "github.com/pingcap/tidb/sessionctx" "github.com/pingcap/tidb/sessiontxn" @@ -50,9 +52,12 @@ func setupTxnContextTest(t *testing.T) (kv.Storage, *domain.Domain, func()) { require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/executor/assertTxnManagerInShortPointGetPlan", "return")) require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/executor/assertStaleReadValuesSameWithExecuteAndBuilder", "return")) require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/executor/assertNotStaleReadForExecutorGetReadTS", "return")) + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/executor/hookBeforeFirstRunExecutor", "return")) + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/executor/hookAfterOnStmtRetryWithLockError", "return")) require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/session/assertTxnManagerInRunStmt", "return")) require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/session/assertTxnManagerInPreparedStmtExec", "return")) require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/session/assertTxnManagerInCachedPlanExec", "return")) + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/session/assertTxnManagerForUpdateTSEqual", "return")) require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/planner/core/assertStaleReadForOptimizePreparedPlan", "return")) store, do, clean := testkit.CreateMockStoreAndDomain(t) @@ -80,9 +85,12 @@ func setupTxnContextTest(t *testing.T) (kv.Storage, *domain.Domain, func()) { require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/executor/assertTxnManagerInShortPointGetPlan")) require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/executor/assertStaleReadValuesSameWithExecuteAndBuilder")) require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/executor/assertNotStaleReadForExecutorGetReadTS")) + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/executor/hookBeforeFirstRunExecutor")) + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/executor/hookAfterOnStmtRetryWithLockError")) require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/session/assertTxnManagerInRunStmt")) require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/session/assertTxnManagerInPreparedStmtExec")) require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/session/assertTxnManagerInCachedPlanExec")) + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/session/assertTxnManagerForUpdateTSEqual")) require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/planner/core/assertStaleReadForOptimizePreparedPlan")) tk.Session().SetValue(sessiontxn.AssertRecordsKey, nil) @@ -702,3 +710,121 @@ func TestTxnContextPreparedStmtWithForUpdate(t *testing.T) { se.SetValue(sessiontxn.AssertTxnInfoSchemaKey, nil) tk.MustExec("rollback") } + +// See issue: https://github.com/pingcap/tidb/issues/35459 +func TestStillWriteConflictAfterRetry(t *testing.T) { + store, _, deferFunc := setupTxnContextTest(t) + defer deferFunc() + + queries := []string{ + "select * from t1 for update", + "select * from t1 where id=1 for update", + "select * from t1 where id in (1, 2, 3) for update", + "select * from t1 where id=1 and v>0 for update", + "select * from t1 where id=1 for update union select * from t1 where id=1 for update", + "update t1 set v=v+1", + "update t1 set v=v+1 where id=1", + "update t1 set v=v+1 where id=1 and v>0", + "update t1 set v=v+1 where id in (1, 2, 3)", + "update t1 set v=v+1 where id in (1, 2, 3) and v>0", + } + + for _, isolation := range []string{ast.RepeatableRead, ast.ReadCommitted} { + for _, query := range queries { + for _, autocommit := range []bool{true, false} { + t.Run(fmt.Sprintf("%s,%s,autocommit=%v", isolation, query, autocommit), func(t *testing.T) { + testStillWriteConflictAfterRetry(t, store, isolation, query, autocommit) + }) + } + } + } +} + +func testStillWriteConflictAfterRetry(t *testing.T, store kv.Storage, isolation string, query string, autocommit bool) { + tk := testkit.NewTestKit(t, store) + defer tk.MustExec("rollback") + + tk.MustExec("use test") + tk.MustExec(fmt.Sprintf("set tx_isolation = '%s'", isolation)) + tk.MustExec("set autocommit=1") + tk.MustExec("set @@tidb_txn_mode = 'pessimistic'") + tk.MustExec("truncate table t1") + tk.MustExec("insert into t1 values(1, 10)") + + se := tk.Session() + chanBeforeRunStmt := make(chan func(), 1) + chanAfterOnStmtRetry := make(chan func(), 1) + c2 := make(chan string, 1) + c3 := make(chan string, 1) + wait := func(ch chan string, expect string) { + select { + case got := <-ch: + if got != expect { + panic(fmt.Sprintf("expect '%s', got '%s'", expect, got)) + } + case <-time.After(time.Second * 10): + panic("wait2 timeout") + } + } + + if autocommit { + tk.MustExec("begin") + } else { + tk.MustExec("set @@autocommit=0") + } + + se.SetValue(sessiontxn.HookBeforeFirstRunExecutorKey, chanBeforeRunStmt) + se.SetValue(sessiontxn.HookAfterOnStmtRetryWithLockErrorKey, chanAfterOnStmtRetry) + defer func() { + se.SetValue(sessiontxn.HookBeforeFirstRunExecutorKey, nil) + se.SetValue(sessiontxn.HookAfterOnStmtRetryWithLockErrorKey, nil) + }() + + chanBeforeRunStmt <- func() { + c2 <- "now before session1 runStmt" + wait(c3, "session2 updated v=v+1 done") + } + + chanAfterOnStmtRetry <- func() { + c2 <- "now after OnStmtRetry before rebuild executor" + wait(c3, "session2 updated v=v+1 again done") + } + + go func() { + tk2 := testkit.NewTestKit(t, store) + tk2.MustExec("use test") + + // first conflict + wait(c2, "now before session1 runStmt") + tk2.MustExec("update t1 set v=v+1 where id=1") + c3 <- "session2 updated v=v+1 done" + + // second conflict + wait(c2, "now after OnStmtRetry before rebuild executor") + tk2.MustExec("update t1 set v=v+1 where id=1") + c3 <- "session2 updated v=v+1 again done" + chanAfterOnStmtRetry <- func() {} + c3 <- "done" + }() + + isSelect := false + if strings.HasPrefix(query, "update ") { + tk.MustExec(query) + } else if strings.HasPrefix(query, "select ") { + isSelect = true + tk.MustQuery(query).Check(testkit.Rows("1 12")) + } else { + require.FailNowf(t, "invalid query: %s", query) + } + + wait(c3, "done") + + se.SetValue(sessiontxn.HookBeforeFirstRunExecutorKey, nil) + se.SetValue(sessiontxn.HookAfterOnStmtRetryWithLockErrorKey, nil) + if isSelect { + tk.MustExec("update t1 set v=v+1") + } + tk.MustExec("commit") + tk.MustQuery("select * from t1").Check(testkit.Rows("1 13")) + tk.MustExec("rollback") +} diff --git a/sessiontxn/txn_manager_test.go b/sessiontxn/txn_manager_test.go index b5d79ce4bb9fd..e32f8bc2b3784 100644 --- a/sessiontxn/txn_manager_test.go +++ b/sessiontxn/txn_manager_test.go @@ -136,7 +136,7 @@ func TestEnterNewTxn(t *testing.T) { }) require.NoError(t, err) require.NoError(t, mgr.OnStmtStart(context.TODO())) - require.NoError(t, mgr.Advise(sessiontxn.AdviceWarmUp)) + require.NoError(t, mgr.AdviseWarmup()) }, request: &sessiontxn.EnterNewTxnRequest{ Type: sessiontxn.EnterNewTxnWithBeginStmt, @@ -270,7 +270,7 @@ func checkTxnBeforeStmt(t *testing.T, sctx sessionctx.Context) { } func checkStmtTxnAfterActive(t *testing.T, sctx sessionctx.Context) { - require.NoError(t, sessiontxn.WarmUpTxn(sctx)) + require.NoError(t, sessiontxn.GetTxnManager(sctx).AdviseWarmup()) _, err := sctx.Txn(true) require.NoError(t, err) txn := checkBasicActiveTxn(t, sctx) diff --git a/statistics/BUILD.bazel b/statistics/BUILD.bazel new file mode 100644 index 0000000000000..d32669654aa47 --- /dev/null +++ b/statistics/BUILD.bazel @@ -0,0 +1,112 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "statistics", + srcs = [ + "analyze.go", + "analyze_jobs.go", + "builder.go", + "cmsketch.go", + "estimate.go", + "feedback.go", + "fmsketch.go", + "histogram.go", + "row_sampler.go", + "sample.go", + "scalar.go", + "selectivity.go", + "table.go", + ], + importpath = "github.com/pingcap/tidb/statistics", + visibility = ["//visibility:public"], + deps = [ + "//expression", + "//kv", + "//metrics", + "//parser/ast", + "//parser/charset", + "//parser/format", + "//parser/model", + "//parser/mysql", + "//parser/terror", + "//planner/util", + "//sessionctx", + "//sessionctx/stmtctx", + "//sessionctx/variable", + "//tablecodec", + "//types", + "//types/parser_driver", + "//util/chunk", + "//util/codec", + "//util/collate", + "//util/fastrand", + "//util/hack", + "//util/logutil", + "//util/mathutil", + "//util/memory", + "//util/ranger", + "//util/sqlexec", + "//util/tracing", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_pingcap_log//:log", + "@com_github_pingcap_tipb//go-tipb", + "@com_github_twmb_murmur3//:murmur3", + "@org_golang_x_exp//slices", + "@org_uber_go_atomic//:atomic", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "statistics_test", + srcs = [ + "cmsketch_test.go", + "feedback_test.go", + "fmsketch_test.go", + "histogram_test.go", + "integration_test.go", + "main_test.go", + "sample_test.go", + "scalar_test.go", + "selectivity_test.go", + "statistics_test.go", + "trace_test.go", + ], + data = glob(["testdata/**"]), + embed = [":statistics"], + deps = [ + "//config", + "//domain", + "//infoschema", + "//parser", + "//parser/ast", + "//parser/model", + "//parser/mysql", + "//planner/core", + "//session", + "//sessionctx", + "//sessionctx/stmtctx", + "//sessionctx/variable", + "//statistics/handle", + "//testkit", + "//testkit/testdata", + "//testkit/testmain", + "//testkit/testsetup", + "//types", + "//types/json", + "//util/chunk", + "//util/codec", + "//util/collate", + "//util/mock", + "//util/ranger", + "//util/sqlexec", + "//util/tracing", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_pingcap_log//:log", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + "@org_uber_go_zap//:zap", + ], +) diff --git a/statistics/cmsketch.go b/statistics/cmsketch.go index c9cc1de380564..15308e3a84c7a 100644 --- a/statistics/cmsketch.go +++ b/statistics/cmsketch.go @@ -173,24 +173,6 @@ func (c *CMSketch) MemoryUsage() (sum int64) { return } -// queryAddTopN TopN adds count to CMSketch.topN if exists, and returns the count of such elements after insert. -// If such elements does not in topn elements, nothing will happen and false will be returned. -func (c *TopN) updateTopNWithDelta(d []byte, delta uint64, increase bool) bool { - if c == nil || c.TopN == nil { - return false - } - idx := c.findTopN(d) - if idx >= 0 { - if increase { - c.TopN[idx].Count += delta - } else { - c.TopN[idx].Count -= delta - } - return true - } - return false -} - // InsertBytes inserts the bytes value into the CM Sketch. func (c *CMSketch) InsertBytes(bytes []byte) { c.InsertBytesByCount(bytes, 1) @@ -480,11 +462,6 @@ func (c *CMSketch) Copy() *CMSketch { return &CMSketch{count: c.count, width: c.width, depth: c.depth, table: tbl, defaultValue: c.defaultValue} } -// AppendTopN appends a topn into the TopN struct. -func (c *TopN) AppendTopN(data []byte, count uint64) { - c.TopN = append(c.TopN, TopNMeta{data, count}) -} - // GetWidthAndDepth returns the width and depth of CM Sketch. func (c *CMSketch) GetWidthAndDepth() (int32, int32) { return c.width, c.depth @@ -501,6 +478,14 @@ type TopN struct { TopN []TopNMeta } +// AppendTopN appends a topn into the TopN struct. +func (c *TopN) AppendTopN(data []byte, count uint64) { + if c == nil { + return + } + c.TopN = append(c.TopN, TopNMeta{data, count}) +} + func (c *TopN) String() string { if c == nil { return "EmptyTopN" @@ -530,6 +515,9 @@ func (c *TopN) Num() int { // DecodedString returns the value with decoded result. func (c *TopN) DecodedString(ctx sessionctx.Context, colTypes []byte) (string, error) { + if c == nil { + return "", nil + } builder := &strings.Builder{} fmt.Fprintf(builder, "TopN{length: %v, ", len(c.TopN)) fmt.Fprint(builder, "[") @@ -699,6 +687,24 @@ func (c *TopN) MemoryUsage() (sum int64) { return } +// queryAddTopN TopN adds count to CMSketch.topN if exists, and returns the count of such elements after insert. +// If such elements does not in topn elements, nothing will happen and false will be returned. +func (c *TopN) updateTopNWithDelta(d []byte, delta uint64, increase bool) bool { + if c == nil || c.TopN == nil { + return false + } + idx := c.findTopN(d) + if idx >= 0 { + if increase { + c.TopN[idx].Count += delta + } else { + c.TopN[idx].Count -= delta + } + return true + } + return false +} + // NewTopN creates the new TopN struct by the given size. func NewTopN(n int) *TopN { return &TopN{TopN: make([]TopNMeta, 0, n)} diff --git a/statistics/handle/BUILD.bazel b/statistics/handle/BUILD.bazel new file mode 100644 index 0000000000000..716c78f2708fc --- /dev/null +++ b/statistics/handle/BUILD.bazel @@ -0,0 +1,100 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "handle", + srcs = [ + "bootstrap.go", + "ddl.go", + "dump.go", + "gc.go", + "handle.go", + "handle_hist.go", + "lru_cache.go", + "statscache.go", + "update.go", + ], + importpath = "github.com/pingcap/tidb/statistics/handle", + visibility = ["//visibility:public"], + deps = [ + "//config", + "//ddl/util", + "//infoschema", + "//kv", + "//metrics", + "//parser/ast", + "//parser/model", + "//parser/mysql", + "//parser/terror", + "//sessionctx", + "//sessionctx/stmtctx", + "//sessionctx/variable", + "//sessiontxn", + "//statistics", + "//table", + "//types", + "//util", + "//util/chunk", + "//util/codec", + "//util/collate", + "//util/logutil", + "//util/mathutil", + "//util/memory", + "//util/ranger", + "//util/sqlexec", + "//util/timeutil", + "@com_github_ngaut_pools//:pools", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_pingcap_log//:log", + "@com_github_pingcap_tipb//go-tipb", + "@com_github_prometheus_client_golang//prometheus", + "@com_github_tikv_client_go_v2//oracle", + "@org_uber_go_atomic//:atomic", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "handle_test", + srcs = [ + "ddl_test.go", + "dump_test.go", + "gc_test.go", + "handle_hist_test.go", + "handle_test.go", + "lru_cache_test.go", + "main_test.go", + "update_list_test.go", + "update_test.go", + ], + embed = [":handle"], + flaky = True, + shard_count = 50, + deps = [ + "//config", + "//domain", + "//metrics", + "//parser/model", + "//parser/mysql", + "//session", + "//sessionctx/stmtctx", + "//sessionctx/variable", + "//statistics", + "//testkit", + "//testkit/testsetup", + "//types", + "//util", + "//util/codec", + "//util/collate", + "//util/israce", + "//util/mathutil", + "//util/mock", + "//util/ranger", + "//util/sqlexec", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_prometheus_client_model//go", + "@com_github_stretchr_testify//require", + "@com_github_tikv_client_go_v2//oracle", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/statistics/handle/bootstrap.go b/statistics/handle/bootstrap.go index cc99a7cfcfcbd..a2e5714380643 100644 --- a/statistics/handle/bootstrap.go +++ b/statistics/handle/bootstrap.go @@ -19,6 +19,7 @@ import ( "strconv" "github.com/pingcap/errors" + "github.com/pingcap/tidb/config" "github.com/pingcap/tidb/infoschema" "github.com/pingcap/tidb/parser/model" "github.com/pingcap/tidb/parser/mysql" @@ -384,6 +385,7 @@ func (h *Handle) initStatsBuckets(cache *statsCache) error { // InitStats will init the stats cache using full load strategy. func (h *Handle) InitStats(is infoschema.InfoSchema) (err error) { + loadFMSketch := config.GetGlobalConfig().Performance.EnableLoadFMSketch h.mu.Lock() defer func() { _, err1 := h.mu.ctx.(sqlexec.SQLExecutor).ExecuteInternal(context.TODO(), "commit") @@ -408,9 +410,11 @@ func (h *Handle) InitStats(is infoschema.InfoSchema) (err error) { if err != nil { return err } - err = h.initStatsFMSketch(&cache) - if err != nil { - return err + if loadFMSketch { + err = h.initStatsFMSketch(&cache) + if err != nil { + return err + } } err = h.initStatsBuckets(&cache) if err != nil { diff --git a/statistics/handle/ddl.go b/statistics/handle/ddl.go index 1c356bdd14dc6..497cb71a4a955 100644 --- a/statistics/handle/ddl.go +++ b/statistics/handle/ddl.go @@ -129,12 +129,12 @@ func (h *Handle) updateGlobalStats(tblInfo *model.TableInfo) error { // Generate the new index global-stats globalIdxStatsTopNNum, globalIdxStatsBucketNum := 0, 0 - for idx := range tblInfo.Indices { - globalIdxStatsTopN := globalStats.Indices[int64(idx)].TopN + 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[int64(idx)] + globalIdxStats := globalStats.Indices[idx.ID] if globalIdxStats != nil && len(globalIdxStats.Buckets) > globalIdxStatsBucketNum { globalIdxStatsBucketNum = len(globalIdxStats.Buckets) } @@ -144,7 +144,7 @@ func (h *Handle) updateGlobalStats(tblInfo *model.TableInfo) error { if globalIdxStatsBucketNum != 0 { opts[ast.AnalyzeOptNumBuckets] = uint64(globalIdxStatsBucketNum) } - newIndexGlobalStats, err := h.mergePartitionStats2GlobalStats(h.mu.ctx, opts, is, tblInfo, 1, []int64{int64(idx)}) + newIndexGlobalStats, err := h.mergePartitionStats2GlobalStats(h.mu.ctx, opts, is, tblInfo, 1, []int64{idx.ID}) if err != nil { return err } diff --git a/statistics/handle/dump.go b/statistics/handle/dump.go index 2f42e9ec62da4..088c1e494e7d1 100644 --- a/statistics/handle/dump.go +++ b/statistics/handle/dump.go @@ -322,15 +322,15 @@ func TableStatsFromJSON(tableInfo *model.TableInfo, physicalID int64, jsonTbl *J statsVer = *jsonCol.StatsVer } col := &statistics.Column{ - PhysicalID: physicalID, - Histogram: *hist, - CMSketch: cm, - TopN: topN, - FMSketch: fms, - Info: colInfo, - IsHandle: tableInfo.PKIsHandle && mysql.HasPriKeyFlag(colInfo.GetFlag()), - StatsVer: statsVer, - Loaded: true, + PhysicalID: physicalID, + Histogram: *hist, + CMSketch: cm, + TopN: topN, + FMSketch: fms, + Info: colInfo, + IsHandle: tableInfo.PKIsHandle && mysql.HasPriKeyFlag(colInfo.GetFlag()), + StatsVer: statsVer, + ColLoadedStatus: statistics.NewColFullLoadStatus(), } col.Count = int64(col.TotalRowCount()) tbl.Columns[col.ID] = col diff --git a/statistics/handle/handle.go b/statistics/handle/handle.go index 11fc22303901c..6bd49b1f12302 100644 --- a/statistics/handle/handle.go +++ b/statistics/handle/handle.go @@ -20,6 +20,7 @@ import ( "fmt" "sort" "strconv" + "strings" "sync" "sync/atomic" "time" @@ -644,6 +645,7 @@ func (h *Handle) LoadNeededHistograms() (err error) { err = err1 } }() + loadFMSketch := config.GetGlobalConfig().Performance.EnableLoadFMSketch for _, col := range cols { oldCache := h.statsCache.Load().(statsCache) @@ -652,7 +654,7 @@ func (h *Handle) LoadNeededHistograms() (err error) { continue } c, ok := tbl.Columns[col.ColumnID] - if !ok || c.IsLoaded() { + if !ok || !c.IsLoadNeeded() { statistics.HistogramNeededColumns.Delete(col) continue } @@ -664,9 +666,12 @@ func (h *Handle) LoadNeededHistograms() (err error) { if err != nil { return errors.Trace(err) } - fms, err := h.fmSketchFromStorage(reader, col.TableID, 0, col.ColumnID) - if err != nil { - return errors.Trace(err) + var fms *statistics.FMSketch + if loadFMSketch { + fms, err = h.fmSketchFromStorage(reader, col.TableID, 0, col.ColumnID) + if err != nil { + return errors.Trace(err) + } } rows, _, err := reader.read("select stats_ver from mysql.stats_histograms where is_index = 0 and table_id = %? and hist_id = %?", col.TableID, col.ColumnID) if err != nil { @@ -676,15 +681,15 @@ func (h *Handle) LoadNeededHistograms() (err error) { logutil.BgLogger().Error("fail to get stats version for this histogram", zap.Int64("table_id", col.TableID), zap.Int64("hist_id", col.ColumnID)) } colHist := &statistics.Column{ - PhysicalID: col.TableID, - Histogram: *hg, - Info: c.Info, - CMSketch: cms, - TopN: topN, - FMSketch: fms, - IsHandle: c.IsHandle, - StatsVer: rows[0].GetInt64(0), - Loaded: true, + PhysicalID: col.TableID, + Histogram: *hg, + Info: c.Info, + CMSketch: cms, + TopN: topN, + FMSketch: fms, + IsHandle: c.IsHandle, + StatsVer: rows[0].GetInt64(0), + ColLoadedStatus: statistics.NewColFullLoadStatus(), } // Column.Count is calculated by Column.TotalRowCount(). Hence we don't set Column.Count when initializing colHist. colHist.Count = int64(colHist.TotalRowCount()) @@ -823,11 +828,11 @@ func (h *Handle) columnStatsFromStorage(reader *statsReader, row chunk.Row, tabl // We will not load buckets if: // 1. Lease > 0, and: // 2. this column is not handle, and: - // 3. the column doesn't has buckets before, and: + // 3. the column doesn't has any statistics before, and: // 4. loadAll is false. notNeedLoad := h.Lease() > 0 && !isHandle && - (col == nil || !col.IsLoaded() && col.LastUpdateVersion < histVer) && + (col == nil || !col.IsStatsInitialized() && col.LastUpdateVersion < histVer) && !loadAll if notNeedLoad { count, err := h.columnCountFromStorage(reader, table.PhysicalID, histID, statsVer) @@ -864,17 +869,17 @@ func (h *Handle) columnStatsFromStorage(reader *statsReader, row chunk.Row, tabl return errors.Trace(err) } col = &statistics.Column{ - PhysicalID: table.PhysicalID, - Histogram: *hg, - Info: colInfo, - CMSketch: cms, - TopN: topN, - FMSketch: fmSketch, - ErrorRate: errorRate, - IsHandle: tableInfo.PKIsHandle && mysql.HasPriKeyFlag(colInfo.GetFlag()), - Flag: flag, - StatsVer: statsVer, - Loaded: true, + PhysicalID: table.PhysicalID, + Histogram: *hg, + Info: colInfo, + CMSketch: cms, + TopN: topN, + FMSketch: fmSketch, + ErrorRate: errorRate, + IsHandle: tableInfo.PKIsHandle && mysql.HasPriKeyFlag(colInfo.GetFlag()), + Flag: flag, + StatsVer: statsVer, + ColLoadedStatus: statistics.NewColFullLoadStatus(), } // Column.Count is calculated by Column.TotalRowCount(). Hence we don't set Column.Count when initializing col. col.Count = int64(col.TotalRowCount()) @@ -1095,6 +1100,7 @@ func (h *Handle) SaveTableStatsToStorage(results *statistics.AnalyzeResults, nee statsVer = version } // 2. Save histograms. + const maxInsertLength = 1024 * 1024 for _, result := range results.Ars { for i, hg := range result.Hist { // It's normal virtual column, skip it. @@ -1118,8 +1124,26 @@ func (h *Handle) SaveTableStatsToStorage(results *statistics.AnalyzeResults, nee return err } if topN := result.TopNs[i]; topN != nil { - for _, meta := range topN.TopN { - if _, err = exec.ExecuteInternal(ctx, "insert into mysql.stats_top_n (table_id, is_index, hist_id, value, count) values (%?, %?, %?, %?, %?)", tableID, result.IsIndex, hg.ID, meta.Encoded, meta.Count); err != nil { + for j := 0; j < len(topN.TopN); { + end := j + batchInsertSize + if end > len(topN.TopN) { + end = len(topN.TopN) + } + sql := new(strings.Builder) + sql.WriteString("insert into mysql.stats_top_n (table_id, is_index, hist_id, value, count) values ") + for k := j; k < end; k++ { + val := sqlexec.MustEscapeSQL("(%?, %?, %?, %?, %?)", tableID, result.IsIndex, hg.ID, topN.TopN[k].Encoded, topN.TopN[k].Count) + if k > j { + val = "," + val + } + if k > j && sql.Len()+len(val) > maxInsertLength { + end = k + break + } + sql.WriteString(val) + } + j = end + if _, err = exec.ExecuteInternal(ctx, sql.String()); err != nil { return err } } @@ -1141,25 +1165,43 @@ func (h *Handle) SaveTableStatsToStorage(results *statistics.AnalyzeResults, nee } sc := h.mu.ctx.GetSessionVars().StmtCtx var lastAnalyzePos []byte - for j := range hg.Buckets { - count := hg.Buckets[j].Count - if j > 0 { - count -= hg.Buckets[j-1].Count + for j := 0; j < len(hg.Buckets); { + end := j + batchInsertSize + if end > len(hg.Buckets) { + end = len(hg.Buckets) } - var upperBound types.Datum - upperBound, err = hg.GetUpper(j).ConvertTo(sc, types.NewFieldType(mysql.TypeBlob)) - if err != nil { - return err - } - if j == len(hg.Buckets)-1 { - lastAnalyzePos = upperBound.GetBytes() - } - var lowerBound types.Datum - lowerBound, err = hg.GetLower(j).ConvertTo(sc, types.NewFieldType(mysql.TypeBlob)) - if err != nil { - return err + sql := new(strings.Builder) + sql.WriteString("insert into mysql.stats_buckets (table_id, is_index, hist_id, bucket_id, count, repeats, lower_bound, upper_bound, ndv) values ") + for k := j; k < end; k++ { + count := hg.Buckets[k].Count + if k > 0 { + count -= hg.Buckets[k-1].Count + } + var upperBound types.Datum + upperBound, err = hg.GetUpper(k).ConvertTo(sc, types.NewFieldType(mysql.TypeBlob)) + if err != nil { + return err + } + if k == len(hg.Buckets)-1 { + lastAnalyzePos = upperBound.GetBytes() + } + var lowerBound types.Datum + lowerBound, err = hg.GetLower(k).ConvertTo(sc, types.NewFieldType(mysql.TypeBlob)) + if err != nil { + return err + } + val := sqlexec.MustEscapeSQL("(%?, %?, %?, %?, %?, %?, %?, %?, %?)", tableID, result.IsIndex, hg.ID, k, count, hg.Buckets[k].Repeat, lowerBound.GetBytes(), upperBound.GetBytes(), hg.Buckets[k].NDV) + if k > j { + val = "," + val + } + if k > j && sql.Len()+len(val) > maxInsertLength { + end = k + break + } + sql.WriteString(val) } - if _, err = exec.ExecuteInternal(ctx, "insert into mysql.stats_buckets(table_id, is_index, hist_id, bucket_id, count, repeats, lower_bound, upper_bound, ndv) values(%?, %?, %?, %?, %?, %?, %?, %?, %?)", tableID, result.IsIndex, hg.ID, j, count, hg.Buckets[j].Repeat, lowerBound.GetBytes(), upperBound.GetBytes(), hg.Buckets[j].NDV); err != nil { + j = end + if _, err = exec.ExecuteInternal(ctx, sql.String()); err != nil { return err } } diff --git a/statistics/handle/handle_hist.go b/statistics/handle/handle_hist.go index d07f1471b96c3..2dcccadce1f76 100644 --- a/statistics/handle/handle_hist.go +++ b/statistics/handle/handle_hist.go @@ -20,6 +20,7 @@ import ( "github.com/pingcap/errors" "github.com/pingcap/failpoint" + "github.com/pingcap/tidb/config" "github.com/pingcap/tidb/metrics" "github.com/pingcap/tidb/parser/model" "github.com/pingcap/tidb/sessionctx" @@ -249,6 +250,7 @@ func (h *Handle) readStatsForOne(col model.TableColumnID, c *statistics.Column, failpoint.Return(nil, errors.New("gofail ReadStatsForOne error")) } }) + loadFMSketch := config.GetGlobalConfig().Performance.EnableLoadFMSketch hg, err := h.histogramFromStorage(reader, col.TableID, c.ID, &c.Info.FieldType, c.Histogram.NDV, 0, c.LastUpdateVersion, c.NullCount, c.TotColSize, c.Correlation) if err != nil { return nil, errors.Trace(err) @@ -257,9 +259,12 @@ func (h *Handle) readStatsForOne(col model.TableColumnID, c *statistics.Column, if err != nil { return nil, errors.Trace(err) } - fms, err := h.fmSketchFromStorage(reader, col.TableID, 0, col.ColumnID) - if err != nil { - return nil, errors.Trace(err) + var fms *statistics.FMSketch + if loadFMSketch { + fms, err = h.fmSketchFromStorage(reader, col.TableID, 0, col.ColumnID) + if err != nil { + return nil, errors.Trace(err) + } } rows, _, err := reader.read("select stats_ver from mysql.stats_histograms where is_index = 0 and table_id = %? and hist_id = %?", col.TableID, col.ColumnID) if err != nil { @@ -269,15 +274,15 @@ func (h *Handle) readStatsForOne(col model.TableColumnID, c *statistics.Column, logutil.BgLogger().Error("fail to get stats version for this histogram", zap.Int64("table_id", col.TableID), zap.Int64("hist_id", col.ColumnID)) } colHist := &statistics.Column{ - PhysicalID: col.TableID, - Histogram: *hg, - Info: c.Info, - CMSketch: cms, - TopN: topN, - FMSketch: fms, - IsHandle: c.IsHandle, - StatsVer: rows[0].GetInt64(0), - Loaded: true, + PhysicalID: col.TableID, + Histogram: *hg, + Info: c.Info, + CMSketch: cms, + TopN: topN, + FMSketch: fms, + IsHandle: c.IsHandle, + StatsVer: rows[0].GetInt64(0), + ColLoadedStatus: statistics.NewColFullLoadStatus(), } // Column.Count is calculated by Column.TotalRowCount(). Hence, we don't set Column.Count when initializing colHist. colHist.Count = int64(colHist.TotalRowCount()) diff --git a/statistics/handle/handle_test.go b/statistics/handle/handle_test.go index ce77cce0c9238..b18d14236bd36 100644 --- a/statistics/handle/handle_test.go +++ b/statistics/handle/handle_test.go @@ -3336,6 +3336,36 @@ func TestAnalyzeIncrementalEvictedIndex(t *testing.T) { require.Nil(t, failpoint.Disable("github.com/pingcap/tidb/executor/assertEvictIndex")) } +func TestEvictedColumnLoadedStatus(t *testing.T) { + restore := config.RestoreFunc() + defer restore() + config.UpdateGlobal(func(conf *config.Config) { + conf.Performance.EnableStatsCacheMemQuota = true + }) + store, dom, clean := testkit.CreateMockStoreAndDomain(t) + defer clean() + dom.StatsHandle().SetLease(0) + tk := testkit.NewTestKit(t, store) + tk.MustExec("set @@tidb_analyze_version = 1") + tk.MustExec("use test") + tk.MustExec("drop table if exists t") + tk.MustExec("create table t(a int)") + tk.MustExec("analyze table test.t") + tbl, err := dom.InfoSchema().TableByName(model.NewCIStr("test"), model.NewCIStr("t")) + require.Nil(t, err) + tblStats := domain.GetDomain(tk.Session()).StatsHandle().GetTableStats(tbl.Meta()) + for _, col := range tblStats.Columns { + require.True(t, col.IsStatsInitialized()) + } + + domain.GetDomain(tk.Session()).StatsHandle().SetStatsCacheCapacity(1) + tblStats = domain.GetDomain(tk.Session()).StatsHandle().GetTableStats(tbl.Meta()) + for _, col := range tblStats.Columns { + require.True(t, col.IsStatsInitialized()) + require.True(t, col.IsCMSEvicted()) + } +} + func TestAnalyzeTableLRUPut(t *testing.T) { restore := config.RestoreFunc() defer restore() diff --git a/statistics/handle/lru_cache.go b/statistics/handle/lru_cache.go index 0d5ba2c4cd1b5..bc1ce09c87085 100644 --- a/statistics/handle/lru_cache.go +++ b/statistics/handle/lru_cache.go @@ -102,6 +102,10 @@ func (s *statsInnerCache) GetByQuery(tblID int64) (*statistics.Table, bool) { for idxID := range element.tbl.Indices { s.lru.get(tblID, idxID, true) } + // move column element + for colID := range element.tbl.Columns { + s.lru.get(tblID, colID, false) + } return element.tbl, true } @@ -133,12 +137,14 @@ func (s *statsInnerCache) Put(tblID int64, tbl *statistics.Table) { func (s *statsInnerCache) put(tblID int64, tbl *statistics.Table, tblMemUsage *statistics.TableMemoryUsage, needMove bool) { element, exist := s.elements[tblID] if exist { + s.updateColumns(tblID, tbl, tblMemUsage, needMove) s.updateIndices(tblID, tbl, tblMemUsage, needMove) // idx mem usage might be changed before, thus we recalculate the tblMem usage element.tbl = tbl element.tblMemUsage = tbl.MemoryUsage() return } + s.updateColumns(tblID, tbl, tblMemUsage, needMove) s.updateIndices(tblID, tbl, tblMemUsage, needMove) // mem usage might be changed due to evict, thus we recalculate the tblMem usage s.elements[tblID] = &lruMapElement{ @@ -148,24 +154,19 @@ func (s *statsInnerCache) put(tblID int64, tbl *statistics.Table, tblMemUsage *s } func (s *statsInnerCache) updateIndices(tblID int64, tbl *statistics.Table, tblMemUsage *statistics.TableMemoryUsage, needMove bool) { - element, exist := s.elements[tblID] + _, exist := s.elements[tblID] if exist { - oldtbl := element.tbl + oldIdxs := s.lru.elements[tblID][true] deletedIdx := make([]int64, 0) - for oldIdxID := range oldtbl.Indices { + for oldIdxID := range oldIdxs { _, exist := tbl.Indices[oldIdxID] if !exist { deletedIdx = append(deletedIdx, oldIdxID) } } - for idxID, index := range tbl.Indices { - idxMem := tblMemUsage.IndicesMemUsage[idxID] - s.lru.put(tblID, idxID, true, index, idxMem, true, needMove) - } for _, idxID := range deletedIdx { s.lru.del(tblID, idxID, true) } - return } for idxID, idx := range tbl.Indices { idxMem := tblMemUsage.IndicesMemUsage[idxID] @@ -173,6 +174,27 @@ func (s *statsInnerCache) updateIndices(tblID int64, tbl *statistics.Table, tblM } } +func (s *statsInnerCache) updateColumns(tblID int64, tbl *statistics.Table, tblMemUsage *statistics.TableMemoryUsage, needMove bool) { + _, exist := s.elements[tblID] + if exist { + oldCols := s.lru.elements[tblID][false] + deletedCol := make([]int64, 0) + for oldColID := range oldCols { + _, exist := tbl.Columns[oldColID] + if !exist { + deletedCol = append(deletedCol, oldColID) + } + } + for _, colID := range deletedCol { + s.lru.del(tblID, colID, false) + } + } + for colID, col := range tbl.Columns { + colMem := tblMemUsage.ColumnsMemUsage[colID] + s.lru.put(tblID, colID, false, col, colMem, true, needMove) + } +} + // Del implements statsCacheInner func (s *statsInnerCache) Del(tblID int64) { s.Lock() @@ -185,6 +207,10 @@ func (s *statsInnerCache) Del(tblID int64) { for idxID := range element.tbl.Indices { s.lru.del(tblID, idxID, true) } + // remove columns + for colID := range element.tbl.Columns { + s.lru.del(tblID, colID, false) + } delete(s.elements, tblID) } @@ -301,9 +327,7 @@ func (s *statsInnerCache) onEvict(tblID int64) { func (s *statsInnerCache) freshTableCost(tblID int64, element *lruMapElement) { element.tblMemUsage = element.tbl.MemoryUsage() - for idxID, idx := range element.tbl.Indices { - s.lru.put(tblID, idxID, true, idx, element.tblMemUsage.IndicesMemUsage[idxID], true, false) - } + s.put(tblID, element.tbl, element.tblMemUsage, false) } func (s *statsInnerCache) capacity() int64 { @@ -345,8 +369,14 @@ func (c *innerItemLruCache) del(tblID, id int64, isIndex bool) { return } delCounter.Inc() + memUsage := c.elements[tblID][isIndex][id].Value.(*lruCacheItem).innerMemUsage delete(c.elements[tblID][isIndex], id) c.cache.Remove(ele) + if isIndex { + c.calculateCost(&statistics.IndexMemUsage{}, memUsage) + } else { + c.calculateCost(&statistics.ColumnMemUsage{}, memUsage) + } } func (c *innerItemLruCache) put(tblID, id int64, isIndex bool, item statistics.TableCacheItem, itemMem statistics.CacheItemMemoryUsage, @@ -388,7 +418,11 @@ func (c *innerItemLruCache) put(tblID, id int64, isIndex bool, item statistics.T } newElement := c.cache.PushFront(newItem) v[id] = newElement - c.calculateCost(itemMem, &statistics.IndexMemUsage{}) + if isIndex { + c.calculateCost(itemMem, &statistics.IndexMemUsage{}) + } else { + c.calculateCost(itemMem, &statistics.ColumnMemUsage{}) + } } func (c *innerItemLruCache) evictIfNeeded() { diff --git a/statistics/handle/lru_cache_test.go b/statistics/handle/lru_cache_test.go index 148baeaf17c97..ffb39c593cd2a 100644 --- a/statistics/handle/lru_cache_test.go +++ b/statistics/handle/lru_cache_test.go @@ -23,10 +23,10 @@ import ( ) var ( - indexMemoryUsage = int64(4) - columnTotalMemoryUsage = statistics.EmptyHistogramSize + 4 - indexTotalMemoryUsage = statistics.EmptyHistogramSize + 4 - indexEvictedTotalMemoryUsage = statistics.EmptyHistogramSize + mockIndexMemoryUsage = int64(4) + mockColumnMemoryUsage = int64(4) + mockColumnTotalMemoryUsage = statistics.EmptyHistogramSize + 4 + mockIndexTotalMemoryUsage = statistics.EmptyHistogramSize + 4 ) // each column and index consumes 4 bytes memory @@ -36,8 +36,9 @@ func newMockStatisticsTable(columns int, indices int) *statistics.Table { t.Indices = make(map[int64]*statistics.Index) for i := 1; i <= columns; i++ { t.Columns[int64(i)] = &statistics.Column{ - Info: &model.ColumnInfo{ID: int64(i)}, - CMSketch: statistics.NewCMSketch(1, 1), + Info: &model.ColumnInfo{ID: int64(i)}, + CMSketch: statistics.NewCMSketch(1, 1), + ColLoadedStatus: statistics.NewColFullLoadStatus(), } } for i := 1; i <= indices; i++ { @@ -58,13 +59,21 @@ func mockTableAppendColumn(t *statistics.Table) { } func mockTableAppendIndex(t *statistics.Table) { - index := int64(len(t.Columns) + 1) + index := int64(len(t.Indices) + 1) t.Indices[index] = &statistics.Index{ Info: &model.IndexInfo{ID: index}, CMSketch: statistics.NewCMSketch(1, 1), } } +func mockTableRemoveColumn(t *statistics.Table) { + delete(t.Columns, int64(len(t.Columns))) +} + +func mockTableRemoveIndex(t *statistics.Table) { + delete(t.Indices, int64(len(t.Indices))) +} + func TestLRUPutGetDel(t *testing.T) { capacity := int64(100) lru := newStatsLruCache(capacity) @@ -92,43 +101,44 @@ func TestLRUPutGetDel(t *testing.T) { } func TestLRUEvict(t *testing.T) { - capacity := int64(12) + capacity := int64(24) lru := newStatsLruCache(capacity) - t1 := newMockStatisticsTable(1, 2) - require.Equal(t, t1.MemoryUsage().TotalMemUsage, 1*columnTotalMemoryUsage+2*indexTotalMemoryUsage) - require.Equal(t, t1.MemoryUsage().TotalIdxTrackingMemUsage(), 2*indexMemoryUsage) + t1 := newMockStatisticsTable(2, 0) + require.Equal(t, t1.MemoryUsage().TotalMemUsage, 2*mockColumnTotalMemoryUsage) + require.Equal(t, t1.MemoryUsage().TotalIdxTrackingMemUsage(), int64(0)) + require.Equal(t, t1.MemoryUsage().TotalColTrackingMemUsage(), 2*mockColumnMemoryUsage) // Put t1, assert TotalMemUsage and TotalColTrackingMemUsage lru.Put(int64(1), t1) require.Equal(t, lru.TotalCost(), t1.MemoryUsage().TotalMemUsage) - require.Equal(t, lru.Cost(), t1.MemoryUsage().TotalIdxTrackingMemUsage()) + require.Equal(t, lru.Cost(), t1.MemoryUsage().TotalTrackingMemUsage()) // Put t2, assert TotalMemUsage and TotalColTrackingMemUsage t2 := newMockStatisticsTable(2, 1) lru.Put(int64(2), t2) - require.Equal(t, lru.TotalCost(), t1.MemoryUsage().TotalMemUsage+t2.MemoryUsage().TotalMemUsage) - require.Equal(t, lru.Cost(), t1.MemoryUsage().TotalIdxTrackingMemUsage()+t2.MemoryUsage().TotalIdxTrackingMemUsage()) + require.Equal(t, lru.TotalCost(), 4*mockColumnTotalMemoryUsage+1*mockIndexTotalMemoryUsage) + require.Equal(t, lru.Cost(), 4*mockColumnMemoryUsage+1*mockIndexMemoryUsage) - // Put t3, an index CMSketch of t1 should be evicted - t3 := newMockStatisticsTable(3, 1) + // Put t3, a column of t1 should be evicted + t3 := newMockStatisticsTable(1, 1) lru.Put(int64(3), t3) require.Equal(t, lru.Len(), 3) - require.Equal(t, t1.MemoryUsage().TotalIdxTrackingMemUsage(), indexMemoryUsage) - require.Equal(t, lru.TotalCost(), 6*columnTotalMemoryUsage+3*indexTotalMemoryUsage+1*indexEvictedTotalMemoryUsage) - require.Equal(t, lru.Cost(), 3*indexMemoryUsage) + require.Equal(t, t1.MemoryUsage().TotalColTrackingMemUsage(), mockColumnMemoryUsage) require.Equal(t, lru.TotalCost(), t1.MemoryUsage().TotalMemUsage+t2.MemoryUsage().TotalMemUsage+t3.MemoryUsage().TotalMemUsage) - require.Equal(t, lru.Cost(), t1.MemoryUsage().TotalIdxTrackingMemUsage()+ - t2.MemoryUsage().TotalIdxTrackingMemUsage()+t3.MemoryUsage().TotalIdxTrackingMemUsage()) + require.Equal(t, lru.Cost(), 4*mockColumnMemoryUsage+2*mockIndexMemoryUsage) // Put t4, all indices' cmsketch of other tables should be evicted - t4 := newMockStatisticsTable(4, 3) + t4 := newMockStatisticsTable(3, 3) lru.Put(int64(4), t4) require.Equal(t, lru.Len(), 4) - require.Equal(t, t1.MemoryUsage().TotalIdxTrackingMemUsage(), int64(0)) - require.Equal(t, t2.MemoryUsage().TotalIdxTrackingMemUsage(), int64(0)) - require.Equal(t, t3.MemoryUsage().TotalIdxTrackingMemUsage(), int64(0)) - require.Equal(t, lru.TotalCost(), 3*indexTotalMemoryUsage+10*columnTotalMemoryUsage+4*indexEvictedTotalMemoryUsage) - require.Equal(t, lru.Cost(), 3*indexMemoryUsage) + require.Equal(t, t1.MemoryUsage().TotalTrackingMemUsage(), int64(0)) + require.Equal(t, t2.MemoryUsage().TotalTrackingMemUsage(), int64(0)) + require.Equal(t, t3.MemoryUsage().TotalTrackingMemUsage(), int64(0)) + require.Equal(t, lru.TotalCost(), t1.MemoryUsage().TotalMemUsage+ + t2.MemoryUsage().TotalMemUsage+ + t3.MemoryUsage().TotalMemUsage+ + t4.MemoryUsage().TotalMemUsage) + require.Equal(t, lru.Cost(), 3*mockColumnMemoryUsage+3*mockIndexMemoryUsage) } func TestLRUCopy(t *testing.T) { @@ -177,16 +187,26 @@ func TestLRUFreshMemUsage(t *testing.T) { lru.Put(int64(1), t1) lru.Put(int64(2), t2) lru.Put(int64(3), t3) - require.Equal(t, lru.TotalCost(), 6*columnTotalMemoryUsage+6*indexTotalMemoryUsage) - require.Equal(t, lru.Cost(), 6*indexMemoryUsage) + require.Equal(t, lru.TotalCost(), 6*mockColumnTotalMemoryUsage+6*mockIndexTotalMemoryUsage) + require.Equal(t, lru.Cost(), 6*mockIndexMemoryUsage+6*mockColumnMemoryUsage) mockTableAppendColumn(t1) lru.FreshMemUsage() - require.Equal(t, lru.TotalCost(), 7*columnTotalMemoryUsage+6*indexTotalMemoryUsage) - require.Equal(t, lru.Cost(), 6*indexMemoryUsage) + require.Equal(t, lru.TotalCost(), 7*mockColumnTotalMemoryUsage+6*mockIndexTotalMemoryUsage) + require.Equal(t, lru.Cost(), 6*mockIndexMemoryUsage+7*mockColumnMemoryUsage) mockTableAppendIndex(t1) lru.FreshMemUsage() - require.Equal(t, lru.TotalCost(), 7*columnTotalMemoryUsage+7*indexTotalMemoryUsage) - require.Equal(t, lru.Cost(), 7*indexMemoryUsage) + require.Equal(t, lru.TotalCost(), 7*mockColumnTotalMemoryUsage+7*mockIndexTotalMemoryUsage) + require.Equal(t, lru.Cost(), 7*mockIndexMemoryUsage+7*mockColumnMemoryUsage) + + mockTableRemoveColumn(t1) + lru.Put(int64(1), t1) + require.Equal(t, lru.TotalCost(), 6*mockColumnTotalMemoryUsage+7*mockIndexTotalMemoryUsage) + require.Equal(t, lru.Cost(), 7*mockIndexMemoryUsage+6*mockColumnMemoryUsage) + + mockTableRemoveIndex(t1) + lru.Put(int64(1), t1) + require.Equal(t, lru.TotalCost(), 6*mockColumnTotalMemoryUsage+6*mockIndexTotalMemoryUsage) + require.Equal(t, lru.Cost(), 6*mockIndexMemoryUsage+6*mockColumnMemoryUsage) } func TestLRUPutTooBig(t *testing.T) { @@ -196,28 +216,29 @@ func TestLRUPutTooBig(t *testing.T) { lru.Put(int64(1), mockTable) _, ok := lru.Get(int64(1)) require.True(t, ok) - require.Equal(t, lru.TotalCost(), columnTotalMemoryUsage+indexEvictedTotalMemoryUsage) + require.Equal(t, lru.TotalCost(), mockColumnTotalMemoryUsage-mockColumnMemoryUsage+mockIndexTotalMemoryUsage-mockIndexMemoryUsage) require.Equal(t, lru.Cost(), int64(0)) - require.Equal(t, mockTable.MemoryUsage().TotalIdxTrackingMemUsage(), int64(0)) + require.Equal(t, mockTable.MemoryUsage().TotalTrackingMemUsage(), int64(0)) } func TestCacheLen(t *testing.T) { - capacity := int64(8) + capacity := int64(12) stats := newStatsLruCache(capacity) - t1 := newMockStatisticsTable(1, 2) + t1 := newMockStatisticsTable(2, 1) stats.Put(int64(1), t1) t2 := newMockStatisticsTable(1, 1) - // put t2, t1 should be evicted 1 index and still exists in the list + // put t2, t1 should be evicted 2 items and still exists in the list stats.Put(int64(2), t2) - require.Equal(t, stats.lru.cache.Len(), 2) - require.Equal(t, t1.MemoryUsage().TotalIdxTrackingMemUsage(), indexMemoryUsage) + require.Equal(t, stats.lru.cache.Len(), 3) + require.Equal(t, t1.MemoryUsage().TotalTrackingMemUsage(), int64(4)) require.Equal(t, stats.Len(), 2) - // put t3, t1 should be evicted 2 index at all and disappeared from the list - t3 := newMockStatisticsTable(1, 1) + // put t3, t1/t2 should be evicted all items and disappeared from the list + t3 := newMockStatisticsTable(2, 1) stats.Put(int64(3), t3) - require.Equal(t, stats.lru.cache.Len(), 2) - require.Equal(t, t1.MemoryUsage().TotalIdxTrackingMemUsage(), int64(0)) + require.Equal(t, stats.lru.cache.Len(), 3) + require.Equal(t, t1.MemoryUsage().TotalTrackingMemUsage(), int64(0)) + require.Equal(t, t2.MemoryUsage().TotalTrackingMemUsage(), int64(0)) require.Equal(t, stats.Len(), 3) } diff --git a/statistics/handle/update_test.go b/statistics/handle/update_test.go index 174c8d48b139e..0218e99dcce5a 100644 --- a/statistics/handle/update_test.go +++ b/statistics/handle/update_test.go @@ -733,6 +733,10 @@ func TestUpdateErrorRate(t *testing.T) { testKit := testkit.NewTestKit(t, store) testKit.MustExec("use test") + + // TODO(tiancaiamao): query feedback is broken when paging is on. + testKit.MustExec("set @@tidb_enable_paging = off") + testKit.MustExec("set @@session.tidb_analyze_version = 0") testKit.MustExec("create table t (a bigint(64), b bigint(64), primary key(a), index idx(b))") err := h.HandleDDLEvent(<-h.DDLEventCh()) @@ -916,6 +920,10 @@ func TestQueryFeedback(t *testing.T) { defer clean() testKit := testkit.NewTestKit(t, store) testKit.MustExec("use test") + + // TODO(tiancaiamao): query feedback is broken when paging is on. + testKit.MustExec("set @@tidb_enable_paging = off") + testKit.MustExec("set @@session.tidb_analyze_version = 0") testKit.MustExec("create table t (a bigint(64), b bigint(64), primary key(a), index idx(b))") testKit.MustExec("insert into t values (1,2),(2,2),(4,5)") @@ -1174,6 +1182,10 @@ func TestUpdateStatsByLocalFeedback(t *testing.T) { defer clean() testKit := testkit.NewTestKit(t, store) testKit.MustExec("use test") + + // TODO(tiancaiamao): query feedback is broken when paging is on. + testKit.MustExec("set @@tidb_enable_paging = off") + testKit.MustExec("set @@session.tidb_analyze_version = 0") testKit.MustExec(`set @@tidb_partition_prune_mode='` + string(variable.Static) + `'`) testKit.MustExec("create table t (a bigint(64), b bigint(64), primary key(a), index idx(b))") @@ -1613,6 +1625,10 @@ func TestIndexQueryFeedback4TopN(t *testing.T) { handle.MinLogErrorRate.Store(0) testKit.MustExec("use test") + + // TODO(tiancaiamao): query feedback is broken when paging is on. + testKit.MustExec("set @@tidb_enable_paging = off") + testKit.MustExec("set @@session.tidb_analyze_version = 0") testKit.MustExec("create table t (a bigint(64), index idx(a))") for i := 0; i < 20; i++ { @@ -1664,6 +1680,10 @@ func TestAbnormalIndexFeedback(t *testing.T) { handle.MinLogErrorRate.Store(0) testKit.MustExec("use test") + + // TODO(tiancaiamao): query feedback is broken when paging is on. + testKit.MustExec("set @@tidb_enable_paging = off") + testKit.MustExec("create table t (a bigint(64), b bigint(64), index idx_ab(a,b))") for i := 0; i < 20; i++ { testKit.MustExec(fmt.Sprintf("insert into t values (%d, %d)", i/5, i)) @@ -1741,6 +1761,10 @@ func TestFeedbackRanges(t *testing.T) { handle.MinLogErrorRate.Store(0) testKit.MustExec("use test") + + // TODO(tiancaiamao): query feedback is broken when paging is on. + testKit.MustExec("set @@tidb_enable_paging = off") + testKit.MustExec("create table t (a tinyint, b tinyint, primary key(a), index idx(a, b))") for i := 0; i < 20; i++ { testKit.MustExec(fmt.Sprintf("insert into t values (%d, %d)", i, i)) @@ -1820,6 +1844,10 @@ func TestUnsignedFeedbackRanges(t *testing.T) { handle.MinLogErrorRate.Store(0) testKit.MustExec("use test") + + // TODO(tiancaiamao): query feedback is broken when paging is on. + testKit.MustExec("set @@tidb_enable_paging = off") + testKit.MustExec("set @@session.tidb_analyze_version = 0") testKit.MustExec("create table t (a tinyint unsigned, primary key(a))") testKit.MustExec("create table t1 (a bigint unsigned, primary key(a))") @@ -2013,6 +2041,10 @@ func TestFeedbackCounter(t *testing.T) { err := metrics.StoreQueryFeedbackCounter.WithLabelValues(metrics.LblOK).Write(oldNum) require.NoError(t, err) testKit.MustExec("use test") + + // TODO(tiancaiamao): query feedback is broken when paging is on. + testKit.MustExec("set @@tidb_enable_paging = off") + testKit.MustExec("create table t (a int, b int, index idx_a(a))") testKit.MustExec("insert into t values (1, 1), (2, 2), (3, 3), (5, 5)") testKit.MustExec("analyze table t with 0 topn") diff --git a/statistics/histogram.go b/statistics/histogram.go index 59571fbfbcc63..94377998c3421 100644 --- a/statistics/histogram.go +++ b/statistics/histogram.go @@ -1057,16 +1057,8 @@ type Column struct { LastAnalyzePos types.Datum StatsVer int64 // StatsVer is the version of the current stats, used to maintain compatibility - // Loaded means if the histogram, the topn and the cm sketch are loaded fully. - // Those three parts of a Column is loaded lazily. It will only be loaded after trying to use them. - // Note: Currently please use Column.IsLoaded() to check if it's loaded. - Loaded bool -} - -// IsLoaded is a wrap around c.Loaded. -// It's just for safe when we are switching from `c.notNullCount() > 0)` to `c.Loaded`. -func (c *Column) IsLoaded() bool { - return c.Loaded || c.notNullCount() > 0 + // ColLoadedStatus indicates the status of column statistics + ColLoadedStatus } func (c *Column) String() string { @@ -1137,7 +1129,7 @@ func (c *Column) IsInvalid(sctx sessionctx.Context, collPseudo bool) bool { if stmtctx != nil && stmtctx.StatsLoad.Fallback { return true } - if !c.IsLoaded() && stmtctx != nil { + if c.IsLoadNeeded() && stmtctx != nil { if stmtctx.StatsLoad.Timeout > 0 { logutil.BgLogger().Warn("Hist for column should already be loaded as sync but not found.", zap.String(strconv.FormatInt(c.Info.ID, 10), c.Info.Name.O)) @@ -1148,12 +1140,15 @@ func (c *Column) IsInvalid(sctx sessionctx.Context, collPseudo bool) bool { } } } - return c.TotalRowCount() == 0 || (!c.IsLoaded() && c.Histogram.NDV > 0) + // In some cases, some statistics in column would be evicted + // For example: the cmsketch of the column might be evicted while the histogram and the topn are still exists + // In this case, we will think this column as valid due to we can still use the rest of the statistics to do optimize. + return c.TotalRowCount() == 0 || (!c.IsEssentialStatsLoaded() && c.Histogram.NDV > 0) } // IsHistNeeded checks if this column needs histogram to be loaded func (c *Column) IsHistNeeded(collPseudo bool) bool { - return (!collPseudo || !c.NotAccurate()) && !c.IsLoaded() + return (!collPseudo || !c.NotAccurate()) && c.IsLoadNeeded() } func (c *Column) equalRowCount(sctx sessionctx.Context, val types.Datum, encodedVal []byte, realtimeRowCount int64) (float64, error) { @@ -1312,6 +1307,20 @@ func (c *Column) GetColumnRowCount(sctx sessionctx.Context, ranges []*ranger.Ran return rowCount, nil } +// ItemID implements TableCacheItem +func (c *Column) ItemID() int64 { + return c.Info.ID +} + +// DropEvicted implements TableCacheItem +// DropEvicted drops evicted structures +func (c *Column) DropEvicted() { + if c.StatsVer < Version2 && c.IsStatsInitialized() { + c.CMSketch = nil + c.evictedStatus = onlyCmsEvicted + } +} + // Index represents an index histogram. type Index struct { Histogram @@ -1338,7 +1347,12 @@ func (idx *Index) DropEvicted() { // IsEvicted returns whether index statistics got evicted func (idx *Index) IsEvicted() bool { - return idx.CMSketch == nil + switch idx.StatsVer { + case Version1: + return idx.CMSketch == nil + default: + return false + } } func (idx *Index) String() string { @@ -1752,7 +1766,7 @@ func (coll *HistColl) NewHistCollBySelectivity(sctx sessionctx.Context, statsNod zap.Error(err)) continue } - newCol.Loaded = oldCol.Loaded + newCol.ColLoadedStatus = oldCol.ColLoadedStatus newColl.Columns[node.ID] = newCol } for id, idx := range coll.Indices { @@ -2260,3 +2274,50 @@ func MergePartitionHist2GlobalHist(sc *stmtctx.StatementContext, hists []*Histog } return globalHist, nil } + +const ( + allLoaded = iota + onlyCmsEvicted + //onlyHistRemained + allEvicted +) + +// ColLoadedStatus indicates the status of column statistics +type ColLoadedStatus struct { + statsInitialized bool + evictedStatus int +} + +// NewColFullLoadStatus returns the status that the column fully loaded +func NewColFullLoadStatus() ColLoadedStatus { + return ColLoadedStatus{ + statsInitialized: true, + evictedStatus: allLoaded, + } +} + +// IsStatsInitialized indicates whether the column's statistics was loaded from storage before. +// Note that `IsStatsInitialized` only can be set in initializing +func (s ColLoadedStatus) IsStatsInitialized() bool { + return s.statsInitialized +} + +// IsLoadNeeded indicates whether it needs load statistics during LoadNeededHistograms or sync stats +// If the column was loaded and any statistics of it is evicting, it also needs re-load statistics. +func (s ColLoadedStatus) IsLoadNeeded() bool { + if s.statsInitialized { + return s.evictedStatus > allLoaded + } + return true +} + +// IsEssentialStatsLoaded indicates whether the essential statistics is loaded. +// If the column was loaded, and at least histogram and topN still exists, the necessary statistics is still loaded. +func (s ColLoadedStatus) IsEssentialStatsLoaded() bool { + return s.statsInitialized && (s.evictedStatus < allEvicted) +} + +// IsCMSEvicted indicates whether the cms got evicted now. +func (s ColLoadedStatus) IsCMSEvicted() bool { + return s.statsInitialized && s.evictedStatus >= onlyCmsEvicted +} diff --git a/statistics/histogram_test.go b/statistics/histogram_test.go index ad8ef061dad92..238cb2f1fbbc8 100644 --- a/statistics/histogram_test.go +++ b/statistics/histogram_test.go @@ -40,7 +40,7 @@ func TestNewHistogramBySelectivity(t *testing.T) { intCol := &Column{} intCol.Histogram = *NewHistogram(1, 30, 30, 0, types.NewFieldType(mysql.TypeLonglong), chunk.InitialCapacity, 0) intCol.IsHandle = true - intCol.Loaded = true + intCol.ColLoadedStatus = NewColFullLoadStatus() for i := 0; i < 10; i++ { intCol.Bounds.AppendInt64(0, int64(i*3)) intCol.Bounds.AppendInt64(0, int64(i*3+2)) @@ -62,7 +62,7 @@ num: 1 lower_bound: 12 upper_bound: 14 repeats: 0 ndv: 0 num: 30 lower_bound: 27 upper_bound: 29 repeats: 0 ndv: 0` stringCol := &Column{} - stringCol.Loaded = true + stringCol.ColLoadedStatus = NewColFullLoadStatus() stringCol.Histogram = *NewHistogram(2, 15, 30, 0, types.NewFieldType(mysql.TypeString), chunk.InitialCapacity, 0) stringCol.Bounds.AppendString(0, "a") stringCol.Bounds.AppendString(0, "aaaabbbb") diff --git a/statistics/row_sampler.go b/statistics/row_sampler.go index d091f2be818fb..c80af0b980c79 100644 --- a/statistics/row_sampler.go +++ b/statistics/row_sampler.go @@ -78,7 +78,7 @@ func (i ReservoirRowSampleItem) MemUsage() (sum int64) { sum += col.MemUsage() } if i.Handle != nil { - sum += i.Handle.MemUsage() + sum += int64(i.Handle.MemUsage()) } return sum } diff --git a/statistics/scalar_test.go b/statistics/scalar_test.go index 32eca78c5c80b..34a911579137f 100644 --- a/statistics/scalar_test.go +++ b/statistics/scalar_test.go @@ -35,7 +35,7 @@ func getDecimal(value float64) *types.MyDecimal { } func getDuration(value string) types.Duration { - dur, _ := types.ParseDuration(nil, value, 0) + dur, _, _ := types.ParseDuration(nil, value, 0) return dur } diff --git a/statistics/selectivity_test.go b/statistics/selectivity_test.go index 71f6c5f26808d..760eb2f96d5ea 100644 --- a/statistics/selectivity_test.go +++ b/statistics/selectivity_test.go @@ -850,9 +850,9 @@ func prepareSelectivity(testKit *testkit.TestKit, dom *domain.Domain) (*statisti } for i := 1; i <= 5; i++ { statsTbl.Columns[int64(i)] = &statistics.Column{ - Histogram: *mockStatsHistogram(int64(i), colValues, 10, types.NewFieldType(mysql.TypeLonglong)), - Info: tbl.Columns[i-1], - Loaded: true, + Histogram: *mockStatsHistogram(int64(i), colValues, 10, types.NewFieldType(mysql.TypeLonglong)), + Info: tbl.Columns[i-1], + ColLoadedStatus: statistics.NewColFullLoadStatus(), } } diff --git a/statistics/statistics_test.go b/statistics/statistics_test.go index b39767093089e..4ecabdfdd462d 100644 --- a/statistics/statistics_test.go +++ b/statistics/statistics_test.go @@ -251,10 +251,10 @@ func SubTestColumnRange() func(*testing.T) { hg.PreCalculateScalar() require.NoError(t, err) col := &Column{ - Histogram: *hg, - CMSketch: buildCMSketch(s.rc.(*recordSet).data), - Info: &model.ColumnInfo{}, - Loaded: true, + Histogram: *hg, + CMSketch: buildCMSketch(s.rc.(*recordSet).data), + Info: &model.ColumnInfo{}, + ColLoadedStatus: NewColFullLoadStatus(), } tbl := &Table{ HistColl: HistColl{ @@ -327,7 +327,7 @@ func SubTestIntColumnRanges() func(*testing.T) { hg.PreCalculateScalar() require.NoError(t, err) require.Equal(t, int64(100000), rowCount) - col := &Column{Histogram: *hg, Info: &model.ColumnInfo{}, Loaded: true} + col := &Column{Histogram: *hg, Info: &model.ColumnInfo{}, ColLoadedStatus: NewColFullLoadStatus()} tbl := &Table{ HistColl: HistColl{ Count: int64(col.TotalRowCount()), diff --git a/statistics/table.go b/statistics/table.go index 134ea0ced5c7f..44a35bf7169b4 100644 --- a/statistics/table.go +++ b/statistics/table.go @@ -128,6 +128,19 @@ func (t *TableMemoryUsage) TotalIdxTrackingMemUsage() (sum int64) { return sum } +// TotalColTrackingMemUsage returns total columns' tracking memory usage +func (t *TableMemoryUsage) TotalColTrackingMemUsage() (sum int64) { + for _, col := range t.ColumnsMemUsage { + sum += col.TrackingMemUsage() + } + return sum +} + +// TotalTrackingMemUsage return total tracking memory usage +func (t *TableMemoryUsage) TotalTrackingMemUsage() int64 { + return t.TotalIdxTrackingMemUsage() + t.TotalColTrackingMemUsage() +} + // TableCacheItem indicates the unit item stored in statsCache, eg: Column/Index type TableCacheItem interface { ItemID() int64 diff --git a/store/BUILD.bazel b/store/BUILD.bazel new file mode 100644 index 0000000000000..6b25da3287443 --- /dev/null +++ b/store/BUILD.bazel @@ -0,0 +1,41 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "store", + srcs = ["store.go"], + importpath = "github.com/pingcap/tidb/store", + visibility = ["//visibility:public"], + deps = [ + "//kv", + "//util", + "//util/logutil", + "@com_github_pingcap_errors//:errors", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "store_test", + srcs = [ + "batch_coprocessor_test.go", + "main_test.go", + "store_test.go", + ], + embed = [":store"], + deps = [ + "//domain", + "//kv", + "//store/mockstore", + "//store/mockstore/unistore", + "//testkit", + "//testkit/external", + "//testkit/testsetup", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_pingcap_kvproto//pkg/metapb", + "@com_github_stretchr_testify//require", + "@com_github_tikv_client_go_v2//kv", + "@com_github_tikv_client_go_v2//testutils", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/store/copr/BUILD.bazel b/store/copr/BUILD.bazel new file mode 100644 index 0000000000000..575fef1d168de --- /dev/null +++ b/store/copr/BUILD.bazel @@ -0,0 +1,79 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "copr", + srcs = [ + "batch_coprocessor.go", + "batch_request_sender.go", + "coprocessor.go", + "coprocessor_cache.go", + "key_ranges.go", + "mpp.go", + "region_cache.go", + "store.go", + ], + importpath = "github.com/pingcap/tidb/store/copr", + visibility = ["//visibility:public"], + deps = [ + "//config", + "//domain/infosync", + "//errno", + "//kv", + "//metrics", + "//parser/terror", + "//store/driver/backoff", + "//store/driver/error", + "//store/driver/options", + "//util/execdetails", + "//util/logutil", + "//util/mathutil", + "//util/memory", + "//util/paging", + "//util/trxevents", + "@com_github_dgraph_io_ristretto//:ristretto", + "@com_github_gogo_protobuf//proto", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_pingcap_kvproto//pkg/coprocessor", + "@com_github_pingcap_kvproto//pkg/kvrpcpb", + "@com_github_pingcap_kvproto//pkg/metapb", + "@com_github_pingcap_kvproto//pkg/mpp", + "@com_github_pingcap_log//:log", + "@com_github_pingcap_tipb//go-tipb", + "@com_github_tikv_client_go_v2//config", + "@com_github_tikv_client_go_v2//error", + "@com_github_tikv_client_go_v2//metrics", + "@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_client_go_v2//txnkv/txnsnapshot", + "@com_github_tikv_client_go_v2//util", + "@org_golang_google_grpc//codes", + "@org_golang_google_grpc//status", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "copr_test", + srcs = [ + "batch_coprocessor_test.go", + "coprocessor_cache_test.go", + "coprocessor_test.go", + "key_ranges_test.go", + "main_test.go", + ], + embed = [":copr"], + deps = [ + "//kv", + "//store/driver/backoff", + "//testkit/testsetup", + "//util/paging", + "@com_github_pingcap_kvproto//pkg/coprocessor", + "@com_github_stretchr_testify//require", + "@com_github_tikv_client_go_v2//config", + "@com_github_tikv_client_go_v2//testutils", + "@com_github_tikv_client_go_v2//tikv", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/store/copr/coprocessor.go b/store/copr/coprocessor.go index 09b48bfbe2679..0b217583bb9b3 100644 --- a/store/copr/coprocessor.go +++ b/store/copr/coprocessor.go @@ -17,7 +17,6 @@ package copr import ( "context" "fmt" - "io" "strconv" "strings" "sync" @@ -54,7 +53,7 @@ import ( "go.uber.org/zap" ) -var coprCacheHistogramEvict = tidbmetrics.DistSQLCoprCacheHistogram.WithLabelValues("evict") +var coprCacheCounterEvict = tidbmetrics.DistSQLCoprCacheCounter.WithLabelValues("evict") // Maximum total sleep time(in ms) for kv/cop commands. const ( @@ -82,8 +81,16 @@ func (c *CopClient) Send(ctx context.Context, req *kv.Request, variables interfa logutil.BgLogger().Debug("send batch requests") return c.sendBatch(ctx, req, vars, option) } - if req.Streaming && req.Paging { - return copErrorResponse{errors.New("streaming and paging are both on")} + failpoint.Inject("DisablePaging", func(_ failpoint.Value) { + req.Paging = false + }) + if req.StoreType == kv.TiDB { + // coprocessor on TiDB doesn't support paging + req.Paging = false + } + if req.Tp != kv.ReqTypeDAG { + // coprocessor request but type is not DAG + req.Paging = false } ctx = context.WithValue(ctx, tikv.TxnStartKey(), req.StartTs) bo := backoff.NewBackofferWithVars(ctx, copBuildTaskMaxBackoff, vars) @@ -122,9 +129,9 @@ func (c *CopClient) Send(ctx context.Context, req *kv.Request, variables interfa // 2*it.concurrency to avoid deadlock in the unit test caused by the `MustExec` or `Exec` capacity = it.concurrency * 2 } - // in streaming or paging request, a request will be returned in multi batches, + // in paging request, a request will be returned in multi batches, // enlarge the channel size to avoid the request blocked by buffer full. - if req.Streaming || req.Paging { + if req.Paging { if capacity < 2048 { capacity = 2048 } @@ -137,9 +144,7 @@ func (c *CopClient) Send(ctx context.Context, req *kv.Request, variables interfa sessionMemTracker.FallbackOldAndSetNewAction(it.actionOnExceed) } - if !it.req.Streaming { - ctx = context.WithValue(ctx, tikv.RPCCancellerCtxKey{}, it.rpcCancel) - } + ctx = context.WithValue(ctx, tikv.RPCCancellerCtxKey{}, it.rpcCancel) it.open(ctx, enabledRateLimitAction, option.EnableCollectExecutionInfo) return it } @@ -173,10 +178,6 @@ const rangesPerTask = 25000 func buildCopTasks(bo *Backoffer, cache *RegionCache, ranges *KeyRanges, req *kv.Request, eventCb trxevents.EventCallback) ([]*copTask, error) { start := time.Now() cmdType := tikvrpc.CmdCop - if req.Streaming { - cmdType = tikvrpc.CmdCopStream - } - if req.StoreType == kv.TiDB { return buildTiDBMemCopTasks(ranges, req) } @@ -191,9 +192,9 @@ func buildCopTasks(bo *Backoffer, cache *RegionCache, ranges *KeyRanges, req *kv // Channel buffer is 2 for handling region split. // In a common case, two region split tasks will not be blocked. chanSize := 2 - // in streaming or paging request, a request will be returned in multi batches, + // in paging request, a request will be returned in multi batches, // enlarge the channel size to avoid the request blocked by buffer full. - if req.Streaming || req.Paging { + if req.Paging { chanSize = 128 } @@ -244,9 +245,6 @@ func buildTiDBMemCopTasks(ranges *KeyRanges, req *kv.Request) ([]*copTask, error return nil, err } cmdType := tikvrpc.CmdCop - if req.Streaming { - cmdType = tikvrpc.CmdCopStream - } tasks := make([]*copTask, 0, len(servers)) for _, ser := range servers { if req.TiDBServerID > 0 && req.TiDBServerID != ser.ServerIDGetter() { @@ -689,7 +687,7 @@ func (worker *copIteratorWorker) handleTask(ctx context.Context, task *copTask, } } if worker.store.coprCache != nil && worker.store.coprCache.cache.Metrics != nil { - coprCacheHistogramEvict.Observe(float64(worker.store.coprCache.cache.Metrics.KeysEvicted())) + coprCacheCounterEvict.Add(float64(worker.store.coprCache.cache.Metrics.KeysEvicted())) } } @@ -780,15 +778,11 @@ func (worker *copIteratorWorker) handleTaskOnce(bo *Backoffer, task *copTask, ch storeID := strconv.FormatUint(req.Context.GetPeer().GetStoreId(), 10) metrics.TiKVCoprocessorHistogram.WithLabelValues(storeID, strconv.FormatBool(staleRead)).Observe(costTime.Seconds()) - if task.cmdType == tikvrpc.CmdCopStream { - return worker.handleCopStreamResult(bo, rpcCtx, resp.Resp.(*tikvrpc.CopStreamResponse), task, ch, costTime) - } - if worker.req.Paging { return worker.handleCopPagingResult(bo, rpcCtx, &copResponse{pbResp: resp.Resp.(*coprocessor.Response)}, task, ch, costTime) } - // Handles the response for non-streaming copTask. + // Handles the response for non-paging copTask. return worker.handleCopResponse(bo, rpcCtx, &copResponse{pbResp: resp.Resp.(*coprocessor.Response)}, cacheKey, cacheValue, task, ch, nil, costTime) } @@ -810,12 +804,6 @@ func (worker *copIteratorWorker) logTimeCopTask(costTime time.Duration, task *co case *coprocessor.Response: detailV2 = r.ExecDetailsV2 detail = r.ExecDetails - case *tikvrpc.CopStreamResponse: - // streaming request returns io.EOF, so the first CopStreamResponse.Response maybe nil. - if r.Response != nil { - detailV2 = r.Response.ExecDetailsV2 - detail = r.Response.ExecDetails - } default: panic("unreachable") } @@ -860,52 +848,6 @@ func appendScanDetail(logStr string, columnFamily string, scanInfo *kvrpcpb.Scan return logStr } -func (worker *copIteratorWorker) handleCopStreamResult(bo *Backoffer, rpcCtx *tikv.RPCContext, stream *tikvrpc.CopStreamResponse, task *copTask, ch chan<- *copResponse, costTime time.Duration) ([]*copTask, error) { - defer stream.Close() - var resp *coprocessor.Response - var lastRange *coprocessor.KeyRange - resp = stream.Response - if resp == nil { - // streaming request returns io.EOF, so the first Response is nil. - return nil, nil - } - for { - remainedTasks, err := worker.handleCopResponse(bo, rpcCtx, &copResponse{pbResp: resp}, nil, nil, task, ch, lastRange, costTime) - if err != nil || len(remainedTasks) != 0 { - return remainedTasks, errors.Trace(err) - } - resp, err = stream.Recv() - if err != nil { - if errors.Cause(err) == io.EOF { - return nil, nil - } - - err1 := errors.Errorf("recv stream response error: %v, task: %s", err, task) - if task.storeType == kv.TiFlash { - err1 = bo.Backoff(tikv.BoTiFlashRPC(), err1) - } else { - err1 = bo.Backoff(tikv.BoTiKVRPC(), err1) - } - - if err1 != nil { - return nil, errors.Trace(err) - } - - // No coprocessor.Response for network error, rebuild task based on the last success one. - if errors.Cause(err) == context.Canceled { - logutil.BgLogger().Info("stream recv timeout", zap.Error(err)) - } else { - logutil.BgLogger().Info("stream unknown error", zap.Error(err)) - } - task.ranges = worker.calculateRemain(task.ranges, lastRange, worker.req.Desc) - return []*copTask{task}, nil - } - if resp.Range != nil { - lastRange = resp.Range - } - } -} - func (worker *copIteratorWorker) handleCopPagingResult(bo *Backoffer, rpcCtx *tikv.RPCContext, resp *copResponse, task *copTask, ch chan<- *copResponse, costTime time.Duration) ([]*copTask, error) { remainedTasks, err := worker.handleCopResponse(bo, rpcCtx, resp, nil, nil, task, ch, nil, costTime) if err != nil || len(remainedTasks) != 0 { @@ -918,7 +860,9 @@ func (worker *copIteratorWorker) handleCopPagingResult(bo *Backoffer, rpcCtx *ti pagingRange := resp.pbResp.Range // only paging requests need to calculate the next ranges if pagingRange == nil { - return nil, errors.New("lastRange in paging should not be nil") + // If the storage engine doesn't support paging protocol, it should have return all the region data. + // So we finish here. + return nil, nil } // calculate next ranges and grow the paging size task.ranges = worker.calculateRemain(task.ranges, pagingRange, worker.req.Desc) @@ -931,7 +875,7 @@ func (worker *copIteratorWorker) handleCopPagingResult(bo *Backoffer, rpcCtx *ti // handleCopResponse checks coprocessor Response for region split and lock, // returns more tasks when that happens, or handles the response if no error. -// if we're handling streaming coprocessor response, lastRange is the range of last +// if we're handling coprocessor paging response, lastRange is the range of last // successful response, otherwise it's nil. func (worker *copIteratorWorker) handleCopResponse(bo *Backoffer, rpcCtx *tikv.RPCContext, resp *copResponse, cacheKey []byte, cacheValue *coprCacheValue, task *copTask, ch chan<- *copResponse, lastRange *coprocessor.KeyRange, costTime time.Duration) ([]*copTask, error) { if ver := resp.pbResp.GetLatestBucketsVersion(); task.bucketsVer < ver { @@ -971,16 +915,22 @@ func (worker *copIteratorWorker) handleCopResponse(bo *Backoffer, rpcCtx *tikv.R return nil, errors.Trace(err) } } - if worker.req.Streaming { - task.ranges = worker.calculateRetry(task.ranges, lastRange, worker.req.Desc) - } return []*copTask{task}, nil } if otherErr := resp.pbResp.GetOtherError(); otherErr != "" { err := errors.Errorf("other error: %s", otherErr) + + firstRangeStartKey := task.ranges.At(0).StartKey + lastRangeEndKey := task.ranges.At(task.ranges.Len() - 1).EndKey + logutil.Logger(bo.GetCtx()).Warn("other error", zap.Uint64("txnStartTS", worker.req.StartTs), zap.Uint64("regionID", task.region.GetID()), + zap.Uint64("bucketsVer", task.bucketsVer), + zap.Uint64("latestBucketsVer", resp.pbResp.GetLatestBucketsVersion()), + zap.Int("rangeNums", task.ranges.Len()), + zap.ByteString("firstRangeStartKey", firstRangeStartKey), + zap.ByteString("lastRangeEndKey", lastRangeEndKey), zap.String("storeAddr", task.storeAddr), zap.Error(err)) if strings.Contains(err.Error(), "write conflict") { @@ -988,7 +938,7 @@ func (worker *copIteratorWorker) handleCopResponse(bo *Backoffer, rpcCtx *tikv.R } return nil, errors.Trace(err) } - // When the request is using streaming API, the `Range` is not nil. + // When the request is using paging API, the `Range` is not nil. if resp.pbResp.Range != nil { resp.startKey = resp.pbResp.Range.Start } else if task.ranges != nil && task.ranges.Len() > 0 { @@ -1120,7 +1070,7 @@ func (worker *copIteratorWorker) handleTiDBSendReqErr(err error, task *copTask, } // calculateRetry splits the input ranges into two, and take one of them according to desc flag. -// It's used in streaming API, to calculate which range is consumed and what needs to be retry. +// It's used in paging API, to calculate which range is consumed and what needs to be retry. // For example: // ranges: [r1 --> r2) [r3 --> r4) // split: [s1 --> s2) @@ -1138,7 +1088,7 @@ func (worker *copIteratorWorker) calculateRetry(ranges *KeyRanges, split *coproc return right } -// calculateRemain calculates the remain ranges to be processed, it's used in streaming and paging API. +// calculateRemain calculates the remain ranges to be processed, it's used in paging API. // For example: // ranges: [r1 --> r2) [r3 --> r4) // split: [s1 --> s2) diff --git a/store/driver/BUILD.bazel b/store/driver/BUILD.bazel new file mode 100644 index 0000000000000..b158197a4342c --- /dev/null +++ b/store/driver/BUILD.bazel @@ -0,0 +1,55 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "driver", + srcs = ["tikv_driver.go"], + importpath = "github.com/pingcap/tidb/store/driver", + visibility = ["//visibility:public"], + deps = [ + "//kv", + "//store/copr", + "//store/driver/error", + "//store/driver/txn", + "//store/gcworker", + "//util/logutil", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_kvproto//pkg/deadlock", + "@com_github_pingcap_kvproto//pkg/kvrpcpb", + "@com_github_tikv_client_go_v2//config", + "@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//:client", + "@org_golang_google_grpc//:grpc", + "@org_golang_google_grpc//keepalive", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "driver_test", + srcs = [ + "config_test.go", + "main_test.go", + "snap_interceptor_test.go", + "sql_fail_test.go", + "txn_test.go", + ], + embed = [":driver"], + deps = [ + "//domain", + "//kv", + "//session", + "//store/copr", + "//store/mockstore", + "//store/mockstore/unistore", + "//testkit/testsetup", + "//util", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_stretchr_testify//require", + "@com_github_tikv_client_go_v2//config", + "@com_github_tikv_client_go_v2//tikv", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/store/driver/backoff/BUILD.bazel b/store/driver/backoff/BUILD.bazel new file mode 100644 index 0000000000000..2076a9c801a7d --- /dev/null +++ b/store/driver/backoff/BUILD.bazel @@ -0,0 +1,13 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "backoff", + srcs = ["backoff.go"], + importpath = "github.com/pingcap/tidb/store/driver/backoff", + visibility = ["//visibility:public"], + deps = [ + "//kv", + "//store/driver/error", + "@com_github_tikv_client_go_v2//tikv", + ], +) diff --git a/store/driver/error/BUILD.bazel b/store/driver/error/BUILD.bazel new file mode 100644 index 0000000000000..95daebe95a8b1 --- /dev/null +++ b/store/driver/error/BUILD.bazel @@ -0,0 +1,30 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "error", + srcs = ["error.go"], + importpath = "github.com/pingcap/tidb/store/driver/error", + visibility = ["//visibility:public"], + deps = [ + "//errno", + "//kv", + "//parser/terror", + "//util/dbterror", + "@com_github_pingcap_errors//:errors", + "@com_github_tikv_client_go_v2//error", + ], +) + +go_test( + name = "error_test", + srcs = ["error_test.go"], + embed = [":error"], + deps = [ + "//parser/terror", + "//testkit/testsetup", + "@com_github_pingcap_errors//:errors", + "@com_github_stretchr_testify//assert", + "@com_github_tikv_client_go_v2//error", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/store/driver/options/BUILD.bazel b/store/driver/options/BUILD.bazel new file mode 100644 index 0000000000000..7a9f093c19f49 --- /dev/null +++ b/store/driver/options/BUILD.bazel @@ -0,0 +1,12 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "options", + srcs = ["options.go"], + importpath = "github.com/pingcap/tidb/store/driver/options", + visibility = ["//visibility:public"], + deps = [ + "//kv", + "@com_github_tikv_client_go_v2//kv", + ], +) diff --git a/store/driver/tikv_driver.go b/store/driver/tikv_driver.go index a3c385f39df6e..e1ba5d121608f 100644 --- a/store/driver/tikv_driver.go +++ b/store/driver/tikv_driver.go @@ -326,6 +326,7 @@ func (s *tikvStore) ShowStatus(ctx context.Context, key string) (interface{}, er // GetLockWaits get return lock waits info func (s *tikvStore) GetLockWaits() ([]*deadlockpb.WaitForEntry, error) { stores := s.GetRegionCache().GetStoresByType(tikvrpc.TiKV) + //nolint: prealloc var result []*deadlockpb.WaitForEntry for _, store := range stores { resp, err := s.GetTiKVClient().SendRequest(context.TODO(), store.GetAddr(), tikvrpc.NewRequest(tikvrpc.CmdLockWaitInfo, &kvrpcpb.GetLockWaitInfoRequest{}), time.Second*30) diff --git a/store/driver/txn/BUILD.bazel b/store/driver/txn/BUILD.bazel new file mode 100644 index 0000000000000..fc5bd8a2d7037 --- /dev/null +++ b/store/driver/txn/BUILD.bazel @@ -0,0 +1,65 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "txn", + srcs = [ + "batch_getter.go", + "binlog.go", + "error.go", + "scanner.go", + "snapshot.go", + "txn_driver.go", + "union_iter.go", + "unionstore_driver.go", + ], + importpath = "github.com/pingcap/tidb/store/driver/txn", + visibility = ["//visibility:public"], + deps = [ + "//kv", + "//parser/model", + "//parser/mysql", + "//sessionctx/binloginfo", + "//store/driver/error", + "//store/driver/options", + "//table/tables", + "//tablecodec", + "//types", + "//util/logutil", + "@com_github_opentracing_opentracing_go//:opentracing-go", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_pingcap_kvproto//pkg/kvrpcpb", + "@com_github_pingcap_kvproto//pkg/metapb", + "@com_github_pingcap_tipb//go-binlog", + "@com_github_tikv_client_go_v2//error", + "@com_github_tikv_client_go_v2//kv", + "@com_github_tikv_client_go_v2//tikv", + "@com_github_tikv_client_go_v2//tikvrpc", + "@com_github_tikv_client_go_v2//tikvrpc/interceptor", + "@com_github_tikv_client_go_v2//txnkv/transaction", + "@com_github_tikv_client_go_v2//txnkv/txnsnapshot", + "@com_github_tikv_client_go_v2//txnkv/txnutil", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "txn_test", + srcs = [ + "batch_getter_test.go", + "driver_test.go", + "main_test.go", + "union_iter_test.go", + ], + embed = [":txn"], + deps = [ + "//kv", + "//testkit/testsetup", + "//util/mock", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_kvproto//pkg/kvrpcpb", + "@com_github_stretchr_testify//assert", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/store/driver/txn/unionstore_driver.go b/store/driver/txn/unionstore_driver.go index 6b2dcc283213e..2c15018872bc0 100644 --- a/store/driver/txn/unionstore_driver.go +++ b/store/driver/txn/unionstore_driver.go @@ -43,6 +43,10 @@ func (m *memBuffer) Delete(k kv.Key) error { return m.MemDB.Delete(k) } +func (m *memBuffer) RemoveFromBuffer(k kv.Key) { + m.MemDB.RemoveFromBuffer(k) +} + func (m *memBuffer) DeleteWithFlags(k kv.Key, ops ...kv.FlagsOp) error { err := m.MemDB.DeleteWithFlags(k, getTiKVFlagsOps(ops)...) return derr.ToTiDBErr(err) diff --git a/store/gcworker/BUILD.bazel b/store/gcworker/BUILD.bazel new file mode 100644 index 0000000000000..c4be6351dc959 --- /dev/null +++ b/store/gcworker/BUILD.bazel @@ -0,0 +1,76 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "gcworker", + srcs = ["gc_worker.go"], + importpath = "github.com/pingcap/tidb/store/gcworker", + visibility = ["//visibility:public"], + deps = [ + "//ddl", + "//ddl/label", + "//ddl/placement", + "//ddl/util", + "//domain/infosync", + "//kv", + "//metrics", + "//parser/model", + "//parser/terror", + "//privilege", + "//session", + "//sessionctx/variable", + "//tablecodec", + "//util/codec", + "//util/dbterror", + "//util/logutil", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_pingcap_kvproto//pkg/errorpb", + "@com_github_pingcap_kvproto//pkg/kvrpcpb", + "@com_github_pingcap_kvproto//pkg/metapb", + "@com_github_tikv_client_go_v2//error", + "@com_github_tikv_client_go_v2//kv", + "@com_github_tikv_client_go_v2//oracle", + "@com_github_tikv_client_go_v2//tikv", + "@com_github_tikv_client_go_v2//tikvrpc", + "@com_github_tikv_client_go_v2//txnkv/rangetask", + "@com_github_tikv_client_go_v2//txnkv/txnlock", + "@com_github_tikv_client_go_v2//util", + "@com_github_tikv_pd_client//:client", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "gcworker_test", + srcs = [ + "gc_worker_test.go", + "main_test.go", + ], + embed = [":gcworker"], + deps = [ + "//ddl/placement", + "//ddl/util", + "//domain", + "//domain/infosync", + "//kv", + "//parser/model", + "//store/mockstore", + "//testkit", + "//testkit/testmain", + "//testkit/testsetup", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_pingcap_kvproto//pkg/errorpb", + "@com_github_pingcap_kvproto//pkg/kvrpcpb", + "@com_github_pingcap_kvproto//pkg/metapb", + "@com_github_stretchr_testify//require", + "@com_github_tikv_client_go_v2//oracle", + "@com_github_tikv_client_go_v2//oracle/oracles", + "@com_github_tikv_client_go_v2//testutils", + "@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//:client", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/store/gcworker/gc_worker_test.go b/store/gcworker/gc_worker_test.go index 137cfb6eab2bb..71c1f0ffea3e0 100644 --- a/store/gcworker/gc_worker_test.go +++ b/store/gcworker/gc_worker_test.go @@ -97,16 +97,18 @@ type mockGCWorkerSuite struct { } func createGCWorkerSuite(t *testing.T) (s *mockGCWorkerSuite, clean func()) { - s = new(mockGCWorkerSuite) + return createGCWorkerSuiteWithStoreType(t, mockstore.EmbedUnistore) +} +func createGCWorkerSuiteWithStoreType(t *testing.T, storeType mockstore.StoreType) (s *mockGCWorkerSuite, clean func()) { + s = new(mockGCWorkerSuite) hijackClient := func(client tikv.Client) tikv.Client { s.client = &mockGCWorkerClient{Client: client} client = s.client return client } - opts := []mockstore.MockTiKVStoreOption{ - mockstore.WithStoreType(mockstore.MockTiKV), + mockstore.WithStoreType(storeType), mockstore.WithClusterInspector(func(c testutils.Cluster) { s.initRegion.storeIDs, s.initRegion.peerIDs, s.initRegion.regionID, _ = mockstore.BootstrapWithMultiStores(c, 3) s.cluster = c @@ -943,7 +945,14 @@ func TestResolveLockRangeMeetRegionCacheMiss(t *testing.T) { } func TestResolveLockRangeMeetRegionEnlargeCausedByRegionMerge(t *testing.T) { - s, clean := createGCWorkerSuite(t) + // TODO: Update the test code. + // This test rely on the obsolete mock tikv, but mock tikv does not implement paging. + // So use this failpoint to force non-paging protocol. + failpoint.Enable("github.com/pingcap/tidb/store/copr/DisablePaging", `return`) + defer func() { + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/store/copr/DisablePaging")) + }() + s, clean := createGCWorkerSuiteWithStoreType(t, mockstore.MockTiKV) defer clean() var ( diff --git a/store/helper/BUILD.bazel b/store/helper/BUILD.bazel new file mode 100644 index 0000000000000..efe0ffe8c5a4a --- /dev/null +++ b/store/helper/BUILD.bazel @@ -0,0 +1,50 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "helper", + srcs = ["helper.go"], + importpath = "github.com/pingcap/tidb/store/helper", + visibility = ["//visibility:public"], + deps = [ + "//ddl/placement", + "//kv", + "//metrics", + "//parser/model", + "//store/driver/error", + "//tablecodec", + "//util", + "//util/codec", + "//util/logutil", + "//util/pdapi", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_kvproto//pkg/deadlock", + "@com_github_pingcap_kvproto//pkg/kvrpcpb", + "@com_github_tikv_client_go_v2//oracle", + "@com_github_tikv_client_go_v2//tikv", + "@com_github_tikv_client_go_v2//tikvrpc", + "@com_github_tikv_client_go_v2//txnkv/txnlock", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "helper_test", + srcs = [ + "helper_test.go", + "main_test.go", + ], + embed = [":helper"], + deps = [ + "//parser/model", + "//store/mockstore", + "//tablecodec", + "//testkit/testsetup", + "//util/pdapi", + "@com_github_gorilla_mux//:mux", + "@com_github_pingcap_log//:log", + "@com_github_stretchr_testify//require", + "@com_github_tikv_client_go_v2//testutils", + "@org_uber_go_goleak//:goleak", + "@org_uber_go_zap//:zap", + ], +) diff --git a/store/mockstore/BUILD.bazel b/store/mockstore/BUILD.bazel new file mode 100644 index 0000000000000..9d0ce8a6a181b --- /dev/null +++ b/store/mockstore/BUILD.bazel @@ -0,0 +1,53 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "mockstore", + srcs = [ + "mockstore.go", + "redirector.go", + "tikv.go", + "unistore.go", + ], + importpath = "github.com/pingcap/tidb/store/mockstore", + visibility = ["//visibility:public"], + deps = [ + "//config", + "//kv", + "//store/mockstore/mockcopr", + "//store/mockstore/mockstorage", + "//store/mockstore/unistore", + "@com_github_pingcap_errors//:errors", + "@com_github_tikv_client_go_v2//testutils", + "@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//:client", + ], +) + +go_test( + name = "mockstore_test", + srcs = [ + "cluster_test.go", + "main_test.go", + "tikv_test.go", + ], + embed = [":mockstore"], + deps = [ + "//config", + "//kv", + "//sessionctx/stmtctx", + "//tablecodec", + "//testkit/testmain", + "//testkit/testsetup", + "//types", + "//util/codec", + "//util/rowcodec", + "@com_github_pingcap_kvproto//pkg/kvrpcpb", + "@com_github_stretchr_testify//require", + "@com_github_tikv_client_go_v2//config", + "@com_github_tikv_client_go_v2//testutils", + "@com_github_tikv_client_go_v2//tikv", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/store/mockstore/mockcopr/BUILD.bazel b/store/mockstore/mockcopr/BUILD.bazel new file mode 100644 index 0000000000000..1b46f031d104c --- /dev/null +++ b/store/mockstore/mockcopr/BUILD.bazel @@ -0,0 +1,75 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "mockcopr", + srcs = [ + "aggregate.go", + "analyze.go", + "checksum.go", + "cop_handler_dag.go", + "copr_handler.go", + "executor.go", + "rpc_copr.go", + "topn.go", + ], + importpath = "github.com/pingcap/tidb/store/mockstore/mockcopr", + visibility = ["//visibility:public"], + deps = [ + "//expression", + "//expression/aggregation", + "//kv", + "//parser/ast", + "//parser/charset", + "//parser/model", + "//parser/mysql", + "//parser/terror", + "//sessionctx/stmtctx", + "//statistics", + "//tablecodec", + "//types", + "//util/chunk", + "//util/codec", + "//util/collate", + "//util/rowcodec", + "//util/timeutil", + "@com_github_golang_protobuf//proto", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_kvproto//pkg/coprocessor", + "@com_github_pingcap_kvproto//pkg/errorpb", + "@com_github_pingcap_kvproto//pkg/kvrpcpb", + "@com_github_pingcap_tipb//go-tipb", + "@com_github_tikv_client_go_v2//testutils", + "@com_github_tikv_client_go_v2//tikvrpc", + "@org_golang_google_grpc//:grpc", + "@org_golang_google_grpc//metadata", + ], +) + +go_test( + name = "mockcopr_test", + srcs = [ + "cop_handler_dag_test.go", + "executor_test.go", + "main_test.go", + ], + embed = [":mockcopr"], + deps = [ + "//domain", + "//kv", + "//parser/model", + "//session", + "//store/mockstore/mockstorage", + "//tablecodec", + "//testkit", + "//testkit/testmain", + "//testkit/testsetup", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_pingcap_kvproto//pkg/kvrpcpb", + "@com_github_stretchr_testify//require", + "@com_github_tikv_client_go_v2//oracle", + "@com_github_tikv_client_go_v2//testutils", + "@com_github_tikv_client_go_v2//tikv", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/store/mockstore/mockcopr/cop_handler_dag.go b/store/mockstore/mockcopr/cop_handler_dag.go index 1a408d78daf9b..3ab21aadbb9f4 100644 --- a/store/mockstore/mockcopr/cop_handler_dag.go +++ b/store/mockstore/mockcopr/cop_handler_dag.go @@ -25,7 +25,6 @@ import ( "github.com/pingcap/kvproto/pkg/coprocessor" "github.com/pingcap/kvproto/pkg/errorpb" "github.com/pingcap/kvproto/pkg/kvrpcpb" - "github.com/pingcap/kvproto/pkg/tikvpb" "github.com/pingcap/tidb/expression" "github.com/pingcap/tidb/expression/aggregation" "github.com/pingcap/tidb/kv" @@ -39,7 +38,6 @@ import ( "github.com/pingcap/tidb/util/chunk" "github.com/pingcap/tidb/util/codec" "github.com/pingcap/tidb/util/collate" - mockpkg "github.com/pingcap/tidb/util/mock" "github.com/pingcap/tidb/util/rowcodec" "github.com/pingcap/tidb/util/timeutil" "github.com/pingcap/tipb/go-tipb" @@ -136,20 +134,6 @@ func constructTimeZone(name string, offset int) (*time.Location, error) { return timeutil.ConstructTimeZone(name, offset) } -func (h coprHandler) handleCopStream(ctx context.Context, req *coprocessor.Request) (tikvpb.Tikv_CoprocessorStreamClient, error) { - dagCtx, e, dagReq, err := h.buildDAGExecutor(req) - if err != nil { - return nil, errors.Trace(err) - } - - return &mockCopStreamClient{ - exec: e, - req: dagReq, - ctx: ctx, - dagCtx: dagCtx, - }, nil -} - func (h coprHandler) buildExec(ctx *dagContext, curr *tipb.Executor) (executor, *tipb.Executor, error) { var currExec executor var err error @@ -522,16 +506,6 @@ func (mockClientStream) SendMsg(m interface{}) error { return nil } // RecvMsg implements grpc.ClientStream interface func (mockClientStream) RecvMsg(m interface{}) error { return nil } -type mockCopStreamClient struct { - mockClientStream - - req *tipb.DAGRequest - exec executor - ctx context.Context - dagCtx *dagContext - finished bool -} - type mockBathCopErrClient struct { mockClientStream @@ -568,110 +542,6 @@ func (mock *mockBatchCopDataClient) Recv() (*coprocessor.BatchResponse, error) { return nil, io.EOF } -type mockCopStreamErrClient struct { - mockClientStream - - *errorpb.Error -} - -func (mock *mockCopStreamErrClient) Recv() (*coprocessor.Response, error) { - return &coprocessor.Response{ - RegionError: mock.Error, - }, nil -} - -func (mock *mockCopStreamClient) Recv() (*coprocessor.Response, error) { - select { - case <-mock.ctx.Done(): - return nil, mock.ctx.Err() - default: - } - - if mock.finished { - return nil, io.EOF - } - - if hook := mock.ctx.Value(mockpkg.HookKeyForTest("mockTiKVStreamRecvHook")); hook != nil { - hook.(func(context.Context))(mock.ctx) - } - - var resp coprocessor.Response - chunk, finish, ran, counts, warnings, err := mock.readBlockFromExecutor() - resp.Range = ran - if err != nil { - if locked, ok := errors.Cause(err).(*testutils.ErrLocked); ok { - resp.Locked = &kvrpcpb.LockInfo{ - Key: locked.Key, - PrimaryLock: locked.Primary, - LockVersion: locked.StartTS, - LockTtl: locked.TTL, - } - } else { - resp.OtherError = err.Error() - } - return &resp, nil - } - if finish { - // Just mark it, need to handle the last chunk. - mock.finished = true - } - - data, err := chunk.Marshal() - if err != nil { - resp.OtherError = err.Error() - return &resp, nil - } - var Warnings []*tipb.Error - if len(warnings) > 0 { - Warnings = make([]*tipb.Error, 0, len(warnings)) - for i := range warnings { - Warnings = append(Warnings, toPBError(warnings[i].Err)) - } - } - streamResponse := tipb.StreamResponse{ - Error: toPBError(err), - Data: data, - Warnings: Warnings, - OutputCounts: counts, - } - resp.Data, err = proto.Marshal(&streamResponse) - if err != nil { - resp.OtherError = err.Error() - } - return &resp, nil -} - -func (mock *mockCopStreamClient) readBlockFromExecutor() (tipb.Chunk, bool, *coprocessor.KeyRange, []int64, []stmtctx.SQLWarn, error) { - var chunk tipb.Chunk - var ran coprocessor.KeyRange - var finish bool - var desc bool - mock.exec.ResetCounts() - ran.Start, desc = mock.exec.Cursor() - for count := 0; count < rowsPerChunk; count++ { - row, err := mock.exec.Next(mock.ctx) - if err != nil { - ran.End, _ = mock.exec.Cursor() - return chunk, false, &ran, nil, nil, errors.Trace(err) - } - if row == nil { - finish = true - break - } - for _, offset := range mock.req.OutputOffsets { - chunk.RowsData = append(chunk.RowsData, row[offset]...) - } - } - - ran.End, _ = mock.exec.Cursor() - if desc { - ran.Start, ran.End = ran.End, ran.Start - } - warnings := mock.dagCtx.evalCtx.sc.GetWarnings() - mock.dagCtx.evalCtx.sc.SetWarnings(nil) - return chunk, finish, &ran, mock.exec.Counts(), warnings, nil -} - func (h coprHandler) initSelectResponse(err error, warnings []stmtctx.SQLWarn, counts []int64) *tipb.SelectResponse { selResp := &tipb.SelectResponse{ Error: toPBError(err), diff --git a/store/mockstore/mockcopr/executor_test.go b/store/mockstore/mockcopr/executor_test.go index af75c322e6fd6..3572c51b4e88c 100644 --- a/store/mockstore/mockcopr/executor_test.go +++ b/store/mockstore/mockcopr/executor_test.go @@ -19,6 +19,7 @@ import ( "testing" "github.com/pingcap/errors" + "github.com/pingcap/failpoint" "github.com/pingcap/kvproto/pkg/kvrpcpb" "github.com/pingcap/tidb/domain" "github.com/pingcap/tidb/kv" @@ -37,6 +38,12 @@ import ( // This test checks the resolve lock functionality. When a txn meets the lock of a large transaction, // it should not block by the lock. func TestResolvedLargeTxnLocks(t *testing.T) { + // This is required since mock tikv does not support paging. + failpoint.Enable("github.com/pingcap/tidb/store/copr/DisablePaging", `return`) + defer func() { + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/store/copr/DisablePaging")) + }() + rpcClient, cluster, pdClient, err := testutils.NewMockTiKV("", mockcopr.NewCoprRPCHandler()) require.NoError(t, err) diff --git a/store/mockstore/mockcopr/rpc_copr.go b/store/mockstore/mockcopr/rpc_copr.go index b883106240c8f..84ddd951d2040 100644 --- a/store/mockstore/mockcopr/rpc_copr.go +++ b/store/mockstore/mockcopr/rpc_copr.go @@ -43,6 +43,10 @@ func NewCoprRPCHandler() testutils.CoprRPCHandler { } } +func (mc *coprRPCHandler) HandleCopStream(ctx context.Context, reqCtx *kvrpcpb.Context, session *testutils.RPCSession, r *coprocessor.Request, timeout time.Duration) (*tikvrpc.CopStreamResponse, error) { + panic("CopStream API is deprecated") +} + func (mc *coprRPCHandler) HandleCmdCop(reqCtx *kvrpcpb.Context, session *testutils.RPCSession, r *coprocessor.Request) *coprocessor.Response { if err := session.CheckRequestContext(reqCtx); err != nil { return &coprocessor.Response{RegionError: err} @@ -89,37 +93,6 @@ func (mc *coprRPCHandler) HandleBatchCop(ctx context.Context, reqCtx *kvrpcpb.Co return batchResp, nil } -func (mc *coprRPCHandler) HandleCopStream(ctx context.Context, reqCtx *kvrpcpb.Context, session *testutils.RPCSession, r *coprocessor.Request, timeout time.Duration) (*tikvrpc.CopStreamResponse, error) { - if err := session.CheckRequestContext(reqCtx); err != nil { - return &tikvrpc.CopStreamResponse{ - Tikv_CoprocessorStreamClient: &mockCopStreamErrClient{Error: err}, - Response: &coprocessor.Response{ - RegionError: err, - }, - }, nil - } - ctx1, cancel := context.WithCancel(ctx) - copStream, err := coprHandler{session}.handleCopStream(ctx1, r) - if err != nil { - cancel() - return nil, errors.Trace(err) - } - - streamResp := &tikvrpc.CopStreamResponse{ - Tikv_CoprocessorStreamClient: copStream, - } - streamResp.Lease.Cancel = cancel - streamResp.Timeout = timeout - mc.streamTimeout <- &streamResp.Lease - - first, err := streamResp.Recv() - if err != nil { - return nil, errors.Trace(err) - } - streamResp.Response = first - return streamResp, nil -} - func (mc *coprRPCHandler) Close() { close(mc.done) } diff --git a/store/mockstore/mockstorage/BUILD.bazel b/store/mockstore/mockstorage/BUILD.bazel new file mode 100644 index 0000000000000..316301bb73242 --- /dev/null +++ b/store/mockstore/mockstorage/BUILD.bazel @@ -0,0 +1,16 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "mockstorage", + srcs = ["storage.go"], + importpath = "github.com/pingcap/tidb/store/mockstore/mockstorage", + visibility = ["//visibility:public"], + deps = [ + "//kv", + "//store/copr", + "//store/driver/txn", + "@com_github_pingcap_kvproto//pkg/deadlock", + "@com_github_tikv_client_go_v2//config", + "@com_github_tikv_client_go_v2//tikv", + ], +) diff --git a/store/mockstore/unistore/BUILD.bazel b/store/mockstore/unistore/BUILD.bazel new file mode 100644 index 0000000000000..f1536201753f7 --- /dev/null +++ b/store/mockstore/unistore/BUILD.bazel @@ -0,0 +1,56 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "unistore", + srcs = [ + "cluster.go", + "mock.go", + "pd.go", + "raw_handler.go", + "rpc.go", + "testutil.go", + ], + importpath = "github.com/pingcap/tidb/store/mockstore/unistore", + visibility = ["//visibility:public"], + deps = [ + "//parser/terror", + "//store/mockstore/unistore/config", + "//store/mockstore/unistore/lockstore", + "//store/mockstore/unistore/server", + "//store/mockstore/unistore/tikv", + "//tablecodec", + "//util/codec", + "//util/topsql/state", + "@com_github_golang_protobuf//proto", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_pingcap_kvproto//pkg/coprocessor", + "@com_github_pingcap_kvproto//pkg/debugpb", + "@com_github_pingcap_kvproto//pkg/errorpb", + "@com_github_pingcap_kvproto//pkg/kvrpcpb", + "@com_github_pingcap_kvproto//pkg/metapb", + "@com_github_pingcap_kvproto//pkg/mpp", + "@com_github_pingcap_kvproto//pkg/pdpb", + "@com_github_tikv_client_go_v2//testutils", + "@com_github_tikv_client_go_v2//tikvrpc", + "@com_github_tikv_pd_client//:client", + "@org_golang_google_grpc//metadata", + ], +) + +go_test( + name = "unistore_test", + srcs = [ + "main_test.go", + "pd_test.go", + "raw_handler_test.go", + ], + embed = [":unistore"], + deps = [ + "//testkit/testsetup", + "@com_github_pingcap_kvproto//pkg/kvrpcpb", + "@com_github_stretchr_testify//require", + "@com_github_tikv_pd_client//:client", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/store/mockstore/unistore/client/BUILD.bazel b/store/mockstore/unistore/client/BUILD.bazel new file mode 100644 index 0000000000000..d036f5eeb2ed3 --- /dev/null +++ b/store/mockstore/unistore/client/BUILD.bazel @@ -0,0 +1,9 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "client", + srcs = ["client.go"], + importpath = "github.com/pingcap/tidb/store/mockstore/unistore/client", + visibility = ["//visibility:public"], + deps = ["@com_github_tikv_client_go_v2//tikvrpc"], +) diff --git a/store/mockstore/unistore/config/BUILD.bazel b/store/mockstore/unistore/config/BUILD.bazel new file mode 100644 index 0000000000000..2f104d3fa0f9b --- /dev/null +++ b/store/mockstore/unistore/config/BUILD.bazel @@ -0,0 +1,12 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "config", + srcs = ["config.go"], + importpath = "github.com/pingcap/tidb/store/mockstore/unistore/config", + visibility = ["//visibility:public"], + deps = [ + "@com_github_pingcap_badger//options", + "@com_github_pingcap_log//:log", + ], +) diff --git a/store/mockstore/unistore/cophandler/BUILD.bazel b/store/mockstore/unistore/cophandler/BUILD.bazel new file mode 100644 index 0000000000000..3dc116dad55af --- /dev/null +++ b/store/mockstore/unistore/cophandler/BUILD.bazel @@ -0,0 +1,84 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "cophandler", + srcs = [ + "analyze.go", + "closure_exec.go", + "cop_handler.go", + "mpp.go", + "mpp_exec.go", + "topn.go", + ], + importpath = "github.com/pingcap/tidb/store/mockstore/unistore/cophandler", + visibility = ["//visibility:public"], + deps = [ + "//expression", + "//expression/aggregation", + "//kv", + "//parser/ast", + "//parser/charset", + "//parser/model", + "//parser/mysql", + "//parser/terror", + "//sessionctx", + "//sessionctx/stmtctx", + "//statistics", + "//store/mockstore/unistore/client", + "//store/mockstore/unistore/lockstore", + "//store/mockstore/unistore/tikv/dbreader", + "//store/mockstore/unistore/tikv/kverrors", + "//store/mockstore/unistore/tikv/mvcc", + "//tablecodec", + "//types", + "//util", + "//util/chunk", + "//util/codec", + "//util/collate", + "//util/mock", + "//util/rowcodec", + "//util/timeutil", + "@com_github_golang_protobuf//proto", + "@com_github_pingcap_badger//y", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_pingcap_kvproto//pkg/coprocessor", + "@com_github_pingcap_kvproto//pkg/kvrpcpb", + "@com_github_pingcap_kvproto//pkg/mpp", + "@com_github_pingcap_tipb//go-tipb", + "@com_github_tikv_client_go_v2//tikvrpc", + "@com_github_twmb_murmur3//:murmur3", + "@org_uber_go_atomic//:atomic", + ], +) + +go_test( + name = "cophandler_test", + srcs = [ + "cop_handler_test.go", + "main_test.go", + ], + embed = [":cophandler"], + deps = [ + "//expression", + "//kv", + "//parser/mysql", + "//sessionctx/stmtctx", + "//store/mockstore/unistore/lockstore", + "//store/mockstore/unistore/tikv/dbreader", + "//store/mockstore/unistore/tikv/mvcc", + "//tablecodec", + "//testkit/testsetup", + "//types", + "//util/codec", + "//util/collate", + "//util/rowcodec", + "@com_github_pingcap_badger//:badger", + "@com_github_pingcap_badger//y", + "@com_github_pingcap_kvproto//pkg/coprocessor", + "@com_github_pingcap_kvproto//pkg/kvrpcpb", + "@com_github_pingcap_tipb//go-tipb", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/store/mockstore/unistore/cophandler/cop_handler.go b/store/mockstore/unistore/cophandler/cop_handler.go index fd0e2b81ecf54..3351f01f71888 100644 --- a/store/mockstore/unistore/cophandler/cop_handler.go +++ b/store/mockstore/unistore/cophandler/cop_handler.go @@ -141,7 +141,7 @@ func handleCopDAGRequest(dbReader *dbreader.DBReader, lockStore *lockstore.MemSt return resp } - exec, chunks, counts, ndvs, err := buildAndRunMPPExecutor(dagCtx, dagReq) + exec, chunks, lastRange, counts, ndvs, err := buildAndRunMPPExecutor(dagCtx, dagReq, req.PagingSize) if err != nil { errMsg := err.Error() @@ -149,12 +149,12 @@ func handleCopDAGRequest(dbReader *dbreader.DBReader, lockStore *lockstore.MemSt resp.OtherError = err.Error() return resp } - return buildRespWithMPPExec(nil, nil, nil, exec, dagReq, err, dagCtx.sc.GetWarnings(), time.Since(startTime)) + return genRespWithMPPExec(nil, lastRange, nil, nil, exec, dagReq, err, dagCtx.sc.GetWarnings(), time.Since(startTime)) } - return buildRespWithMPPExec(chunks, counts, ndvs, exec, dagReq, err, dagCtx.sc.GetWarnings(), time.Since(startTime)) + return genRespWithMPPExec(chunks, lastRange, counts, ndvs, exec, dagReq, err, dagCtx.sc.GetWarnings(), time.Since(startTime)) } -func buildAndRunMPPExecutor(dagCtx *dagContext, dagReq *tipb.DAGRequest) (mppExec, []tipb.Chunk, []int64, []int64, error) { +func buildAndRunMPPExecutor(dagCtx *dagContext, dagReq *tipb.DAGRequest, pagingSize uint64) (mppExec, []tipb.Chunk, *coprocessor.KeyRange, []int64, []int64, error) { rootExec := dagReq.RootExecutor if rootExec == nil { rootExec = ExecutorListsToTree(dagReq.Executors) @@ -175,15 +175,24 @@ func buildAndRunMPPExecutor(dagCtx *dagContext, dagReq *tipb.DAGRequest) (mppExe counts: counts, ndvs: ndvs, } + var lastRange *coprocessor.KeyRange + if pagingSize > 0 { + lastRange = &coprocessor.KeyRange{} + builder.paging = lastRange + } exec, err := builder.buildMPPExecutor(rootExec) if err != nil { - return nil, nil, nil, nil, err + return nil, nil, nil, nil, nil, err + } + chunks, err := mppExecute(exec, dagCtx, dagReq, pagingSize) + if lastRange != nil && len(lastRange.Start) == 0 && len(lastRange.End) == 0 { + // When should this happen, something is wrong? + lastRange = nil } - chunks, err := mppExecute(exec, dagCtx, dagReq) - return exec, chunks, counts, ndvs, err + return exec, chunks, lastRange, counts, ndvs, err } -func mppExecute(exec mppExec, dagCtx *dagContext, dagReq *tipb.DAGRequest) (chunks []tipb.Chunk, err error) { +func mppExecute(exec mppExec, dagCtx *dagContext, dagReq *tipb.DAGRequest, pagingSize uint64) (chunks []tipb.Chunk, err error) { err = exec.open() defer func() { err := exec.stop() @@ -194,8 +203,8 @@ func mppExecute(exec mppExec, dagCtx *dagContext, dagReq *tipb.DAGRequest) (chun if err != nil { return } - var buf []byte - var datums []types.Datum + + var totalRows uint64 var chk *chunk.Chunk fields := exec.getFieldTypes() for { @@ -203,25 +212,72 @@ func mppExecute(exec mppExec, dagCtx *dagContext, dagReq *tipb.DAGRequest) (chun if err != nil || chk == nil || chk.NumRows() == 0 { return } - numRows := chk.NumRows() - for i := 0; i < numRows; i++ { - datums = datums[:0] - if dagReq.OutputOffsets != nil { - for _, j := range dagReq.OutputOffsets { - datums = append(datums, chk.GetRow(i).GetDatum(int(j), fields[j])) - } - } else { - for j, ft := range fields { - datums = append(datums, chk.GetRow(i).GetDatum(j, ft)) + + switch dagReq.EncodeType { + case tipb.EncodeType_TypeDefault: + chunks, err = useDefaultEncoding(chk, dagCtx, dagReq, fields, chunks) + case tipb.EncodeType_TypeChunk: + chunks = useChunkEncoding(chk, dagReq, fields, chunks) + if pagingSize > 0 { + totalRows += uint64(chk.NumRows()) + if totalRows > pagingSize { + break } } - buf, err = codec.EncodeValue(dagCtx.sc, buf[:0], datums...) - if err != nil { - return nil, errors.Trace(err) + default: + err = fmt.Errorf("unsupported DAG request encode type %s", dagReq.EncodeType) + } + if err != nil { + return + } + } +} + +func useDefaultEncoding(chk *chunk.Chunk, dagCtx *dagContext, dagReq *tipb.DAGRequest, + fields []*types.FieldType, chunks []tipb.Chunk) ([]tipb.Chunk, error) { + var buf []byte + var datums []types.Datum + var err error + numRows := chk.NumRows() + for i := 0; i < numRows; i++ { + datums = datums[:0] + if dagReq.OutputOffsets != nil { + for _, j := range dagReq.OutputOffsets { + datums = append(datums, chk.GetRow(i).GetDatum(int(j), fields[j])) + } + } else { + for j, ft := range fields { + datums = append(datums, chk.GetRow(i).GetDatum(j, ft)) } - chunks = appendRow(chunks, buf, i) } + buf, err = codec.EncodeValue(dagCtx.sc, buf[:0], datums...) + if err != nil { + return nil, errors.Trace(err) + } + chunks = appendRow(chunks, buf, i) + } + return chunks, nil +} + +func useChunkEncoding(chk *chunk.Chunk, dagReq *tipb.DAGRequest, fields []*types.FieldType, chunks []tipb.Chunk) []tipb.Chunk { + if dagReq.OutputOffsets != nil { + offsets := make([]int, len(dagReq.OutputOffsets)) + newFields := make([]*types.FieldType, len(dagReq.OutputOffsets)) + for i := 0; i < len(dagReq.OutputOffsets); i++ { + offset := dagReq.OutputOffsets[i] + offsets[i] = int(offset) + newFields[i] = fields[offset] + } + chk = chk.Prune(offsets) + fields = newFields } + + c := chunk.NewCodec(fields) + buffer := c.Encode(chk) + chunks = append(chunks, tipb.Chunk{ + RowsData: buffer, + }) + return chunks } func buildDAG(reader *dbreader.DBReader, lockStore *lockstore.MemStore, req *coprocessor.Request) (*dagContext, *tipb.DAGRequest, error) { @@ -238,7 +294,17 @@ func buildDAG(reader *dbreader.DBReader, lockStore *lockstore.MemStore, req *cop return nil, nil, errors.Trace(err) } sc := flagsToStatementContext(dagReq.Flags) - sc.TimeZone = time.FixedZone("UTC", int(dagReq.TimeZoneOffset)) + switch dagReq.TimeZoneName { + case "": + sc.TimeZone = time.FixedZone("UTC", int(dagReq.TimeZoneOffset)) + case "System": + sc.TimeZone = time.Local + default: + sc.TimeZone, err = time.LoadLocation(dagReq.TimeZoneName) + if err != nil { + return nil, nil, errors.Trace(err) + } + } ctx := &dagContext{ evalContext: &evalContext{sc: sc}, dbReader: reader, @@ -394,13 +460,16 @@ func (e *ErrLocked) Error() string { return fmt.Sprintf("key is locked, key: %q, Type: %v, primary: %q, startTS: %v", e.Key, e.LockType, e.Primary, e.StartTS) } -func buildRespWithMPPExec(chunks []tipb.Chunk, counts, ndvs []int64, exec mppExec, dagReq *tipb.DAGRequest, err error, warnings []stmtctx.SQLWarn, dur time.Duration) *coprocessor.Response { - resp := &coprocessor.Response{} +func genRespWithMPPExec(chunks []tipb.Chunk, lastRange *coprocessor.KeyRange, counts, ndvs []int64, exec mppExec, dagReq *tipb.DAGRequest, err error, warnings []stmtctx.SQLWarn, dur time.Duration) *coprocessor.Response { + resp := &coprocessor.Response{ + Range: lastRange, + } selResp := &tipb.SelectResponse{ Error: toPBError(err), Chunks: chunks, OutputCounts: counts, Ndvs: ndvs, + EncodeType: dagReq.EncodeType, } executors := dagReq.Executors if dagReq.CollectExecutionSummaries != nil && *dagReq.CollectExecutionSummaries { diff --git a/store/mockstore/unistore/cophandler/cop_handler_test.go b/store/mockstore/unistore/cophandler/cop_handler_test.go index 1408a8c83fe4f..127b233b98a82 100644 --- a/store/mockstore/unistore/cophandler/cop_handler_test.go +++ b/store/mockstore/unistore/cophandler/cop_handler_test.go @@ -410,7 +410,7 @@ func TestMppExecutor(t *testing.T) { dagCtx := newDagContext(store, []kv.KeyRange{getTestPointRange(tableID, 1)}, dagRequest, dagRequestStartTs) - _, _, rowCount, _, err := buildAndRunMPPExecutor(dagCtx, dagRequest) + _, _, _, rowCount, _, err := buildAndRunMPPExecutor(dagCtx, dagRequest, 0) require.Equal(t, rowCount[0], int64(1)) require.NoError(t, err) } @@ -614,7 +614,7 @@ func BenchmarkExecutors(b *testing.B) { // }) b.Run(fmt.Sprintf("(row=%d, limit=%d)", row, lim), func(b *testing.B) { for i := 0; i < b.N; i++ { - _, _, _, _, err := buildAndRunMPPExecutor(dagCtx, dagReq) + _, _, _, _, _, err := buildAndRunMPPExecutor(dagCtx, dagReq, 0) if err != nil { b.Fatal(err) } diff --git a/store/mockstore/unistore/cophandler/mpp.go b/store/mockstore/unistore/cophandler/mpp.go index 8b25a5e1c0974..fb9cfeaf1aff1 100644 --- a/store/mockstore/unistore/cophandler/mpp.go +++ b/store/mockstore/unistore/cophandler/mpp.go @@ -58,6 +58,7 @@ type mppExecBuilder struct { dagCtx *dagContext counts []int64 ndvs []int64 + paging *coprocessor.KeyRange } func (b *mppExecBuilder) buildMPPTableScan(pb *tipb.TableScan) (*tableScanExec, error) { @@ -73,6 +74,7 @@ func (b *mppExecBuilder) buildMPPTableScan(pb *tipb.TableScan) (*tableScanExec, counts: b.counts, ndvs: b.ndvs, desc: pb.Desc, + paging: b.paging, } if b.dagCtx != nil { ts.lockStore = b.dagCtx.lockStore @@ -180,6 +182,7 @@ func (b *mppExecBuilder) buildIdxScan(pb *tipb.IndexScan) (*indexScanExec, error hdlStatus: hdlStatus, desc: pb.Desc, physTblIDColIdx: physTblIDColIdx, + paging: b.paging, } return idxScan, nil } diff --git a/store/mockstore/unistore/cophandler/mpp_exec.go b/store/mockstore/unistore/cophandler/mpp_exec.go index 724cf42b90ec1..8e079991c7daa 100644 --- a/store/mockstore/unistore/cophandler/mpp_exec.go +++ b/store/mockstore/unistore/cophandler/mpp_exec.go @@ -24,6 +24,7 @@ import ( "time" "github.com/pingcap/errors" + "github.com/pingcap/kvproto/pkg/coprocessor" "github.com/pingcap/kvproto/pkg/kvrpcpb" "github.com/pingcap/kvproto/pkg/mpp" "github.com/pingcap/tidb/expression" @@ -100,8 +101,9 @@ func (b *baseMPPExec) stop() error { } type scanResult struct { - chk *chunk.Chunk - err error + chk *chunk.Chunk + lastProcessedKey kv.Key + err error } type tableScanExec struct { @@ -126,6 +128,8 @@ type tableScanExec struct { // if ExtraPhysTblIDCol is requested, fill in the physical table id in this column position physTblIDColIdx *int + // This is used to update the paging range result, updated in next(). + paging *coprocessor.KeyRange } func (e *tableScanExec) SkipValue() bool { return false } @@ -147,8 +151,9 @@ func (e *tableScanExec) Process(key, value []byte) error { e.rowCnt++ if e.chk.IsFull() { + lastProcessed := kv.Key(append([]byte{}, key...)) // make a copy to avoid data race select { - case e.result <- scanResult{chk: e.chk, err: nil}: + case e.result <- scanResult{chk: e.chk, lastProcessedKey: lastProcessed, err: nil}: e.chk = chunk.NewChunkWithCapacity(e.fieldTypes, DefaultBatchSize) case <-e.done: return dbreader.ErrScanBreak @@ -178,7 +183,9 @@ func (e *tableScanExec) open() error { e.wg.Run(func() { // close the channel when done scanning, so that next() will got nil chunk defer close(e.result) - for i, ran := range e.kvRanges { + var i int + var ran kv.KeyRange + for i, ran = range e.kvRanges { oldCnt := e.rowCnt if e.desc { err = e.dbReader.ReverseScan(ran.StartKey, ran.EndKey, math.MaxInt64, e.startTS, e) @@ -211,6 +218,23 @@ func (e *tableScanExec) open() error { func (e *tableScanExec) next() (*chunk.Chunk, error) { result := <-e.result + // Update the range for coprocessor paging protocol. + if e.paging != nil && result.err == nil { + if e.desc { + if result.lastProcessedKey != nil { + *e.paging = coprocessor.KeyRange{Start: result.lastProcessedKey} + } else { + *e.paging = coprocessor.KeyRange{Start: e.kvRanges[len(e.kvRanges)-1].StartKey} + } + } else { + if result.lastProcessedKey != nil { + *e.paging = coprocessor.KeyRange{End: result.lastProcessedKey.Next()} + } else { + *e.paging = coprocessor.KeyRange{End: e.kvRanges[len(e.kvRanges)-1].EndKey} + } + } + } + if result.chk == nil || result.err != nil { return nil, result.err } @@ -251,6 +275,9 @@ type indexScanExec struct { // if ExtraPhysTblIDCol is requested, fill in the physical table id in this column position physTblIDColIdx *int + // This is used to update the paging range result, updated in next(). + paging *coprocessor.KeyRange + chunkLastProcessedKeys []kv.Key } func (e *indexScanExec) SkipValue() bool { return false } @@ -291,6 +318,9 @@ func (e *indexScanExec) Process(key, value []byte) error { } if e.chk.IsFull() { e.chunks = append(e.chunks, e.chk) + if e.paging != nil { + e.chunkLastProcessedKeys = append(e.chunkLastProcessedKeys, key) + } e.chk = chunk.NewChunkWithCapacity(e.fieldTypes, DefaultBatchSize) } return nil @@ -331,8 +361,31 @@ func (e *indexScanExec) next() (*chunk.Chunk, error) { if e.chkIdx < len(e.chunks) { e.chkIdx += 1 e.execSummary.updateOnlyRows(e.chunks[e.chkIdx-1].NumRows()) + if e.paging != nil { + if e.desc { + if e.chkIdx == len(e.chunks) { + *e.paging = coprocessor.KeyRange{Start: e.kvRanges[len(e.kvRanges)-1].StartKey} + } else { + *e.paging = coprocessor.KeyRange{Start: e.chunkLastProcessedKeys[e.chkIdx-1]} + } + } else { + if e.chkIdx == len(e.chunks) { + *e.paging = coprocessor.KeyRange{End: e.kvRanges[len(e.kvRanges)-1].EndKey} + } else { + *e.paging = coprocessor.KeyRange{End: e.chunkLastProcessedKeys[e.chkIdx-1].Next()} + } + } + } return e.chunks[e.chkIdx-1], nil } + + if e.paging != nil { + if e.desc { + *e.paging = coprocessor.KeyRange{Start: e.kvRanges[len(e.kvRanges)-1].StartKey} + } else { + *e.paging = coprocessor.KeyRange{End: e.kvRanges[len(e.kvRanges)-1].EndKey} + } + } return nil, nil } diff --git a/store/mockstore/unistore/lockstore/BUILD.bazel b/store/mockstore/unistore/lockstore/BUILD.bazel new file mode 100644 index 0000000000000..8fa2e907d2d77 --- /dev/null +++ b/store/mockstore/unistore/lockstore/BUILD.bazel @@ -0,0 +1,32 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "lockstore", + srcs = [ + "arena.go", + "iterator.go", + "load_dump.go", + "lockstore.go", + ], + importpath = "github.com/pingcap/tidb/store/mockstore/unistore/lockstore", + visibility = ["//visibility:public"], + deps = [ + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_log//:log", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "lockstore_test", + srcs = [ + "lockstore_test.go", + "main_test.go", + ], + embed = [":lockstore"], + deps = [ + "//testkit/testsetup", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/store/mockstore/unistore/metrics/BUILD.bazel b/store/mockstore/unistore/metrics/BUILD.bazel new file mode 100644 index 0000000000000..6bc783d0ce4b3 --- /dev/null +++ b/store/mockstore/unistore/metrics/BUILD.bazel @@ -0,0 +1,9 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "metrics", + srcs = ["metrics.go"], + importpath = "github.com/pingcap/tidb/store/mockstore/unistore/metrics", + visibility = ["//visibility:public"], + deps = ["@com_github_prometheus_client_golang//prometheus"], +) diff --git a/store/mockstore/unistore/metrics/metrics.go b/store/mockstore/unistore/metrics/metrics.go index a94f938b77cc7..7c4d9497ab1a2 100644 --- a/store/mockstore/unistore/metrics/metrics.go +++ b/store/mockstore/unistore/metrics/metrics.go @@ -15,10 +15,7 @@ package metrics import ( - "net/http" - "github.com/prometheus/client_golang/prometheus" - "github.com/prometheus/client_golang/prometheus/promhttp" ) const ( @@ -101,7 +98,8 @@ var ( }) ) -func init() { +// RegisterMetrics register the metrics related to unistore. +func RegisterMetrics() { prometheus.MustRegister(RaftWriterWait) prometheus.MustRegister(WriteWaiteStepOne) prometheus.MustRegister(WriteWaiteStepTwo) @@ -112,5 +110,4 @@ func init() { prometheus.MustRegister(LockUpdate) prometheus.MustRegister(RaftBatchSize) prometheus.MustRegister(LatchWait) - http.Handle("/metrics", promhttp.Handler()) } diff --git a/store/mockstore/unistore/pd/BUILD.bazel b/store/mockstore/unistore/pd/BUILD.bazel new file mode 100644 index 0000000000000..e57867b014e47 --- /dev/null +++ b/store/mockstore/unistore/pd/BUILD.bazel @@ -0,0 +1,17 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "pd", + srcs = ["client.go"], + importpath = "github.com/pingcap/tidb/store/mockstore/unistore/pd", + visibility = ["//visibility:public"], + deps = [ + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_kvproto//pkg/metapb", + "@com_github_pingcap_kvproto//pkg/pdpb", + "@com_github_pingcap_log//:log", + "@com_github_tikv_pd_client//:client", + "@org_golang_google_grpc//:grpc", + "@org_uber_go_zap//:zap", + ], +) diff --git a/store/mockstore/unistore/server/BUILD.bazel b/store/mockstore/unistore/server/BUILD.bazel new file mode 100644 index 0000000000000..63326b48e9afe --- /dev/null +++ b/store/mockstore/unistore/server/BUILD.bazel @@ -0,0 +1,18 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "server", + srcs = ["server.go"], + importpath = "github.com/pingcap/tidb/store/mockstore/unistore/server", + visibility = ["//visibility:public"], + deps = [ + "//store/mockstore/unistore/config", + "//store/mockstore/unistore/lockstore", + "//store/mockstore/unistore/pd", + "//store/mockstore/unistore/tikv", + "//store/mockstore/unistore/tikv/mvcc", + "@com_github_pingcap_badger//:badger", + "@com_github_pingcap_badger//options", + "@com_github_pingcap_errors//:errors", + ], +) diff --git a/store/mockstore/unistore/tikv/BUILD.bazel b/store/mockstore/unistore/tikv/BUILD.bazel new file mode 100644 index 0000000000000..926fd045d44f9 --- /dev/null +++ b/store/mockstore/unistore/tikv/BUILD.bazel @@ -0,0 +1,86 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "tikv", + srcs = [ + "deadlock.go", + "detector.go", + "inner_server.go", + "mock_region.go", + "mvcc.go", + "region.go", + "server.go", + "server_batch.go", + "util.go", + "write.go", + ], + importpath = "github.com/pingcap/tidb/store/mockstore/unistore/tikv", + visibility = ["//visibility:public"], + deps = [ + "//kv", + "//sessionctx/stmtctx", + "//store/mockstore/unistore/client", + "//store/mockstore/unistore/config", + "//store/mockstore/unistore/cophandler", + "//store/mockstore/unistore/lockstore", + "//store/mockstore/unistore/metrics", + "//store/mockstore/unistore/pd", + "//store/mockstore/unistore/tikv/dbreader", + "//store/mockstore/unistore/tikv/kverrors", + "//store/mockstore/unistore/tikv/mvcc", + "//store/mockstore/unistore/tikv/pberror", + "//store/mockstore/unistore/util/lockwaiter", + "//tablecodec", + "//types", + "//util/codec", + "//util/mathutil", + "//util/rowcodec", + "@com_github_dgryski_go_farm//:go-farm", + "@com_github_gogo_protobuf//proto", + "@com_github_google_btree//:btree", + "@com_github_pingcap_badger//:badger", + "@com_github_pingcap_badger//y", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_kvproto//pkg/coprocessor", + "@com_github_pingcap_kvproto//pkg/deadlock", + "@com_github_pingcap_kvproto//pkg/errorpb", + "@com_github_pingcap_kvproto//pkg/kvrpcpb", + "@com_github_pingcap_kvproto//pkg/metapb", + "@com_github_pingcap_kvproto//pkg/mpp", + "@com_github_pingcap_kvproto//pkg/pdpb", + "@com_github_pingcap_kvproto//pkg/tikvpb", + "@com_github_pingcap_log//:log", + "@com_github_pingcap_tipb//go-tipb", + "@com_github_tikv_client_go_v2//oracle", + "@com_github_tikv_pd_client//:client", + "@org_golang_google_grpc//:grpc", + "@org_golang_x_exp//slices", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "tikv_test", + srcs = [ + "detector_test.go", + "main_test.go", + "mvcc_test.go", + ], + embed = [":tikv"], + deps = [ + "//store/mockstore/unistore/config", + "//store/mockstore/unistore/lockstore", + "//store/mockstore/unistore/tikv/kverrors", + "//store/mockstore/unistore/tikv/mvcc", + "//store/mockstore/unistore/util/lockwaiter", + "//testkit/testsetup", + "@com_github_pingcap_badger//:badger", + "@com_github_pingcap_badger//y", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_kvproto//pkg/deadlock", + "@com_github_pingcap_kvproto//pkg/kvrpcpb", + "@com_github_pingcap_kvproto//pkg/metapb", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/store/mockstore/unistore/tikv/dbreader/BUILD.bazel b/store/mockstore/unistore/tikv/dbreader/BUILD.bazel new file mode 100644 index 0000000000000..ef608d64f4331 --- /dev/null +++ b/store/mockstore/unistore/tikv/dbreader/BUILD.bazel @@ -0,0 +1,16 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "dbreader", + srcs = ["db_reader.go"], + importpath = "github.com/pingcap/tidb/store/mockstore/unistore/tikv/dbreader", + visibility = ["//visibility:public"], + deps = [ + "//store/mockstore/unistore/tikv/kverrors", + "//store/mockstore/unistore/tikv/mvcc", + "@com_github_pingcap_badger//:badger", + "@com_github_pingcap_badger//y", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_kvproto//pkg/kvrpcpb", + ], +) diff --git a/store/mockstore/unistore/tikv/kverrors/BUILD.bazel b/store/mockstore/unistore/tikv/kverrors/BUILD.bazel new file mode 100644 index 0000000000000..bcec46e225a9b --- /dev/null +++ b/store/mockstore/unistore/tikv/kverrors/BUILD.bazel @@ -0,0 +1,13 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "kverrors", + srcs = ["errors.go"], + importpath = "github.com/pingcap/tidb/store/mockstore/unistore/tikv/kverrors", + visibility = ["//visibility:public"], + deps = [ + "//store/mockstore/unistore/tikv/mvcc", + "@com_github_pingcap_kvproto//pkg/deadlock", + "@com_github_pingcap_kvproto//pkg/kvrpcpb", + ], +) diff --git a/store/mockstore/unistore/tikv/mvcc/BUILD.bazel b/store/mockstore/unistore/tikv/mvcc/BUILD.bazel new file mode 100644 index 0000000000000..080afaf5bf4fd --- /dev/null +++ b/store/mockstore/unistore/tikv/mvcc/BUILD.bazel @@ -0,0 +1,20 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "mvcc", + srcs = [ + "db_writer.go", + "mvcc.go", + "tikv.go", + ], + importpath = "github.com/pingcap/tidb/store/mockstore/unistore/tikv/mvcc", + visibility = ["//visibility:public"], + deps = [ + "//store/mockstore/unistore/lockstore", + "//util/codec", + "@com_github_pingcap_badger//:badger", + "@com_github_pingcap_badger//y", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_kvproto//pkg/kvrpcpb", + ], +) diff --git a/store/mockstore/unistore/tikv/pberror/BUILD.bazel b/store/mockstore/unistore/tikv/pberror/BUILD.bazel new file mode 100644 index 0000000000000..b2508521dc295 --- /dev/null +++ b/store/mockstore/unistore/tikv/pberror/BUILD.bazel @@ -0,0 +1,9 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "pberror", + srcs = ["pberror.go"], + importpath = "github.com/pingcap/tidb/store/mockstore/unistore/tikv/pberror", + visibility = ["//visibility:public"], + deps = ["@com_github_pingcap_kvproto//pkg/errorpb"], +) diff --git a/store/mockstore/unistore/util/lockwaiter/BUILD.bazel b/store/mockstore/unistore/util/lockwaiter/BUILD.bazel new file mode 100644 index 0000000000000..dd2dbcfbb8038 --- /dev/null +++ b/store/mockstore/unistore/util/lockwaiter/BUILD.bazel @@ -0,0 +1,31 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "lockwaiter", + srcs = ["lockwaiter.go"], + importpath = "github.com/pingcap/tidb/store/mockstore/unistore/util/lockwaiter", + visibility = ["//visibility:public"], + deps = [ + "//store/mockstore/unistore/config", + "@com_github_pingcap_kvproto//pkg/deadlock", + "@com_github_pingcap_log//:log", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "lockwaiter_test", + srcs = [ + "lockwaiter_test.go", + "main_test.go", + ], + embed = [":lockwaiter"], + deps = [ + "//store/mockstore/unistore/config", + "//testkit/testsetup", + "@com_github_pingcap_kvproto//pkg/deadlock", + "@com_github_pingcap_log//:log", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/store/pdtypes/BUILD.bazel b/store/pdtypes/BUILD.bazel new file mode 100644 index 0000000000000..fe59445be494a --- /dev/null +++ b/store/pdtypes/BUILD.bazel @@ -0,0 +1,21 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "pdtypes", + srcs = [ + "api.go", + "config.go", + "placement.go", + "region_tree.go", + "statistics.go", + "typeutil.go", + ], + importpath = "github.com/pingcap/tidb/store/pdtypes", + visibility = ["//visibility:public"], + deps = [ + "@com_github_docker_go_units//:go-units", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_kvproto//pkg/metapb", + "@com_github_pingcap_kvproto//pkg/pdpb", + ], +) diff --git a/structure/BUILD.bazel b/structure/BUILD.bazel new file mode 100644 index 0000000000000..49c3ef4c43053 --- /dev/null +++ b/structure/BUILD.bazel @@ -0,0 +1,39 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "structure", + srcs = [ + "hash.go", + "list.go", + "string.go", + "structure.go", + "type.go", + ], + importpath = "github.com/pingcap/tidb/structure", + visibility = ["//visibility:public"], + deps = [ + "//errno", + "//kv", + "//util/codec", + "//util/dbterror", + "@com_github_pingcap_errors//:errors", + ], +) + +go_test( + name = "structure_test", + srcs = [ + "main_test.go", + "structure_test.go", + ], + embed = [":structure"], + deps = [ + "//kv", + "//parser/mysql", + "//parser/terror", + "//testkit", + "//testkit/testsetup", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/table/BUILD.bazel b/table/BUILD.bazel new file mode 100644 index 0000000000000..e5ad2bb8c1b12 --- /dev/null +++ b/table/BUILD.bazel @@ -0,0 +1,66 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "table", + srcs = [ + "column.go", + "index.go", + "table.go", + ], + importpath = "github.com/pingcap/tidb/table", + visibility = ["//visibility:public"], + deps = [ + "//errno", + "//expression", + "//kv", + "//meta/autoid", + "//parser", + "//parser/ast", + "//parser/charset", + "//parser/model", + "//parser/mysql", + "//parser/types", + "//sessionctx", + "//sessionctx/stmtctx", + "//types", + "//types/json", + "//util/dbterror", + "//util/hack", + "//util/logutil", + "//util/sqlexec", + "//util/timeutil", + "@com_github_opentracing_opentracing_go//:opentracing-go", + "@com_github_pingcap_errors//:errors", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "table_test", + srcs = [ + "column_test.go", + "main_test.go", + "table_test.go", + ], + embed = [":table"], + flaky = True, + shard_count = 50, + deps = [ + "//errno", + "//expression", + "//parser/ast", + "//parser/charset", + "//parser/model", + "//parser/mysql", + "//parser/terror", + "//sessionctx", + "//sessionctx/stmtctx", + "//testkit/testsetup", + "//types", + "//types/json", + "//util/collate", + "//util/mock", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/table/column.go b/table/column.go index 91246fac9b8f0..988835cbe1d8b 100644 --- a/table/column.go +++ b/table/column.go @@ -577,27 +577,35 @@ func getColDefaultValue(ctx sessionctx.Context, col *model.ColumnInfo, defaultVa } func getColDefaultValueFromNil(ctx sessionctx.Context, col *model.ColumnInfo) (types.Datum, error) { - if !mysql.HasNotNullFlag(col.GetFlag()) { + if !mysql.HasNotNullFlag(col.GetFlag()) && !mysql.HasNoDefaultValueFlag(col.GetFlag()) { return types.Datum{}, nil } if col.GetType() == mysql.TypeEnum { // For enum type, if no default value and not null is set, // the default value is the first element of the enum list - defEnum, err := types.ParseEnumValue(col.FieldType.GetElems(), 1) - if err != nil { - return types.Datum{}, err + if mysql.HasNotNullFlag(col.GetFlag()) { + defEnum, err := types.ParseEnumValue(col.FieldType.GetElems(), 1) + if err != nil { + return types.Datum{}, err + } + return types.NewCollateMysqlEnumDatum(defEnum, col.GetCollate()), nil } - return types.NewCollateMysqlEnumDatum(defEnum, col.GetCollate()), nil + return types.Datum{}, nil } - if mysql.HasAutoIncrementFlag(col.GetFlag()) { - // Auto increment column doesn't has default value and we should not return error. + if mysql.HasAutoIncrementFlag(col.GetFlag()) && !mysql.HasNoDefaultValueFlag(col.GetFlag()) { + // Auto increment column doesn't have default value and we should not return error. return GetZeroValue(col), nil } vars := ctx.GetSessionVars() sc := vars.StmtCtx if !vars.StrictSQLMode { sc.AppendWarning(ErrNoDefaultValue.FastGenByArgs(col.Name)) - return GetZeroValue(col), nil + if mysql.HasNotNullFlag(col.GetFlag()) { + return GetZeroValue(col), nil + } + if mysql.HasNoDefaultValueFlag(col.GetFlag()) { + return types.Datum{}, nil + } } if sc.BadNullAsWarning { sc.AppendWarning(ErrColumnCantNull.FastGenByArgs(col.Name)) diff --git a/table/tables/BUILD.bazel b/table/tables/BUILD.bazel new file mode 100644 index 0000000000000..87a7fe63ad1b2 --- /dev/null +++ b/table/tables/BUILD.bazel @@ -0,0 +1,116 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "tables", + srcs = [ + "cache.go", + "index.go", + "mutation_checker.go", + "partition.go", + "state_remote.go", + "tables.go", + ], + importpath = "github.com/pingcap/tidb/table/tables", + visibility = ["//visibility:public"], + deps = [ + "//errno", + "//expression", + "//kv", + "//meta", + "//meta/autoid", + "//metrics", + "//parser", + "//parser/ast", + "//parser/model", + "//parser/mysql", + "//parser/terror", + "//sessionctx", + "//sessionctx/binloginfo", + "//sessionctx/stmtctx", + "//sessionctx/variable", + "//statistics", + "//table", + "//tablecodec", + "//types", + "//util", + "//util/chunk", + "//util/codec", + "//util/collate", + "//util/dbterror", + "//util/generatedexpr", + "//util/hack", + "//util/logutil", + "//util/mock", + "//util/ranger", + "//util/rowcodec", + "//util/sqlexec", + "//util/stringutil", + "//util/tableutil", + "@com_github_google_btree//:btree", + "@com_github_opentracing_opentracing_go//:opentracing-go", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_pingcap_log//:log", + "@com_github_pingcap_tipb//go-binlog", + "@com_github_pingcap_tipb//go-tipb", + "@com_github_tikv_client_go_v2//oracle", + "@com_github_tikv_client_go_v2//tikv", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "tables_test", + srcs = [ + "cache_test.go", + "index_test.go", + "main_test.go", + "mutation_checker_test.go", + "partition_test.go", + "state_remote_test.go", + "tables_test.go", + ], + embed = [":tables"], + flaky = True, + shard_count = 10, + deps = [ + "//ddl", + "//domain", + "//errno", + "//infoschema", + "//kv", + "//meta/autoid", + "//metrics", + "//parser", + "//parser/ast", + "//parser/auth", + "//parser/model", + "//parser/mysql", + "//session", + "//sessionctx", + "//sessionctx/binloginfo", + "//sessionctx/stmtctx", + "//sessionctx/variable", + "//sessiontxn", + "//table", + "//tablecodec", + "//testkit", + "//testkit/testsetup", + "//types", + "//util", + "//util/codec", + "//util/collate", + "//util/dbterror", + "//util/mock", + "//util/rowcodec", + "//util/stmtsummary", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_pingcap_tipb//go-binlog", + "@com_github_prometheus_client_model//go", + "@com_github_stretchr_testify//require", + "@com_github_tikv_client_go_v2//oracle", + "@org_golang_google_grpc//:grpc", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/table/tables/mutation_checker.go b/table/tables/mutation_checker.go index 3b37d8a99114d..72fb297cf820d 100644 --- a/table/tables/mutation_checker.go +++ b/table/tables/mutation_checker.go @@ -15,7 +15,11 @@ package tables import ( + "fmt" + "strings" + "github.com/pingcap/errors" + "github.com/pingcap/failpoint" "github.com/pingcap/tidb/errno" "github.com/pingcap/tidb/kv" "github.com/pingcap/tidb/parser/model" @@ -384,3 +388,93 @@ func getOrBuildColumnMaps( } return maps } + +// only used in tests +// commands is a comma separated string, each representing a type of corruptions to the mutations +// The injection depends on actual encoding rules. +func corruptMutations(t *TableCommon, txn kv.Transaction, sh kv.StagingHandle, cmds string) error { + commands := strings.Split(cmds, ",") + memBuffer := txn.GetMemBuffer() + + indexMutations, _, err := collectTableMutationsFromBufferStage(t, memBuffer, sh) + if err != nil { + return errors.Trace(err) + } + + for _, cmd := range commands { + switch cmd { + case "extraIndex": + // an extra index mutation + { + if len(indexMutations) == 0 { + continue + } + indexMutation := indexMutations[0] + key := make([]byte, len(indexMutation.key)) + copy(key, indexMutation.key) + key[len(key)-1] += 1 + if len(indexMutation.value) == 0 { + if err := memBuffer.Delete(key); err != nil { + return errors.Trace(err) + } + } else { + if err := memBuffer.Set(key, indexMutation.value); err != nil { + return errors.Trace(err) + } + } + } + case "missingIndex": + // an index mutation is missing + // "missIndex" should be placed in front of "extraIndex"es, + // in case it removes the mutation that was just added + { + indexMutation := indexMutations[0] + memBuffer.RemoveFromBuffer(indexMutation.key) + } + case "corruptIndexKey": + // a corrupted index mutation. + // TODO: distinguish which part is corrupted, value or handle + { + indexMutation := indexMutations[0] + key := indexMutation.key + memBuffer.RemoveFromBuffer(key) + key[len(key)-1] += 1 + if len(indexMutation.value) == 0 { + if err := memBuffer.Delete(key); err != nil { + return errors.Trace(err) + } + } else { + if err := memBuffer.Set(key, indexMutation.value); err != nil { + return errors.Trace(err) + } + } + } + case "corruptIndexValue": + // TODO: distinguish which part to corrupt, int handle, common handle, or restored data? + // It doesn't make much sense to always corrupt the last byte + { + if len(indexMutations) == 0 { + continue + } + indexMutation := indexMutations[0] + value := indexMutation.value + if len(value) > 0 { + value[len(value)-1] += 1 + if err := memBuffer.Set(indexMutation.key, value); err != nil { + return errors.Trace(err) + } + } + } + default: + return errors.New(fmt.Sprintf("unknown command to corrupt mutation: %s", cmd)) + } + } + return nil +} + +func injectMutationError(t *TableCommon, txn kv.Transaction, sh kv.StagingHandle) error { + failpoint.Inject("corruptMutations", func(commands failpoint.Value) { + failpoint.Return(corruptMutations(t, txn, sh, commands.(string))) + }) + return nil +} diff --git a/table/tables/tables.go b/table/tables/tables.go index fe8c4f4a513ad..aab32e1f18d8f 100644 --- a/table/tables/tables.go +++ b/table/tables/tables.go @@ -446,11 +446,15 @@ func (t *TableCommon) UpdateRecord(ctx context.Context, sctx sessionctx.Context, return err } + if err = injectMutationError(t, txn, sh); err != nil { + return err + } if sessVars.EnableMutationChecker { if err = CheckDataConsistency(txn, sessVars, t, newData, oldData, memBuffer, sh); err != nil { return errors.Trace(err) } } + memBuffer.Release(sh) if shouldWriteBinlog(sctx, t.meta) { if !t.meta.PKIsHandle && !t.meta.IsCommonHandle { @@ -886,6 +890,9 @@ func (t *TableCommon) AddRecord(sctx sessionctx.Context, r []types.Datum, opts . return h, err } + if err = injectMutationError(t, txn, sh); err != nil { + return nil, err + } if sessVars.EnableMutationChecker { if err = CheckDataConsistency(txn, sessVars, t, r, nil, memBuffer, sh); err != nil { return nil, errors.Trace(err) @@ -1146,6 +1153,9 @@ func (t *TableCommon) RemoveRecord(ctx sessionctx.Context, h kv.Handle, r []type sessVars := ctx.GetSessionVars() sc := sessVars.StmtCtx + if err = injectMutationError(t, txn, sh); err != nil { + return err + } if sessVars.EnableMutationChecker { if err = CheckDataConsistency(txn, sessVars, t, nil, r, memBuffer, sh); err != nil { return errors.Trace(err) @@ -1446,9 +1456,6 @@ func GetColDefaultValue(ctx sessionctx.Context, col *table.Column, defaultVals [ if col.GetOriginDefaultValue() == nil && mysql.HasNotNullFlag(col.GetFlag()) { return colVal, errors.New("Miss column") } - if col.State != model.StatePublic { - return colVal, nil - } if defaultVals[col.Offset].IsNull() { colVal, err = table.GetColOriginDefaultValue(ctx, col.ToInfo()) if err != nil { @@ -1556,6 +1563,11 @@ func (t *TableCommon) Type() table.Type { } func shouldWriteBinlog(ctx sessionctx.Context, tblInfo *model.TableInfo) bool { + failpoint.Inject("forceWriteBinlog", func() { + // Just to cover binlog related code in this package, since the `BinlogClient` is + // still nil, mutations won't be written to pump on commit. + failpoint.Return(true) + }) if ctx.GetSessionVars().BinlogClient == nil { return false } diff --git a/table/tables/tables_test.go b/table/tables/tables_test.go index dfd38db8d8bce..2711d22f8407c 100644 --- a/table/tables/tables_test.go +++ b/table/tables/tables_test.go @@ -18,7 +18,6 @@ import ( "context" "fmt" "math" - "math/rand" "strconv" "testing" "time" @@ -957,17 +956,3 @@ func TestTxnAssertion(t *testing.T) { testUntouchedIndexImpl("OFF", false) testUntouchedIndexImpl("OFF", true) } - -func TestReuseColumnMapsInMutationChecker(t *testing.T) { - store, clean := testkit.CreateMockStore(t) - defer clean() - tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") - tk.MustExec("create table t (a int, b int, c int, primary key(a))") - tk.MustExec("create table t_2 (a int, b int, c int, primary key(a))") - for i := 0; i < 1000; i++ { - tk.MustExec(fmt.Sprintf("insert into t values(%d, %d, %d)", i, rand.Int()%10000, rand.Int()%10000)) - } - tk.MustExec("set @@tidb_enable_mutation_checker=1") - tk.MustExec("insert into t_2 select * from t") -} diff --git a/table/temptable/BUILD.bazel b/table/temptable/BUILD.bazel new file mode 100644 index 0000000000000..262c3d05977e0 --- /dev/null +++ b/table/temptable/BUILD.bazel @@ -0,0 +1,57 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "temptable", + srcs = [ + "ddl.go", + "infoschema.go", + "interceptor.go", + ], + importpath = "github.com/pingcap/tidb/table/temptable", + visibility = ["//visibility:public"], + deps = [ + "//infoschema", + "//kv", + "//meta", + "//meta/autoid", + "//parser/ast", + "//parser/model", + "//sessionctx", + "//sessionctx/variable", + "//store/driver/txn", + "//table", + "//table/tables", + "//tablecodec", + "@com_github_pingcap_errors//:errors", + "@com_github_tikv_client_go_v2//tikv", + "@org_golang_x_exp//maps", + ], +) + +go_test( + name = "temptable_test", + srcs = [ + "ddl_test.go", + "interceptor_test.go", + "main_test.go", + ], + embed = [":temptable"], + deps = [ + "//infoschema", + "//kv", + "//parser/model", + "//parser/mysql", + "//sessionctx", + "//store/driver/txn", + "//store/mockstore", + "//table", + "//tablecodec", + "//testkit/testsetup", + "//types", + "//util/codec", + "//util/mock", + "@com_github_pingcap_errors//:errors", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/table/temptable/ddl_test.go b/table/temptable/ddl_test.go index 1418a35ad83d1..e08343c1177a6 100644 --- a/table/temptable/ddl_test.go +++ b/table/temptable/ddl_test.go @@ -164,7 +164,7 @@ func TestTruncateLocalTemporaryTable(t *testing.T) { // truncate when empty err := ddl.TruncateLocalTemporaryTable(model.NewCIStr("db1"), model.NewCIStr("t1")) require.True(t, infoschema.ErrTableNotExists.Equal(err)) - require.Nil(t, sessVars.LocalTemporaryTables) + require.Equal(t, 0, sessVars.LocalTemporaryTables.(*infoschema.LocalTemporaryTables).Count()) require.Nil(t, sessVars.TemporaryTableData) // add one table diff --git a/table/temptable/infoschema.go b/table/temptable/infoschema.go index 7947027ba0314..764bee0dbbce0 100644 --- a/table/temptable/infoschema.go +++ b/table/temptable/infoschema.go @@ -26,10 +26,6 @@ func AttachLocalTemporaryTableInfoSchema(sctx sessionctx.Context, is infoschema. } localTemporaryTables := getLocalTemporaryTables(sctx) - if localTemporaryTables == nil { - return is - } - return &infoschema.TemporaryTableAttachedInfoSchema{ InfoSchema: is, LocalTemporaryTables: localTemporaryTables, @@ -46,12 +42,8 @@ func DetachLocalTemporaryTableInfoSchema(is infoschema.InfoSchema) infoschema.In } func getLocalTemporaryTables(sctx sessionctx.Context) *infoschema.LocalTemporaryTables { - localTemporaryTables := sctx.GetSessionVars().LocalTemporaryTables - if localTemporaryTables == nil { - return nil - } - - return localTemporaryTables.(*infoschema.LocalTemporaryTables) + // Do not return nil so that new created tables can always be visited through the returned object. + return ensureLocalTemporaryTables(sctx) } func ensureLocalTemporaryTables(sctx sessionctx.Context) *infoschema.LocalTemporaryTables { diff --git a/tablecodec/BUILD.bazel b/tablecodec/BUILD.bazel new file mode 100644 index 0000000000000..29b92a92d62f7 --- /dev/null +++ b/tablecodec/BUILD.bazel @@ -0,0 +1,50 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "tablecodec", + srcs = ["tablecodec.go"], + importpath = "github.com/pingcap/tidb/tablecodec", + visibility = ["//visibility:public"], + deps = [ + "//errno", + "//kv", + "//parser/charset", + "//parser/model", + "//parser/mysql", + "//parser/terror", + "//sessionctx/stmtctx", + "//structure", + "//types", + "//util/codec", + "//util/collate", + "//util/dbterror", + "//util/rowcodec", + "//util/stringutil", + "@com_github_pingcap_errors//:errors", + ], +) + +go_test( + name = "tablecodec_test", + srcs = [ + "bench_test.go", + "main_test.go", + "tablecodec_test.go", + ], + embed = [":tablecodec"], + deps = [ + "//kv", + "//parser/mysql", + "//parser/terror", + "//sessionctx/stmtctx", + "//testkit/testsetup", + "//types", + "//util/benchdaily", + "//util/codec", + "//util/collate", + "//util/rowcodec", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/tablecodec/rowindexcodec/BUILD.bazel b/tablecodec/rowindexcodec/BUILD.bazel new file mode 100644 index 0000000000000..1956fbbf19933 --- /dev/null +++ b/tablecodec/rowindexcodec/BUILD.bazel @@ -0,0 +1,22 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "rowindexcodec", + srcs = ["rowindexcodec.go"], + importpath = "github.com/pingcap/tidb/tablecodec/rowindexcodec", + visibility = ["//visibility:public"], +) + +go_test( + name = "rowindexcodec_test", + srcs = [ + "main_test.go", + "rowindexcodec_test.go", + ], + embed = [":rowindexcodec"], + deps = [ + "//testkit/testsetup", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/tablecodec/tablecodec.go b/tablecodec/tablecodec.go index 90adccbc5fa64..3db97ef11f9c0 100644 --- a/tablecodec/tablecodec.go +++ b/tablecodec/tablecodec.go @@ -55,7 +55,7 @@ var ( const ( idLen = 8 prefixLen = 1 + idLen /*tableID*/ + 2 - // RecordRowKeyLen is public for calculating avgerage row size. + // RecordRowKeyLen is public for calculating average row size. RecordRowKeyLen = prefixLen + idLen /*handle*/ tablePrefixLength = 1 recordPrefixSepLength = 2 diff --git a/tablecodec/tablecodec_test.go b/tablecodec/tablecodec_test.go index 008ee8c5d7e1f..3f813c8747a7a 100644 --- a/tablecodec/tablecodec_test.go +++ b/tablecodec/tablecodec_test.go @@ -262,7 +262,7 @@ func TestTimeCodec(t *testing.T) { "2016-06-23 11:30:45") require.NoError(t, err) row[2] = types.NewDatum(ts) - du, err := types.ParseDuration(nil, "12:59:59.999999", 6) + du, _, err := types.ParseDuration(nil, "12:59:59.999999", 6) require.NoError(t, err) row[3] = types.NewDatum(du) diff --git a/telemetry/BUILD.bazel b/telemetry/BUILD.bazel new file mode 100644 index 0000000000000..73ae1814d3308 --- /dev/null +++ b/telemetry/BUILD.bazel @@ -0,0 +1,68 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "telemetry", + srcs = [ + "data.go", + "data_cluster_hardware.go", + "data_cluster_info.go", + "data_feature_usage.go", + "data_slow_query.go", + "data_telemetry_host_extra.go", + "data_window.go", + "id.go", + "status.go", + "telemetry.go", + "util.go", + ], + importpath = "github.com/pingcap/tidb/telemetry", + visibility = ["//visibility:public"], + deps = [ + "//config", + "//domain/infosync", + "//infoschema", + "//metrics", + "//parser/model", + "//parser/mysql", + "//sessionctx", + "//sessionctx/variable", + "//util/logutil", + "//util/sqlexec", + "@com_github_google_uuid//:uuid", + "@com_github_iancoleman_strcase//:strcase", + "@com_github_pingcap_errors//:errors", + "@com_github_prometheus_client_golang//api", + "@com_github_prometheus_client_golang//api/prometheus/v1:prometheus", + "@com_github_prometheus_common//model", + "@com_github_shirou_gopsutil_v3//cpu", + "@com_github_shirou_gopsutil_v3//host", + "@com_github_tikv_client_go_v2//metrics", + "@io_etcd_go_etcd_client_v3//:client", + "@org_uber_go_atomic//:atomic", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "telemetry_test", + srcs = [ + "data_cluster_hardware_test.go", + "data_feature_usage_test.go", + "data_window_test.go", + "main_test.go", + "telemetry_test.go", + "util_test.go", + ], + embed = [":telemetry"], + deps = [ + "//config", + "//session", + "//sessionctx/variable", + "//testkit", + "//testkit/testsetup", + "@com_github_jeffail_gabs_v2//:gabs", + "@com_github_stretchr_testify//require", + "@io_etcd_go_etcd_tests_v3//integration", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/telemetry/cte_test/BUILD.bazel b/telemetry/cte_test/BUILD.bazel new file mode 100644 index 0000000000000..b73c62623079c --- /dev/null +++ b/telemetry/cte_test/BUILD.bazel @@ -0,0 +1,20 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_test") + +go_test( + name = "cte_test_test", + srcs = ["cte_test.go"], + deps = [ + "//config", + "//domain", + "//kv", + "//session", + "//store/mockstore", + "//telemetry", + "//testkit", + "//testkit/testsetup", + "@com_github_jeffail_gabs_v2//:gabs", + "@com_github_stretchr_testify//require", + "@io_etcd_go_etcd_tests_v3//integration", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/testkit/BUILD.bazel b/testkit/BUILD.bazel new file mode 100644 index 0000000000000..c4c43cf90cfdc --- /dev/null +++ b/testkit/BUILD.bazel @@ -0,0 +1,35 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "testkit", + srcs = [ + "asynctestkit.go", + "dbtestkit.go", + "mocksessionmanager.go", + "mockstore.go", + "result.go", + "testkit.go", + ], + importpath = "github.com/pingcap/tidb/testkit", + visibility = ["//visibility:public"], + deps = [ + "//domain", + "//kv", + "//parser/ast", + "//parser/terror", + "//session", + "//session/txninfo", + "//sessionctx/variable", + "//store/mockstore", + "//types", + "//util", + "//util/sqlexec", + "@com_github_pingcap_errors//:errors", + "@com_github_stretchr_testify//assert", + "@com_github_stretchr_testify//require", + "@com_github_tikv_client_go_v2//oracle", + "@com_github_tikv_client_go_v2//tikv", + "@com_github_tikv_client_go_v2//tikvrpc", + "@org_uber_go_atomic//:atomic", + ], +) diff --git a/testkit/external/BUILD.bazel b/testkit/external/BUILD.bazel new file mode 100644 index 0000000000000..4bd1adb891949 --- /dev/null +++ b/testkit/external/BUILD.bazel @@ -0,0 +1,16 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "external", + srcs = ["util.go"], + importpath = "github.com/pingcap/tidb/testkit/external", + visibility = ["//visibility:public"], + deps = [ + "//domain", + "//parser/model", + "//table", + "//table/tables", + "//testkit", + "@com_github_stretchr_testify//require", + ], +) diff --git a/testkit/result.go b/testkit/result.go index 30fa7a53d2a2f..ce8d011a45b03 100644 --- a/testkit/result.go +++ b/testkit/result.go @@ -49,6 +49,16 @@ func (res *Result) Check(expected [][]interface{}) { res.require.Equal(needBuff.String(), resBuff.String(), res.comment) } +// CheckWithFunc asserts the result match the expected results in the way `f` specifies. +func (res *Result) CheckWithFunc(expected [][]interface{}, f func([]string, []interface{}) bool) { + res.require.Equal(len(res.rows), len(expected), res.comment+"\nResult length mismatch") + + for i, resRow := range res.rows { + expectedRow := expected[i] + res.require.Truef(f(resRow, expectedRow), res.comment+"\nCheck with function failed\nactual: %s\nexpected: %s", resRow, expectedRow) + } +} + // Rows is similar to RowsWithSep, use white space as separator string. func Rows(args ...string) [][]interface{} { return RowsWithSep(" ", args...) diff --git a/testkit/testdata/BUILD.bazel b/testkit/testdata/BUILD.bazel new file mode 100644 index 0000000000000..4aea4a46c4e32 --- /dev/null +++ b/testkit/testdata/BUILD.bazel @@ -0,0 +1,13 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "testdata", + srcs = ["testdata.go"], + importpath = "github.com/pingcap/tidb/testkit/testdata", + visibility = ["//visibility:public"], + deps = [ + "//sessionctx/stmtctx", + "@com_github_pingcap_errors//:errors", + "@com_github_stretchr_testify//require", + ], +) diff --git a/testkit/testdata/testdata.go b/testkit/testdata/testdata.go index 8ab2f343d7b8e..851a9924153b9 100644 --- a/testkit/testdata/testdata.go +++ b/testkit/testdata/testdata.go @@ -63,19 +63,14 @@ func loadTestSuiteData(dir, suiteName string) (res TestData, err error) { if err != nil { return res, err } - if record { - res.output = make([]testCases, len(res.input)) - for i := range res.input { - res.output[i].Name = res.input[i].Name - } - } else { - res.output, err = loadTestSuiteCases(fmt.Sprintf("%s_out.json", res.filePathPrefix)) - if err != nil { - return res, err - } - if len(res.input) != len(res.output) { - return res, errors.New(fmt.Sprintf("Number of test input cases %d does not match test output cases %d", len(res.input), len(res.output))) - } + + // Load all test cases result in order to keep the unrelated test results. + res.output, err = loadTestSuiteCases(fmt.Sprintf("%s_out.json", res.filePathPrefix)) + if err != nil { + return res, err + } + if len(res.input) != len(res.output) { + return res, errors.New(fmt.Sprintf("Number of test input cases %d does not match test output cases %d", len(res.input), len(res.output))) } res.funcMap = make(map[string]int, len(res.input)) for i, test := range res.input { @@ -188,16 +183,25 @@ func (td *TestData) generateOutputIfNeeded() error { enc := json.NewEncoder(buf) enc.SetEscapeHTML(false) enc.SetIndent("", " ") + isRecord4ThisSuite := false for i, test := range td.output { - err := enc.Encode(test.decodedOut) - if err != nil { - return err + if test.decodedOut != nil { + // Only update the results for the related test cases. + isRecord4ThisSuite = true + err := enc.Encode(test.decodedOut) + if err != nil { + return err + } + res := make([]byte, len(buf.Bytes())) + copy(res, buf.Bytes()) + buf.Reset() + rm := json.RawMessage(res) + td.output[i].Cases = &rm } - res := make([]byte, len(buf.Bytes())) - copy(res, buf.Bytes()) - buf.Reset() - rm := json.RawMessage(res) - td.output[i].Cases = &rm + } + // Skip the record for the unrelated test files. + if !isRecord4ThisSuite { + return nil } err := enc.Encode(td.output) if err != nil { diff --git a/testkit/testkit.go b/testkit/testkit.go index 342795644c76b..912b5292dad10 100644 --- a/testkit/testkit.go +++ b/testkit/testkit.go @@ -20,7 +20,9 @@ import ( "context" "fmt" "strings" + "sync" "testing" + "time" "github.com/pingcap/errors" "github.com/pingcap/tidb/kv" @@ -32,6 +34,8 @@ import ( "github.com/pingcap/tidb/util/sqlexec" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "github.com/tikv/client-go/v2/tikv" + "github.com/tikv/client-go/v2/tikvrpc" "go.uber.org/atomic" ) @@ -255,6 +259,15 @@ func (tk *TestKit) ExecToErr(sql string, args ...interface{}) error { return err } +// MustExecToErr executes a sql statement and must return Error. +func (tk *TestKit) MustExecToErr(sql string, args ...interface{}) { + res, err := tk.Exec(sql, args...) + if res != nil { + tk.require.NoError(res.Close()) + } + tk.require.Error(err) +} + func newSession(t testing.TB, store kv.Storage) session.Session { se, err := session.CreateSession4Test(store) require.NoError(t, err) @@ -286,6 +299,12 @@ func (tk *TestKit) MustGetErrMsg(sql string, errStr string) { tk.require.EqualError(err, errStr) } +// MustGetDBError executes a sql statement and assert its terror. +func (tk *TestKit) MustGetDBError(sql string, dberr *terror.Error) { + err := tk.ExecToErr(sql) + tk.require.Truef(terror.ErrorEqual(err, dberr), "err %v", err) +} + // MustContainErrMsg executes a sql statement and assert its error message containing errStr. func (tk *TestKit) MustContainErrMsg(sql string, errStr interface{}) { err := tk.ExecToErr(sql) @@ -390,3 +409,28 @@ func (tk *TestKit) MustNoGlobalStats(table string) bool { func (tk *TestKit) CheckLastMessage(msg string) { tk.require.Equal(tk.Session().LastMessage(), msg) } + +// RegionProperityClient is to get region properties. +type RegionProperityClient struct { + tikv.Client + mu struct { + sync.Mutex + failedOnce bool + count int64 + } +} + +// SendRequest is to mock send request. +func (c *RegionProperityClient) SendRequest(ctx context.Context, addr string, req *tikvrpc.Request, timeout time.Duration) (*tikvrpc.Response, error) { + if req.Type == tikvrpc.CmdDebugGetRegionProperties { + c.mu.Lock() + defer c.mu.Unlock() + c.mu.count++ + // Mock failure once. + if !c.mu.failedOnce { + c.mu.failedOnce = true + return &tikvrpc.Response{}, nil + } + } + return c.Client.SendRequest(ctx, addr, req, timeout) +} diff --git a/testkit/testmain/BUILD.bazel b/testkit/testmain/BUILD.bazel new file mode 100644 index 0000000000000..0b9be885c768b --- /dev/null +++ b/testkit/testmain/BUILD.bazel @@ -0,0 +1,12 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "testmain", + srcs = [ + "bench.go", + "wrapper.go", + ], + importpath = "github.com/pingcap/tidb/testkit/testmain", + visibility = ["//visibility:public"], + deps = ["@org_uber_go_goleak//:goleak"], +) diff --git a/testkit/testsetup/BUILD.bazel b/testkit/testsetup/BUILD.bazel new file mode 100644 index 0000000000000..05851d4fbfb30 --- /dev/null +++ b/testkit/testsetup/BUILD.bazel @@ -0,0 +1,25 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "testbridge", + srcs = ["bridge.go"], + importpath = "github.com/pingcap/tidb/util/testbridge", + visibility = ["//visibility:public"], + deps = [ + "@com_github_pingcap_log//:log", + "@org_uber_go_zap//:zap", + "@org_uber_go_zap//zapcore", + ], +) + +go_library( + name = "testsetup", + srcs = ["bridge.go"], + importpath = "github.com/pingcap/tidb/testkit/testsetup", + visibility = ["//visibility:public"], + deps = [ + "@com_github_pingcap_log//:log", + "@org_uber_go_zap//:zap", + "@org_uber_go_zap//zapcore", + ], +) diff --git a/testkit/testutil/BUILD.bazel b/testkit/testutil/BUILD.bazel new file mode 100644 index 0000000000000..2e167c384deda --- /dev/null +++ b/testkit/testutil/BUILD.bazel @@ -0,0 +1,31 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "testutil", + srcs = [ + "handle.go", + "require.go", + ], + importpath = "github.com/pingcap/tidb/testkit/testutil", + visibility = ["//visibility:public"], + deps = [ + "//kv", + "//parser/mysql", + "//sessionctx/stmtctx", + "//types", + "//util/codec", + "//util/collate", + "@com_github_stretchr_testify//require", + "@org_golang_x_exp//slices", + ], +) + +go_test( + name = "testutil_test", + srcs = ["require_test.go"], + embed = [":testutil"], + deps = [ + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/tests/globalkilltest/BUILD.bazel b/tests/globalkilltest/BUILD.bazel new file mode 100644 index 0000000000000..d0f55d977c3f3 --- /dev/null +++ b/tests/globalkilltest/BUILD.bazel @@ -0,0 +1,20 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_test") + +go_test( + name = "globalkilltest_test", + srcs = [ + "global_kill_test.go", + "main_test.go", + ], + deps = [ + "//testkit/testsetup", + "//util/logutil", + "@com_github_go_sql_driver_mysql//:mysql", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_log//:log", + "@com_github_stretchr_testify//require", + "@io_etcd_go_etcd_client_v3//:client", + "@org_golang_google_grpc//:grpc", + "@org_uber_go_zap//:zap", + ], +) diff --git a/tests/globalkilltest/global_kill_test.go b/tests/globalkilltest/global_kill_test.go index 89130553ea26b..0e4caf303074d 100644 --- a/tests/globalkilltest/global_kill_test.go +++ b/tests/globalkilltest/global_kill_test.go @@ -49,7 +49,10 @@ var ( pdClientPath = flag.String("pd", "127.0.0.1:2379", "pd client path") - lostConnectionToPDTimeout = flag.Int("conn_lost", 5, "lost connection to PD timeout, should be the same as TiDB ldflag ") + // nolint: unused, deadcode + lostConnectionToPDTimeout = flag.Int("conn_lost", 5, "lost connection to PD timeout, should be the same as TiDB ldflag ") + + // nolint: unused, deadcode timeToCheckPDConnectionRestored = flag.Int("conn_restored", 1, "time to check PD connection restored, should be the same as TiDB ldflag ") ) @@ -64,7 +67,7 @@ type GlobalKillSuite struct { pdCli *clientv3.Client pdErr error - clusterId string + clusterID string pdProc *exec.Cmd tikvProc *exec.Cmd } @@ -74,7 +77,7 @@ func createGloabalKillSuite(t *testing.T) (s *GlobalKillSuite, clean func()) { err := logutil.InitLogger(&logutil.LogConfig{Config: log.Config{Level: *logLevel}}) require.NoError(t, err) - s.clusterId = time.Now().Format(time.RFC3339Nano) + s.clusterID = time.Now().Format(time.RFC3339Nano) err = s.startCluster() require.NoError(t, err) s.pdCli, s.pdErr = s.connectPD() @@ -157,12 +160,12 @@ func (s *GlobalKillSuite) startPD(dataDir string) (err error) { } func (s *GlobalKillSuite) startCluster() (err error) { - err = s.startPD(s.clusterId) + err = s.startPD(s.clusterID) if err != nil { return } - err = s.startTiKV(s.clusterId) + err = s.startTiKV(s.clusterID) if err != nil { return } @@ -373,12 +376,11 @@ func sleepRoutine(ctx context.Context, sleepTime int, conn *sql.Conn, connID uin return } rows.Next() - if rows.Err() != nil { - ch <- sleepResult{err: rows.Err()} + if err := rows.Err(); err != nil { + ch <- sleepResult{err: err} return } - err = rows.Close() - if err != nil { + if err = rows.Close(); err != nil { ch <- sleepResult{err: err} } diff --git a/tests/globalkilltest/go.mod b/tests/globalkilltest/go.mod deleted file mode 100644 index 85c7fec1f425f..0000000000000 --- a/tests/globalkilltest/go.mod +++ /dev/null @@ -1,46 +0,0 @@ -module github.com/pingcap/tests/globalkilltest - -go 1.18 - -require ( - github.com/go-sql-driver/mysql v1.6.0 - github.com/pingcap/errors v0.11.5-0.20211224045212-9687c2b0f87c - github.com/pingcap/log v1.1.0 - github.com/pingcap/tidb v2.0.11+incompatible - github.com/stretchr/testify v1.7.2-0.20220504104629-106ec21d14df - go.etcd.io/etcd/client/v3 v3.5.2 - go.uber.org/zap v1.21.0 - google.golang.org/grpc v1.44.0 -) - -require ( - github.com/benbjohnson/clock v1.3.0 // indirect - github.com/coreos/go-semver v0.3.0 // indirect - github.com/coreos/go-systemd/v22 v22.3.2 // indirect - github.com/davecgh/go-spew v1.1.1 // indirect - github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang/protobuf v1.5.2 // indirect - github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect - github.com/opentracing/opentracing-go v1.2.0 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect - go.etcd.io/etcd/api/v3 v3.5.2 // indirect - go.etcd.io/etcd/client/pkg/v3 v3.5.2 // indirect - go.uber.org/atomic v1.9.0 // indirect - go.uber.org/multierr v1.8.0 // indirect - golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd // indirect - golang.org/x/sys v0.0.0-20220408201424-a24fb2fb8a0f // indirect - golang.org/x/text v0.3.7 // indirect - google.golang.org/genproto v0.0.0-20220216160803-4663080d8bc8 // indirect - google.golang.org/protobuf v1.27.1 // indirect - gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect - gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect -) - -// fix potential security issue(CVE-2020-26160) introduced by indirect dependency. -replace github.com/dgrijalva/jwt-go => github.com/form3tech-oss/jwt-go v3.2.6-0.20210809144907-32ab6a8243d7+incompatible - -replace github.com/pingcap/tidb => ../../ - -replace github.com/pingcap/tidb/parser => ../../parser - -replace google.golang.org/grpc => google.golang.org/grpc v1.29.1 diff --git a/tests/globalkilltest/go.sum b/tests/globalkilltest/go.sum deleted file mode 100644 index 10a048e20d254..0000000000000 --- a/tests/globalkilltest/go.sum +++ /dev/null @@ -1,312 +0,0 @@ -cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/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-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= -github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= -github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A= -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/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= -github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/coocood/freecache v1.2.1 h1:/v1CqMq45NFH9mp/Pt142reundeBM0dVUD3osQBeu/U= -github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM= -github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd/v22 v22.3.2 h1:D9/bQk5vlXQFZ6Kwuu6zaiXJ9oTPe68++AzAJc1DzSI= -github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/cznic/mathutil v0.0.0-20181122101859-297441e03548 h1:iwZdTE0PVqJCos1vaoKsclOGD3ADKpshg3SRtYBbwso= -github.com/danjacques/gofslock v0.0.0-20191023191349-0a45f885bc37 h1:X6mKGhCFOxrKeeHAjv/3UvT6e5RRxW6wRdlqlV6/H4w= -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/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y= -github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= -github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= -github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= -github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= -github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE= -github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= -github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= -github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= -github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= -github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= -github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= -github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= -github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/google/btree v1.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4= -github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.7 h1:81/ik6ipDQS2aGcBfIN5dHDB36BwrStyeAQquSYCV4o= -github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y= -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/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= -github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= -github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/konsorten/go-windows-terminal-sequences v1.0.3/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= -github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= -github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= -github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= -github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -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/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/opentracing/basictracer-go v1.0.0 h1:YyUAhaEfjoWXclZVJ9sGoNct7j4TVk7lZWlQw5UXuoo= -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/pingcap/errors v0.11.0/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= -github.com/pingcap/errors v0.11.5-0.20211224045212-9687c2b0f87c h1:xpW9bvK+HuuTmyFqUwr+jcCvpVkK7sumiz+ko5H9eq4= -github.com/pingcap/errors v0.11.5-0.20211224045212-9687c2b0f87c/go.mod h1:X2r9ueLEUZgtx2cIogM0v4Zj5uvvzhuuiu7Pn8HzMPg= -github.com/pingcap/failpoint v0.0.0-20220423142525-ae43b7f4e5c3 h1:kJolJWbyadVeL8RKBlqmXQR7FRKPsIeU85TUYyhbhiQ= -github.com/pingcap/kvproto v0.0.0-20220328072018-6e75c12dbd73 h1:jKixsi6Iw00hL0+o23hmr8BNzlsQP9pShHTOwyuf/Os= -github.com/pingcap/log v1.1.0 h1:ELiPxACz7vdo1qAvvaWJg1NrYFoY6gqAh/+Uo6aXdD8= -github.com/pingcap/log v1.1.0/go.mod h1:DWQW5jICDR7UJh4HtxXSM20Churx4CQL0fwL/SoOSA4= -github.com/pingcap/tipb v0.0.0-20220215045658-d12dec7a7609 h1:BiCS1ZRnW0szOvTAa3gCqWIhyo+hv83SVaBgrUghXIU= -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/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw= -github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= -github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.11.0 h1:HNkLOAEQMIDv/K+04rukrLx6ch7msSRwf3/SASFAGtQ= -github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/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.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= -github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= -github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= -github.com/prometheus/common v0.32.1 h1:hWIdL3N2HoUx3B8j3YN9mWor0qhY/NlEKZEaXxuIRh4= -github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.6.0 h1:mxy4L2jP6qMonqmq+aTtOx1ifVWUgG/TAmntgbh3xv4= -github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 h1:OdAsTTz6OkFY5QxjkYwrChwuRruF69c169dPK26NUlk= -github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= -github.com/rogpeppe/go-internal v1.6.1 h1:/FiVV8dS/e+YqF2JvO3yXRFbBLTIuSDkuC7aBOAvL+k= -github.com/shirou/gopsutil/v3 v3.21.12 h1:VoGxEW2hpmz0Vt3wUvHIl9fquzYLNpVpgNNB7pGJimA= -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.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.2-0.20220504104629-106ec21d14df h1:rh3VYpfvzXRbJ90ymx1yfhGl/wq8ac2m/cUbao61kwY= -github.com/stretchr/testify v1.7.2-0.20220504104629-106ec21d14df/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/tikv/client-go/v2 v2.0.1-0.20220406091203-f73ec0e675f4 h1:bi/tuV42dQCu7TTTOwHQW6cHVrV1fhet+Hzo5CUODBQ= -github.com/tikv/pd/client v0.0.0-20220307081149-841fa61e9710 h1:jxgmKOscXSjaFEKQGRyY5qOpK8hLqxs2irb/uDJMtwk= -github.com/twmb/murmur3 v1.1.3 h1:D83U0XYKcHRYwYIpBKf3Pks91Z0Byda/9SJ8B6EMRcA= -github.com/uber/jaeger-client-go v2.22.1+incompatible h1:NHcubEkVbahf9t3p75TOCR83gdUHXjRJvjoBh1yACsM= -github.com/uber/jaeger-lib v2.4.1+incompatible h1:td4jdvLcExb4cBISKIpHuGoVXh+dVKhn2Um6rjCsSsg= -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yusufpapurcu/wmi v1.2.2 h1:KBNDSne4vP5mbSWnJbO+51IMOXJB67QiYCSBrubbPRg= -go.etcd.io/etcd/api/v3 v3.5.2 h1:tXok5yLlKyuQ/SXSjtqHc4uzNaMqZi2XsoSPr/LlJXI= -go.etcd.io/etcd/api/v3 v3.5.2/go.mod h1:5GB2vv4A4AOn3yk7MftYGHkUfGtDHnEraIjym4dYz5A= -go.etcd.io/etcd/client/pkg/v3 v3.5.2 h1:4hzqQ6hIb3blLyQ8usCU4h3NghkqcsohEQ3o3VetYxE= -go.etcd.io/etcd/client/pkg/v3 v3.5.2/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= -go.etcd.io/etcd/client/v3 v3.5.2 h1:WdnejrUtQC4nCxK0/dLTMqKOB+U5TP/2Ya0BJL+1otA= -go.etcd.io/etcd/client/v3 v3.5.2/go.mod h1:kOOaWFFgHygyT0WlSmL8TJiXmMysO/nNUlEsSsN6W4o= -go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= -go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= -go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= -go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= -go.uber.org/goleak v1.1.12 h1:gZAh5/EyT/HQwlpkCy6wTpqfH9H8Lz8zbm3dZh+OyzA= -go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -go.uber.org/multierr v1.7.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak= -go.uber.org/multierr v1.8.0 h1:dg6GjLku4EH+249NNmoIciG9N/jURbDG+pFlTkhzIC8= -go.uber.org/multierr v1.8.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak= -go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= -go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= -go.uber.org/zap v1.21.0 h1:WefMeulhovoZ2sYXz7st6K0sLj7bBhpiFaud4r4zST8= -go.uber.org/zap v1.21.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/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-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/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-20190108225652-1e06a53dbb7e/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-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd h1:O7DYs+zxREGLKzKoMQrtrEacpb0ZVXA5rIwylE2Xchk= -golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -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-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -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= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/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-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -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-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -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-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220408201424-a24fb2fb8a0f h1:8w7RhxzTVgUzw/AH/9mUV5q0vMgy40SQRursCcfmkCw= -golang.org/x/sys v0.0.0-20220408201424-a24fb2fb8a0f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -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.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= -golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -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= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20220216160803-4663080d8bc8 h1:divpuJZKgX3Qt7MFDE5v62yu0yQcQbTCD9VJp9leX58= -google.golang.org/genproto v0.0.0-20220216160803-4663080d8bc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/grpc v1.29.1 h1:EC2SB8S04d2r73uptxphDSUG+kTKVgjRPF+N3xpxRB4= -google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= -google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= -google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= -google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= -google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -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 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= -google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -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 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8= -gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= -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= -gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= diff --git a/tests/graceshutdown/BUILD.bazel b/tests/graceshutdown/BUILD.bazel new file mode 100644 index 0000000000000..591cb817fc158 --- /dev/null +++ b/tests/graceshutdown/BUILD.bazel @@ -0,0 +1,18 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_test") + +go_test( + name = "graceshutdown_test", + srcs = [ + "graceshutdown_test.go", + "main_test.go", + ], + deps = [ + "//testkit/testsetup", + "@com_github_go_sql_driver_mysql//:mysql", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_log//:log", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + "@org_uber_go_zap//:zap", + ], +) diff --git a/tests/graceshutdown/go.mod b/tests/graceshutdown/go.mod deleted file mode 100644 index df86a6bebb48a..0000000000000 --- a/tests/graceshutdown/go.mod +++ /dev/null @@ -1,27 +0,0 @@ -module graceshutdown - -go 1.18 - -require ( - github.com/go-sql-driver/mysql v1.6.0 - github.com/pingcap/errors v0.11.5-0.20211224045212-9687c2b0f87c - github.com/pingcap/log v1.1.0 - github.com/pingcap/tidb v2.0.11+incompatible - github.com/stretchr/testify v1.7.2-0.20220504104629-106ec21d14df - go.uber.org/goleak v1.1.12 - go.uber.org/zap v1.21.0 -) - -require ( - github.com/benbjohnson/clock v1.3.0 // indirect - github.com/davecgh/go-spew v1.1.1 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect - go.uber.org/atomic v1.9.0 // indirect - go.uber.org/multierr v1.8.0 // indirect - gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect - gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect -) - -replace github.com/pingcap/tidb => ../../ - -replace github.com/pingcap/tidb/parser => ../../parser diff --git a/tests/graceshutdown/go.sum b/tests/graceshutdown/go.sum deleted file mode 100644 index 8f811d384e31c..0000000000000 --- a/tests/graceshutdown/go.sum +++ /dev/null @@ -1,87 +0,0 @@ -github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= -github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A= -github.com/benbjohnson/clock v1.3.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= -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/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE= -github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= -github.com/pingcap/errors v0.11.0/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= -github.com/pingcap/errors v0.11.5-0.20211224045212-9687c2b0f87c h1:xpW9bvK+HuuTmyFqUwr+jcCvpVkK7sumiz+ko5H9eq4= -github.com/pingcap/errors v0.11.5-0.20211224045212-9687c2b0f87c/go.mod h1:X2r9ueLEUZgtx2cIogM0v4Zj5uvvzhuuiu7Pn8HzMPg= -github.com/pingcap/log v1.1.0 h1:ELiPxACz7vdo1qAvvaWJg1NrYFoY6gqAh/+Uo6aXdD8= -github.com/pingcap/log v1.1.0/go.mod h1:DWQW5jICDR7UJh4HtxXSM20Churx4CQL0fwL/SoOSA4= -github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= -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/rogpeppe/go-internal v1.6.1 h1:/FiVV8dS/e+YqF2JvO3yXRFbBLTIuSDkuC7aBOAvL+k= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.2-0.20220504104629-106ec21d14df h1:rh3VYpfvzXRbJ90ymx1yfhGl/wq8ac2m/cUbao61kwY= -github.com/stretchr/testify v1.7.2-0.20220504104629-106ec21d14df/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= -go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= -go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= -go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= -go.uber.org/goleak v1.1.12 h1:gZAh5/EyT/HQwlpkCy6wTpqfH9H8Lz8zbm3dZh+OyzA= -go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= -go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -go.uber.org/multierr v1.7.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak= -go.uber.org/multierr v1.8.0 h1:dg6GjLku4EH+249NNmoIciG9N/jURbDG+pFlTkhzIC8= -go.uber.org/multierr v1.8.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak= -go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= -go.uber.org/zap v1.21.0 h1:WefMeulhovoZ2sYXz7st6K0sLj7bBhpiFaud4r4zST8= -go.uber.org/zap v1.21.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de h1:5hukYrvBGR8/eNkX5mdUezrA6JiaEZDtJb9Ei+1LlBs= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.8 h1:P1HhGGuLW4aAclzjtmJdf0mJOjVUZUzOTqkAkWL+l6w= -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-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8= -gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/tests/readonlytest/BUILD.bazel b/tests/readonlytest/BUILD.bazel new file mode 100644 index 0000000000000..3561b8cbdc805 --- /dev/null +++ b/tests/readonlytest/BUILD.bazel @@ -0,0 +1,15 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_test") + +go_test( + name = "readonlytest_test", + srcs = [ + "main_test.go", + "readonly_test.go", + ], + deps = [ + "//testkit/testsetup", + "@com_github_go_sql_driver_mysql//:mysql", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/tests/readonlytest/go.mod b/tests/readonlytest/go.mod deleted file mode 100644 index cc0b22e3b1343..0000000000000 --- a/tests/readonlytest/go.mod +++ /dev/null @@ -1,14 +0,0 @@ -module github.com/pingcap/tidb/tests/readonlytest - -go 1.16 - -require ( - github.com/go-sql-driver/mysql v1.6.0 - github.com/pingcap/tidb v2.0.11+incompatible - github.com/stretchr/testify v1.7.0 - go.uber.org/goleak v1.1.12 -) - -replace github.com/pingcap/tidb => ../../ - -replace github.com/pingcap/tidb/parser => ../../parser diff --git a/tests/readonlytest/go.sum b/tests/readonlytest/go.sum deleted file mode 100644 index 387cfacb99a28..0000000000000 --- a/tests/readonlytest/go.sum +++ /dev/null @@ -1,1257 +0,0 @@ -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= -cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= -cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= -cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= -cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= -cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= -cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= -cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= -cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= -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.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= -cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= -cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= -cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= -cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= -cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= -cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= -cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= -cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= -cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= -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/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/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= -cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= -cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= -cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= -cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= -cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= -cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -cloud.google.com/go/storage v1.16.1/go.mod h1:LaNorbty3ehnU3rEjXSNV/NRgQA0O8Y+uh6bPe5UOk4= -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/sdk/azcore v0.20.0/go.mod h1:ZPW/Z0kLCTdDZaDbYTetxc9Cxl/2lNqxYHYNOF2bti0= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v0.12.0/go.mod h1:GJzjM4SR9T0KyX5gKCVyz1ytD8FeWeUPCwtFCt1AyfE= -github.com/Azure/azure-sdk-for-go/sdk/internal v0.8.1/go.mod h1:KLF4gFr6DcKFZwSuH8w8yEK6DpFl3LP5rhdvAb7Yz5I= -github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.2.0/go.mod h1:eHWhQKXc1Gv1DvWH//UzgWjWFEo0Pp4pH2vBzjBw8Fc= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/CloudyKit/fastprinter v0.0.0-20170127035650-74b38d55f37a/go.mod h1:EFZQ978U7x8IRnstaskI3IysnWY5Ao3QgZUKOXlsAdw= -github.com/CloudyKit/jet v2.1.3-0.20180809161101-62edd43e4f88+incompatible/go.mod h1:HPYO+50pSWkPoj9Q/eq0aRGByCL6ScRlUmiEX5Zgm+w= -github.com/DATA-DOG/go-sqlmock v1.5.0/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= -github.com/DataDog/zstd v1.4.5/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= -github.com/HdrHistogram/hdrhistogram-go v1.1.0/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= -github.com/Jeffail/gabs/v2 v2.5.1/go.mod h1:xCn81vdHKxFUuWWAaD5jCTQDNPBMh5pPs9IJ+NcziBI= -github.com/Joker/hpp v1.0.0/go.mod h1:8x5n+M1Hp5hC0g8okX3sR3vFQwynaX/UgSOM9MeBKzY= -github.com/Joker/jade v1.0.1-0.20190614124447-d475f43051e7/go.mod h1:6E6s8o2AE4KhCrqr6GRJjdC/gNfTdxkIXvuGZZda2VM= -github.com/KyleBanks/depth v1.2.1/go.mod h1:jzSb9d0L43HxTQfT+oSA1EEp2q+ne2uh6XgeJcm8brE= -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/PuerkitoBio/purell v1.1.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= -github.com/ReneKroon/ttlcache/v2 v2.3.0/go.mod h1:zbo6Pv/28e21Z8CzzqgYRArQYGYtjONRxaAKGxzQvG4= -github.com/Shopify/goreferrer v0.0.0-20181106222321-ec9c9a553398/go.mod h1:a1uqRtAwp2Xwc6WNPJEufxJ7fx3npB4UV/JOLmbu5I0= -github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= -github.com/VividCortex/ewma v1.1.1/go.mod h1:2Tkkvm3sRDVXaiyucHiACn4cqf7DpdyLvmxzcbUokwA= -github.com/VividCortex/mysqlerr v0.0.0-20200629151747-c28746d985dd/go.mod h1:f3HiCrHjHBdcm6E83vGaXh1KomZMA2P6aeo3hKx/wg0= -github.com/Xeoncross/go-aesctr-with-hmac v0.0.0-20200623134604-12b17a7ff502/go.mod h1:pmnBM9bxWSiHvC/gSWunUIyDvGn33EkP2CUjxFKtTTM= -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/template v0.0.0-20190718012654-fb15b899a751/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-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alvaroloes/enumer v1.1.2/go.mod h1:FxrjvuXoDAx9isTJrv4c+T410zFi0DtXIT0m65DJ+Wo= -github.com/antihax/optional v0.0.0-20180407024304-ca021399b1a6/go.mod h1:V8iCPQYkqmusNa815XgQio277wI47sdRh1dUOLdyC6Q= -github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/apache/thrift v0.0.0-20181112125854-24918abba929/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= -github.com/apache/thrift v0.13.1-0.20201008052519-daf620915714/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= -github.com/appleboy/gin-jwt/v2 v2.6.3/go.mod h1:MfPYA4ogzvOcVkRwAxT7quHOtQmVKDpTwxyUrC2DNw0= -github.com/appleboy/gofight/v2 v2.1.2/go.mod h1:frW+U1QZEdDgixycTj4CygQ48yLTUhplt43+Wczp3rw= -github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= -github.com/aws/aws-sdk-go v1.30.19/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= -github.com/aws/aws-sdk-go v1.35.3/go.mod h1:H7NKnBqNVzoTJpGfLrQkkD+ytBA93eiDYi/+8rV9s48= -github.com/aymerick/raymond v2.0.3-0.20180322193309-b565731e1464+incompatible/go.mod h1:osfaiScAUVup+UC9Nfq76eWqDhXlp+4UYaA8uhTBO6g= -github.com/benbjohnson/clock v1.1.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/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/blacktear23/go-proxyprotocol v0.0.0-20180807104634-af7a81e8dd0d/go.mod h1:VKt7CNAQxpFpSDz3sXyj9hY/GbVsQCr0sB3w59nE7lU= -github.com/cakturk/go-netstat v0.0.0-20200220111822-e5b49efee7a5/go.mod h1:jtAfVaU/2cu1+wdSRPWE2c1N2qeAA3K4RH9pYgqwets= -github.com/carlmjohnson/flagext v0.21.0/go.mod h1:Eenv0epIUAr4NuedNmkzI8WmBmjIxZC239XcKxYS2ac= -github.com/cenkalti/backoff/v4 v4.0.2/go.mod h1:eEew/i+1Q6OrCDZh3WiXYv3+nJwBASZ8Bog/87DQnVg= -github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= -github.com/cespare/xxhash/v2 v2.1.0/go.mod h1:dgIUBU3pDso/gPgZ1osOZ0iQf77oPR28Tjxl5dIMyVM= -github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cheggaaa/pb/v3 v3.0.8/go.mod h1:UICbiLec/XO6Hw6k+BHEtHeQFzzBH4i2/qk/ow1EJTA= -github.com/cheynewallace/tabby v1.1.1/go.mod h1:Pba/6cUL8uYqvOc9RkyvFbHGrQ9wShyrn6/S/1OYVys= -github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= -github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= -github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= -github.com/cockroachdb/datadriven v1.0.0/go.mod h1:5Ib8Meh+jk1RlHIXej6Pzevx/NLlNvQB9pmSBZErGA4= -github.com/cockroachdb/errors v1.6.1/go.mod h1:tm6FTP5G81vwJ5lC0SizQo374JNCOPrHyXGitRJoDqM= -github.com/cockroachdb/errors v1.8.1/go.mod h1:qGwQn6JmZ+oMjuLwjWzUNqblqk0xl4CVV3SQbGwK7Ac= -github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f/go.mod h1:i/u985jwjWRlyHXQbwatDASoW0RMlZ/3i9yJHE2xLkI= -github.com/cockroachdb/pebble v0.0.0-20210719141320-8c3bd06debb5/go.mod h1:JXfQr3d+XO4bL1pxGwKKo09xylQSdZ/mpZ9b2wfVcPs= -github.com/cockroachdb/redact v1.0.8/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= -github.com/cockroachdb/sentry-go v0.6.1-cockroachdb.2/go.mod h1:8BT+cPK6xvFOcRlk0R8eg+OTkcqI6baNH4xAkpiYVvQ= -github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM= -github.com/colinmarc/hdfs/v2 v2.1.1/go.mod h1:M3x+k8UKKmxtFu++uAZ0OtDU8jR3jnaZIAc6yK4Ue0c= -github.com/coocood/bbloom v0.0.0-20190830030839-58deb6228d64/go.mod h1:F86k/6c7aDUdwSUevnLpHS/3Q9hzYCE99jGk2xsHnt0= -github.com/coocood/freecache v1.1.1/go.mod h1:OKrEjkGVoxZhyWAJoeFi5BMLUJm2Tit0kpGkIr7NGYY= -github.com/coocood/rtutil v0.0.0-20190304133409-c84515f646f2/go.mod h1:7qG7YFnOALvsx6tKTNmQot8d7cGFXM9TidzvRFLWYwM= -github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= -github.com/coreos/etcd v3.3.10+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.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/corona10/goimagehash v1.0.2/go.mod h1:/l9umBhvcHQXVtQO1V6Gp1yD20STawkhRnnX0D1bvVI= -github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= -github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= -github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/cznic/golex v0.0.0-20181122101858-9c343928389c/go.mod h1:+bmmJDNmKlhWNG+gwWCkaBoTy39Fs+bzRxVBzoTQbIc= -github.com/cznic/mathutil v0.0.0-20181122101859-297441e03548/go.mod h1:e6NPNENfs9mPDVNRekM7lKScauxd5kXTr1Mfyig6TDM= -github.com/cznic/parser v0.0.0-20160622100904-31edd927e5b1/go.mod h1:2B43mz36vGZNZEwkWi8ayRSSUXLfjL8OkbzwW4NcPMM= -github.com/cznic/sortutil v0.0.0-20181122101858-f5f958428db8/go.mod h1:q2w6Bg5jeox1B+QkJ6Wp/+Vn0G/bo3f1uY7Fn3vivIQ= -github.com/cznic/strutil v0.0.0-20171016134553-529a34b1c186/go.mod h1:AHHPPPXTw0h6pVabbcbyGRK1DckRn7r/STdZEeIDzZc= -github.com/cznic/y v0.0.0-20170802143616-045f81c6662a/go.mod h1:1rk5VM7oSnA4vjp+hrLQ3HWHa+Y4yPCa3/CsJrcNnvs= -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/denisenkom/go-mssqldb v0.0.0-20191124224453-732737034ffd/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU= -github.com/dgraph-io/badger v1.6.0/go.mod h1:zwt7syl517jmP8s94KqSxTlM6IMsdhYy6psNgSztDR4= -github.com/dgraph-io/ristretto v0.0.1/go.mod h1:T40EBc7CJke8TkpiYfGGKAeFjSaxuFXhuXRyumBd6RE= -github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dgryski/go-farm v0.0.0-20190104051053-3adb47b1fb0f/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= -github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/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/go.mod h1:M7tiix8f0r6mKKJ3Yq/kqU1OYf3MnfmBWVbPx/yU9ko= -github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= -github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/eknkc/amber v0.0.0-20171010120322-cdade1c07385/go.mod h1:0vRUJqYpeSZifjYj7uP3BG/gKcuzL9xWVV/Y+cK33KM= -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.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= -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/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5/go.mod h1:a2zkGnVExMxdzMo3M0Hi/3sEU+cWnZpSni0O6/Yb/P0= -github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= -github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod h1:duJ4Jxv5lDcvg4QuQr0oowTf7dz4/CR8NtyCooz9HL8= -github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= -github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= -github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= -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/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/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= -github.com/form3tech-oss/jwt-go v3.2.5+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= -github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/fsouza/fake-gcs-server v1.19.0/go.mod h1:JtXHY/QzHhtyIxsNfIuQ+XgHtRb5B/w8nqbL5O8zqo0= -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/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/gzip v0.0.1/go.mod h1:fGBJBCdt6qCZuCAOwWuFhBB4OOq9EFqlo5dEaFhhu5w= -github.com/gin-contrib/sse v0.0.0-20170109093832-22d885f9ecc7/go.mod h1:VJ0WA2NBN22VlZ2dKZQPAPnyWw5XTlK1KymzLKsr59s= -github.com/gin-contrib/sse v0.0.0-20190301062529-5545eab6dad3/go.mod h1:VJ0WA2NBN22VlZ2dKZQPAPnyWw5XTlK1KymzLKsr59s= -github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= -github.com/gin-gonic/gin v1.3.0/go.mod h1:7cKuhb5qV2ggCFctp2fJQ+ErvciLZrIeoOSOm6mUr7Y= -github.com/gin-gonic/gin v1.4.0/go.mod h1:OW2EZn3DO8Ln9oIKOvM++LBO+5UPHJJDH72/q/3rZdM= -github.com/gin-gonic/gin v1.5.0/go.mod h1:Nd6IXA8m5kNZdNEHMBd93KT+mdY3+bewLgRvmCsR2Do= -github.com/go-check/check v0.0.0-20180628173108-788fd7840127/go.mod h1:9ES+weclKsC9YodN5RgxqK/VD9HM9JsCSh7rNhMZE98= -github.com/go-chi/chi v4.0.2+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= -github.com/go-echarts/go-echarts v1.0.0/go.mod h1:qbmyAb/Rl1f2w7wKba1D4LoNq4U164yO4/wedFbcWyo= -github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= -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-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -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-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= -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-openapi/jsonpointer v0.17.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= -github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= -github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/jsonreference v0.17.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= -github.com/go-openapi/jsonreference v0.19.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= -github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= -github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= -github.com/go-openapi/spec v0.19.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= -github.com/go-openapi/spec v0.19.4/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= -github.com/go-openapi/swag v0.17.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= -github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= -github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= -github.com/go-playground/locales v0.12.1/go.mod h1:IUMDtCfWo/w/mtMfIE/IG2K+Ey3ygWanZIBtBW0W2TM= -github.com/go-playground/overalls v0.0.0-20180201144345-22ec1a223b7c/go.mod h1:UqxAgEOt89sCiXlrc/ycnx00LVvUO/eS8tMUkWX4R7w= -github.com/go-playground/universal-translator v0.16.0/go.mod h1:1AnU7NaIRDWWzGEKwgtJRd2xk99HeFyHw3yid4rvQIY= -github.com/go-resty/resty/v2 v2.6.0/go.mod h1:PwvJS6hvaPkjtjNg9ph+VrSD92bi5Zq73w/BIH7cC3Q= -github.com/go-sql-driver/mysql v1.3.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= -github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= -github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= -github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE= -github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= -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= -github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= -github.com/goccy/go-graphviz v0.0.5/go.mod h1:wXVsXxmyMQU6TN3zGRttjNn3h+iCAS7xQFC6TlNvLhk= -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= -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/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= -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/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/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= -github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= -github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= -github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= -github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= -github.com/golang/protobuf v0.0.0-20180814211427-aa810b61a9c7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= -github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= -github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= -github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= -github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= -github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= -github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= -github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.2-0.20190904063534-ff6b7dc882cf/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/gomodule/redigo v1.7.1-0.20190724094224-574c33c3df38/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= -github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= -github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= -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= -github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200407044318-7d83b28da2e9/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-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/shlex v0.0.0-20181106134648-c34317bd91bf/go.mod h1:RpwtwJQFrIEPstU94h88MWPXP2ektJZ8cZ0YntAmXiE= -github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -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/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/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gorilla/handlers v1.4.2/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= -github.com/gorilla/handlers v1.5.1/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q= -github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/mux v1.7.4/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= -github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= -github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-middleware v1.1.0/go.mod h1:f5nM7jw/oeRSadq3xCzHAvxcr8HZnzsqU6ILg/0NiiE= -github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/grpc-ecosystem/grpc-gateway v1.12.1/go.mod h1:8XEsbTttt/W+VvjtQhLACqCisSPWTxCZ7sBRjU6iH9c= -github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/gtank/cryptopasta v0.0.0-20170601214702-1f550f6f2f69/go.mod h1:YLEMZOtU+AZ7dhN9T/IpGhXVGly2bvkJQ+zxj3WeVQo= -github.com/hashicorp/go-uuid v0.0.0-20180228145832-27454136f036/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -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/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/hydrogen18/memlistener v0.0.0-20141126152155-54553eb933fb/go.mod h1:qEIFzExnS6016fRpRfxrExeVn2gbClQA99gQhnIcdhE= -github.com/hypnoglow/gormzap v0.3.0/go.mod h1:5Wom8B7Jl2oK0Im9hs6KQ+Kl92w4Y7gKCrj66rhyvw0= -github.com/iancoleman/strcase v0.0.0-20191112232945-16388991a334/go.mod h1:SK73tn/9oHe+/Y0h39VT4UCxmurVJkR5NA7kMEAOgSE= -github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -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/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/jcmturner/gofork v0.0.0-20180107083740-2aebee971930/go.mod h1:MK8+TM0La+2rjBD4jE12Kj1pCCxK7d2LK/UM3ncEo0o= -github.com/jedib0t/go-pretty/v6 v6.2.2/go.mod h1:+nE9fyyHGil+PuISTCrp7avEdo6bqoMwqZnuiK2r2a0= -github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= -github.com/jinzhu/gorm v1.9.12/go.mod h1:vhTjlKSJUTWNtcbQtrMBFCxy7eXTzeCAzfL5fBZT/Qs= -github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= -github.com/jinzhu/now v1.0.1/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= -github.com/jinzhu/now v1.1.1/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= -github.com/jinzhu/now v1.1.2/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= -github.com/jmespath/go-jmespath v0.3.0/go.mod h1:9QtRXoHjLGCJ5IBSaohpXITPlowMeeYCZ7fLUTSywik= -github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= -github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= -github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= -github.com/joho/sqltocsv v0.0.0-20210428211105-a6d6801d59df/go.mod h1:mAVCUAYtW9NG31eB30umMSLKcDt6mCUWSjoSn5qBh0k= -github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= -github.com/joomcode/errorx v1.0.1/go.mod h1:kgco15ekB6cs+4Xjzo7SPeXzx38PbJzBwbnu9qfVNHQ= -github.com/json-iterator/go v1.1.5/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -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.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/ratelimit v1.0.1/go.mod h1:qapgC/Gy+xNh9UxzV13HGGl/6UXNN+ct+vwSgWNm/qk= -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= -github.com/kataras/iris/v12 v12.0.1/go.mod h1:udK4vLQKkdDqMGJJVd/msuMtN6hpYJhg/lSzuxjhO+U= -github.com/kataras/neffos v0.0.10/go.mod h1:ZYmJC07hQPW67eKuzlfY7SO3bC0mw83A3j6im82hfqw= -github.com/kataras/pio v0.0.0-20190103105442-ea782b38602d/go.mod h1:NV88laa9UiiDuX9AhMbDPkGYSPugBOV6yTZB1l2K9Z0= -github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= -github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= -github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= -github.com/klauspost/compress v1.9.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= -github.com/klauspost/compress v1.9.5/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= -github.com/klauspost/compress v1.9.7/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= -github.com/klauspost/compress v1.10.5/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= -github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= -github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= -github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/konsorten/go-windows-terminal-sequences v1.0.3/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= -github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= -github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= -github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/labstack/echo/v4 v4.1.11/go.mod h1:i541M3Fj6f76NZtHSj7TXnyM8n2gaodfvfxNnFqi74g= -github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= -github.com/leodido/go-urn v1.1.0/go.mod h1:+cyI34gQWZcE1eQU7NVgKkkzdXDQHr1dBMtdAPozLkw= -github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -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.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-isatty v0.0.4/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.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= -github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= -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-shellwords v1.0.3/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= -github.com/mattn/go-shellwords v1.0.12/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y= -github.com/mattn/go-sqlite3 v1.14.5/go.mod h1:WVKg1VTActs4Qso6iwGbiFih2UIHo0ENGwNd0Lj+XmI= -github.com/mattn/go-sqlite3 v2.0.1+incompatible/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= -github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= -github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/mediocregopher/mediocre-go-lib v0.0.0-20181029021733-cb65787f37ed/go.mod h1:dSsfyI2zABAdhcbvkXqgxOxrCsbYeHCPgrZkku60dSg= -github.com/mediocregopher/radix/v3 v3.3.0/go.mod h1:EmfVyvspXz1uZEyPBMyGK+kjWiKQGvsUt6O3Pj+LDCQ= -github.com/mgechev/dots v0.0.0-20190921121421-c36f7dcfbb81/go.mod h1:KQ7+USdGKfpPjXk4Ga+5XxQM4Lm4e3gAogrreFAYpOg= -github.com/mgechev/revive v1.0.2/go.mod h1:rb0dQy1LVAxW9SWy5R3LPUjevzUbUS316U5MFySA2lo= -github.com/microcosm-cc/bluemonday v1.0.2/go.mod h1:iVP4YcDBq+n/5fb23BhYFvIMq/leAFZyRl6bYmGDlGc= -github.com/minio/sio v0.3.0/go.mod h1:8b0yPp2avGThviy/+OCJBI6OMpvxoUuiLvE6F1lebhw= -github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modocache/gover v0.0.0-20171022184752-b58185e213c5/go.mod h1:caMODM3PzxT8aQXRPkAt8xlV/e7d7w8GM5g0fa5F0D8= -github.com/montanaflynn/stats v0.5.0/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= -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/nats-io/nats.go v1.8.1/go.mod h1:BrFz9vVn0fU3AcH9Vn4Kd7W0NpJ651tD5omQ3M8LwxM= -github.com/nats-io/nkeys v0.0.2/go.mod h1:dab7URMsZm6Z/jp9Z5UGa87Uutgc2mVpXLC4B7TDb/4= -github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= -github.com/ncw/directio v1.0.4/go.mod h1:CKGdcN7StAaqjT7Qack3lAXeX4pjnyc46YeqZH1yWVY= -github.com/nfnt/resize v0.0.0-20160724205520-891127d8d1b5/go.mod h1:jpp1/29i3P1S/RLdc7JQKbRpFeM1dOBd8T9ki5s+AY8= -github.com/ngaut/pools v0.0.0-20180318154953-b7bc8c42aac7/go.mod h1:iWMfgwqYW+e8n5lC/jjNEhwcjbRDpl5NT7n2h+4UNcI= -github.com/ngaut/sync2 v0.0.0-20141008032647-7a24ed77b2ef/go.mod h1:7WjlapSfwQyo6LNmIvEWzsW1hbBQfpUO4JWnuQRmva8= -github.com/nicksnyder/go-i18n v1.10.0/go.mod h1:HrK7VCrbOvQoUAQ7Vpy7i87N7JZZZ7R2xBGjv0j365Q= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= -github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= -github.com/oleiade/reflections v1.0.1/go.mod h1:rdFxbxq4QXVZWj0F+e9jqjDkc7dbp97vkRixKo2JR60= -github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= -github.com/olekukonko/tablewriter v0.0.4/go.mod h1:zq6QwlOf5SlnkVbMSr5EoBv3636FWnp+qbPhuoO21uA= -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/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/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= -github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/pascaldekloe/name v0.0.0-20180628100202-0fd16699aae1/go.mod h1:eD5JxqMiuNYyFNmyY9rkJ/slN8y59oEu4Ei7F8OoKWQ= -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/pelletier/go-toml v1.3.0/go.mod h1:PN7xzY2wHTK0K9p34ErDQMlFxa51Fk0OUruD3k1mMwo= -github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= -github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2/go.mod h1:iIss55rKnNBTvrwdmkUpLnDpZoAHvWaiq5+iMmen4AE= -github.com/phf/go-queue v0.0.0-20170504031614-9abe38d0371d/go.mod h1:lXfE4PvvTW5xOjO6Mba8zDPyw8M93B6AQ7frTGnMlA8= -github.com/pingcap/badger v1.5.1-0.20210831093107-2f6cb8008145/go.mod h1:LyrqUOHZrUDf9oGi1yoz1+qw9ckSIhQb5eMa1acOLNQ= -github.com/pingcap/check v0.0.0-20190102082844-67f458068fc8/go.mod h1:B1+S9LNcuMyLH/4HMTViQOJevkGiik3wW2AN9zb2fNQ= -github.com/pingcap/check v0.0.0-20191107115940-caf2b9e6ccf4/go.mod h1:PYMCGwN0JHjoqGr3HrZoD+b8Tgx8bKnArhSq8YVzUMc= -github.com/pingcap/check v0.0.0-20191216031241-8a5a85928f12/go.mod h1:PYMCGwN0JHjoqGr3HrZoD+b8Tgx8bKnArhSq8YVzUMc= -github.com/pingcap/check v0.0.0-20200212061837-5e12011dc712/go.mod h1:PYMCGwN0JHjoqGr3HrZoD+b8Tgx8bKnArhSq8YVzUMc= -github.com/pingcap/errcode v0.3.0/go.mod h1:4b2X8xSqxIroj/IZ9MX/VGZhAwc11wB9wRIzHvz6SeM= -github.com/pingcap/errors v0.11.0/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= -github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= -github.com/pingcap/errors v0.11.5-0.20190809092503-95897b64e011/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= -github.com/pingcap/errors v0.11.5-0.20200917111840-a15ef68f753d/go.mod h1:g4vx//d6VakjJ0mk7iLBlKA8LFavV/sAVINT/1PFxeQ= -github.com/pingcap/errors v0.11.5-0.20201029093017-5a7df2af2ac7/go.mod h1:G7x87le1poQzLB/TqvTJI2ILrSgobnq4Ut7luOwvfvI= -github.com/pingcap/errors v0.11.5-0.20201126102027-b0a155152ca3/go.mod h1:G7x87le1poQzLB/TqvTJI2ILrSgobnq4Ut7luOwvfvI= -github.com/pingcap/errors v0.11.5-0.20210425183316-da1aaba5fb63/go.mod h1:X2r9ueLEUZgtx2cIogM0v4Zj5uvvzhuuiu7Pn8HzMPg= -github.com/pingcap/errors v0.11.5-0.20211224045212-9687c2b0f87c/go.mod h1:X2r9ueLEUZgtx2cIogM0v4Zj5uvvzhuuiu7Pn8HzMPg= -github.com/pingcap/failpoint v0.0.0-20191029060244-12f4ac2fd11d/go.mod h1:DNS3Qg7bEDhU6EXNHF+XSv/PGznQaMJ5FWvctpm6pQI= -github.com/pingcap/failpoint v0.0.0-20200702092429-9f69995143ce/go.mod h1:w4PEZ5y16LeofeeGwdgZB4ddv9bLyDuIX+ljstgKZyk= -github.com/pingcap/failpoint v0.0.0-20210316064728-7acb0f0a3dfd/go.mod h1:IVF+ijPSMZVtx2oIqxAg7ur6EyixtTYfOHwpfmlhqI4= -github.com/pingcap/fn v0.0.0-20200306044125-d5540d389059/go.mod h1:fMRU1BA1y+r89AxUoaAar4JjrhUkVDt0o0Np6V8XbDQ= -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-20200411081810-b85805c9476c/go.mod h1:IOdRDPLyda8GX2hE/jO7gqaCV/PNFh8BZQCQZXfIOqI= -github.com/pingcap/kvproto v0.0.0-20210219064844-c1844a4775d6/go.mod h1:IOdRDPLyda8GX2hE/jO7gqaCV/PNFh8BZQCQZXfIOqI= -github.com/pingcap/kvproto v0.0.0-20210805052247-76981389e818/go.mod h1:IOdRDPLyda8GX2hE/jO7gqaCV/PNFh8BZQCQZXfIOqI= -github.com/pingcap/kvproto v0.0.0-20210806074406-317f69fb54b4/go.mod h1:IOdRDPLyda8GX2hE/jO7gqaCV/PNFh8BZQCQZXfIOqI= -github.com/pingcap/kvproto v0.0.0-20210819164333-bd5706b9d9f2/go.mod h1:IOdRDPLyda8GX2hE/jO7gqaCV/PNFh8BZQCQZXfIOqI= -github.com/pingcap/kvproto v0.0.0-20211109071446-a8b4d34474bc/go.mod h1:IOdRDPLyda8GX2hE/jO7gqaCV/PNFh8BZQCQZXfIOqI= -github.com/pingcap/kvproto v0.0.0-20211122024046-03abd340988f/go.mod h1:IOdRDPLyda8GX2hE/jO7gqaCV/PNFh8BZQCQZXfIOqI= -github.com/pingcap/kvproto v0.0.0-20211207042851-78a55fb8e69c/go.mod h1:IOdRDPLyda8GX2hE/jO7gqaCV/PNFh8BZQCQZXfIOqI= -github.com/pingcap/log v0.0.0-20191012051959-b742a5d432e9/go.mod h1:4rbK1p9ILyIfb6hU7OG2CiWSqMXnp3JMbiaVJ6mvoY8= -github.com/pingcap/log v0.0.0-20200511115504-543df19646ad/go.mod h1:4rbK1p9ILyIfb6hU7OG2CiWSqMXnp3JMbiaVJ6mvoY8= -github.com/pingcap/log v0.0.0-20201112100606-8f1e84a3abc8/go.mod h1:4rbK1p9ILyIfb6hU7OG2CiWSqMXnp3JMbiaVJ6mvoY8= -github.com/pingcap/log v0.0.0-20210317133921-96f4fcab92a4/go.mod h1:4rbK1p9ILyIfb6hU7OG2CiWSqMXnp3JMbiaVJ6mvoY8= -github.com/pingcap/log v0.0.0-20210625125904-98ed8e2eb1c7/go.mod h1:8AanEdAHATuRurdGxZXBz0At+9avep+ub7U1AGYLIMM= -github.com/pingcap/log v0.0.0-20210906054005-afc726e70354 h1:SvWCbCPh1YeHd9yQLksvJYAgft6wLTY1aNG81tpyscQ= -github.com/pingcap/log v0.0.0-20210906054005-afc726e70354/go.mod h1:DWQW5jICDR7UJh4HtxXSM20Churx4CQL0fwL/SoOSA4= -github.com/pingcap/parser v0.0.0-20210525032559-c37778aff307/go.mod h1:xZC8I7bug4GJ5KtHhgAikjTfU4kBv1Sbo3Pf1MZ6lVw= -github.com/pingcap/sysutil v0.0.0-20200206130906-2bfa6dc40bcd/go.mod h1:EB/852NMQ+aRKioCpToQ94Wl7fktV+FNnxf3CX/TTXI= -github.com/pingcap/sysutil v0.0.0-20210315073920-cc0985d983a3/go.mod h1:tckvA041UWP+NqYzrJ3fMgC/Hw9wnmQ/tUkp/JaHly8= -github.com/pingcap/sysutil v0.0.0-20210730114356-fcd8a63f68c5/go.mod h1:XsOaV712rUk63aOEKYP9PhXTIE3FMNHmC2r1wX5wElY= -github.com/pingcap/sysutil v0.0.0-20211208032423-041a72e5860d/go.mod h1:7j18ezaWTao2LHOyMlsc2Dg1vW+mDY9dEbPzVyOlaeM= -github.com/pingcap/tidb-dashboard v0.0.0-20210312062513-eef5d6404638/go.mod h1:OzFN8H0EDMMqeulPhPMw2i2JaiZWOKFQ7zdRPhENNgo= -github.com/pingcap/tidb-dashboard v0.0.0-20210716172320-2226872e3296/go.mod h1:OCXbZTBTIMRcIt0jFsuCakZP+goYRv6IjawKbwLS2TQ= -github.com/pingcap/tidb-dashboard v0.0.0-20211008050453-a25c25809529/go.mod h1:OCXbZTBTIMRcIt0jFsuCakZP+goYRv6IjawKbwLS2TQ= -github.com/pingcap/tidb-dashboard v0.0.0-20211107164327-80363dfbe884/go.mod h1:OCXbZTBTIMRcIt0jFsuCakZP+goYRv6IjawKbwLS2TQ= -github.com/pingcap/tidb-tools v5.0.3+incompatible/go.mod h1:XGdcy9+yqlDSEMTpOXnwf3hiTeqrV6MN/u1se9N8yIM= -github.com/pingcap/tidb-tools v5.2.2-0.20211019062242-37a8bef2fa17+incompatible/go.mod h1:XGdcy9+yqlDSEMTpOXnwf3hiTeqrV6MN/u1se9N8yIM= -github.com/pingcap/tipb v0.0.0-20210802080519-94b831c6db55/go.mod h1:A7mrd7WHBl1o63LE2bIBGEJMTNWXqhgmYiOvMLxozfs= -github.com/pingcap/tipb v0.0.0-20220107024056-3b91949a18a7/go.mod h1:A7mrd7WHBl1o63LE2bIBGEJMTNWXqhgmYiOvMLxozfs= -github.com/pkg/browser v0.0.0-20180916011732-0a3d74bf9ce4/go.mod h1:4OwLy04Bl9Ef3GJJCoec+30X3LQs/0/m4HFRt/2LUSA= -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/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= -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/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/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= -github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= -github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= -github.com/prometheus/client_golang v1.2.1/go.mod h1:XMU6Z2MjaRKVu/dC1qupJI9SiNkDYzz3xecMgSW/F+U= -github.com/prometheus/client_golang v1.5.1/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= -github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/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.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -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.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= -github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= -github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/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.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= -github.com/prometheus/procfs v0.0.5/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= -github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= -github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= -github.com/remyoudompheng/bigfft v0.0.0-20190728182440-6a916e37a237/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= -github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= -github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= -github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= -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/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= -github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= -github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -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/sergi/go-diff v1.0.1-0.20180205163309-da645544ed44/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= -github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= -github.com/shirou/gopsutil v2.19.10+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= -github.com/shirou/gopsutil v3.21.2+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= -github.com/shirou/gopsutil v3.21.3+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= -github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4/go.mod h1:qsXQc7+bwAM3Q1u/4XEfrquwF8Lw7D7y5cD8CuHnfIc= -github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg= -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-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.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= -github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -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/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= -github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= -github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= -github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= -github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/stretchr/testify v1.6.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/swaggo/files v0.0.0-20190704085106-630677cd5c14/go.mod h1:gxQT6pBGRuIGunNf/+tSOB5OHvguWi8Tbt82WOkf35E= -github.com/swaggo/gin-swagger v1.2.0/go.mod h1:qlH2+W7zXGZkczuL+r2nEBR2JTT+/lX05Nn6vPhc7OI= -github.com/swaggo/http-swagger v0.0.0-20200308142732-58ac5e232fba/go.mod h1:O1lAbCgAAX/KZ80LM/OXwtWFI/5TvZlwxSg8Cq08PV0= -github.com/swaggo/swag v1.5.1/go.mod h1:1Bl9F/ZBpVWh22nY0zmYyASPO1lI/zIwRDrpZU+tv8Y= -github.com/swaggo/swag v1.6.3/go.mod h1:wcc83tB4Mb2aNiL/HP4MFeQdpHUrca+Rp/DRNgWAUio= -github.com/swaggo/swag v1.6.6-0.20200529100950-7c765ddd0476/go.mod h1:xDhTyuFIujYiN3DKWC/H/83xcfHp+UE/IzWWampG7Zc= -github.com/syndtr/goleveldb v1.0.1-0.20190318030020-c3a204f8e965/go.mod h1:9OrXJhf154huy1nPWmuSrkgjPUtUNhA+Zmy+6AESzuA= -github.com/thoas/go-funk v0.7.0/go.mod h1:+IWnUfUmFO1+WVYQWQtIJHeRRdaIyyYglZN7xzUPe4Q= -github.com/thoas/go-funk v0.8.0/go.mod h1:+IWnUfUmFO1+WVYQWQtIJHeRRdaIyyYglZN7xzUPe4Q= -github.com/tiancaiamao/appdash v0.0.0-20181126055449-889f96f722a2/go.mod h1:2PfKggNGDuadAa0LElHrByyrz4JPZ9fFx6Gs7nx7ZZU= -github.com/tidwall/gjson v1.3.5/go.mod h1:P256ACg0Mn+j1RXIDXoss50DeIABTYK1PULOJHhxOls= -github.com/tidwall/match v1.0.1/go.mod h1:LujAq0jyVjBy028G1WhWfIzbpQfMO8bBZ6Tyb0+pL9E= -github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= -github.com/tikv/client-go/v2 v2.0.0-alpha.0.20210926100628-3cc2459779ca/go.mod h1:KwtZXt0JD+bP9bWW2ka0ir3Wp3oTEfZUTh22bs2sI4o= -github.com/tikv/client-go/v2 v2.0.0-rc.0.20211229051614-62d6b4a2e8f7/go.mod h1:wRuh+W35daKTiYBld0oBlT6PSkzEVr+pB/vChzJZk+8= -github.com/tikv/pd v1.1.0-beta.0.20210323121136-78679e5e209d/go.mod h1:Jw9KG11C/23Rr7DW4XWQ7H5xOgGZo6DFL1OKAF4+Igw= -github.com/tikv/pd v1.1.0-beta.0.20210818082359-acba1da0018d/go.mod h1:rammPjeZgpvfrQRPkijcx8tlxF1XM5+m6kRXrkDzCAA= -github.com/tikv/pd v1.1.0-beta.0.20211029083450-e65f0c55b6ae/go.mod h1:varH0IE0jJ9E9WN2Ei/N6pajMlPkcXdDEf7f5mmsUVQ= -github.com/tikv/pd v1.1.0-beta.0.20211118054146-02848d2660ee/go.mod h1:lRbwxBAhnTQR5vqbTzeI/Bj62bD2OvYYuFezo2vrmeI= -github.com/tklauser/go-sysconf v0.3.4/go.mod h1:Cl2c8ZRWfHD5IrfHo9VN+FX9kCFjIOyVklgXycLB6ek= -github.com/tklauser/numcpus v0.2.1/go.mod h1:9aU+wOc6WjUIZEwWMP62PL/41d65P+iks1gBkr4QyP8= -github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/tmc/grpc-websocket-proxy v0.0.0-20200427203606-3cfed13b9966/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/twmb/murmur3 v1.1.3/go.mod h1:Qq/R7NUyOfr65zD+6Q5IHKsJLwP7exErjN6lyyq3OSQ= -github.com/uber/jaeger-client-go v2.22.1+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= -github.com/uber/jaeger-lib v2.4.1+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U= -github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= -github.com/ugorji/go v1.1.5-pre/go.mod h1:FwP/aQVg39TXzItUBMwnWp9T9gPQnXw4Poh4/oBQZ/0= -github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= -github.com/ugorji/go/codec v0.0.0-20181022190402-e5e69e061d4f/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= -github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= -github.com/ugorji/go/codec v1.1.5-pre/go.mod h1:tULtS6Gy1AE1yCENaw4Vb//HLH5njI2tfCQDUqRd8fI= -github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= -github.com/unrolled/render v1.0.1/go.mod h1:gN9T0NhL4Bfbwu8ann7Ry/TGHYfosul+J0obPf6NBdM= -github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= -github.com/urfave/cli/v2 v2.1.1/go.mod h1:SE9GqnLQmjVa0iPEY0f1w3ygNIYcIJ0OKPMoW2caLfQ= -github.com/urfave/negroni v0.3.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4= -github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4= -github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= -github.com/valyala/fasthttp v1.6.0/go.mod h1:FstJa9V+Pj9vQ7OJie2qMHdwemEDaDiSdBnvPM1Su9w= -github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= -github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio= -github.com/vmihailenco/msgpack/v4 v4.3.11/go.mod h1:gborTTJjAo/GWTqqRjrLCn9pgNN+NXzzngzBKDPIqw4= -github.com/vmihailenco/msgpack/v5 v5.0.0-beta.1/go.mod h1:xlngVLeyQ/Qi05oQxhQ+oTuqa03RjMwMfk/7/TCs+QI= -github.com/vmihailenco/tagparser v0.1.1/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI= -github.com/wangjohn/quickselect v0.0.0-20161129230411-ed8402a42d5f/go.mod h1:8sdOQnirw1PrcnTJYkmW1iOHtUmblMmGdUOHyWYycLI= -github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= -github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= -github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/xitongsys/parquet-go v1.5.1/go.mod h1:xUxwM8ELydxh4edHGegYq1pA8NnMKDx0K/GyB0o2bww= -github.com/xitongsys/parquet-go v1.5.5-0.20201110004701-b09c49d6d457/go.mod h1:pheqtXeHQFzxJk45lRQ0UIGIivKnLXvialZSFWs81A8= -github.com/xitongsys/parquet-go-source v0.0.0-20190524061010-2b72cbee77d5/go.mod h1:xxCx7Wpym/3QCo6JhujJX51dzSXrwmb0oH6FQb39SEA= -github.com/xitongsys/parquet-go-source v0.0.0-20200817004010-026bad9b25d0/go.mod h1:HYhIKsdns7xz80OgkbgJYrtQY7FjHWHKH6cvN7+czGE= -github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= -github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0/go.mod h1:/LWChgwKmvncFJFHJ7Gvn9wZArjbV5/FppcK2fKk/tI= -github.com/yookoala/realpath v1.0.0/go.mod h1:gJJMA9wuX7AcqLy1+ffPatSCySA1FQ2S8Ya9AIoYBpE= -github.com/yudai/gojsondiff v1.0.0/go.mod h1:AY32+k2cwILAkW1fbgxQ5mUmMiZFgLIV+FBNExI05xg= -github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82/go.mod h1:lgjkn3NuSvDfVJdfcVVdX+jpBxNmX4rDAzaS45IcYoM= -github.com/yudai/pp v2.0.1+incompatible/go.mod h1:PuxR/8QJ7cyCkFp/aUDS+JY727OFEZkTdatxwunjIkc= -github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= -go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= -go.etcd.io/etcd v0.5.0-alpha.5.0.20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= -go.etcd.io/etcd v0.5.0-alpha.5.0.20200824191128-ae9734ed278b/go.mod h1:yVHk9ub3CSBatqGNg7GRmsnfLWtoW60w4eDYfh7vHDg= -go.etcd.io/etcd v0.5.0-alpha.5.0.20210512015243-d19fbe541bf9/go.mod h1:q+i20RPAmay+xq8LJ3VMOhXCNk4YCk3V7QP91meFavw= -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= -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.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= -go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= -go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -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= -go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= -go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= -go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= -go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/automaxprocs v1.4.0/go.mod h1:/mTEdr7LvHhs0v7mjdxDreTz1OG5zdZGqgOnhWiR/+Q= -go.uber.org/dig v1.8.0/go.mod h1:X34SnWGr8Fyla9zQNO2GSO2D+TIuqB14OS8JhYocIyw= -go.uber.org/fx v1.10.0/go.mod h1:vLRicqpG/qQEzno4SYU86iCwfT95EZza+Eba0ItuxqY= -go.uber.org/goleak v0.10.0/go.mod h1:VCZuO8V8mFPlL0F5J5GK1rtHV3DrFcQ1R8ryq7FK0aI= -go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= -go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= -go.uber.org/goleak v1.1.11 h1:wy28qYRKZgnJTxGxvye5/wgWr1EKjmUDGYox5mGlRlI= -go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= -go.uber.org/goleak v1.1.12 h1:gZAh5/EyT/HQwlpkCy6wTpqfH9H8Lz8zbm3dZh+OyzA= -go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= -go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= -go.uber.org/multierr v1.4.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= -go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= -go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -go.uber.org/multierr v1.7.0 h1:zaiO/rmgFjbmCXdSYJWQcdvOCsthmdaHfr3Gm2Kx4Ec= -go.uber.org/multierr v1.7.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak= -go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= -go.uber.org/zap v1.8.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go.uber.org/zap v1.12.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= -go.uber.org/zap v1.15.0/go.mod h1:Mb2vm2krFEG5DV0W9qcHBYFtp/Wku1cvYaqPsS/WYfc= -go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ= -go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= -go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= -go.uber.org/zap v1.19.1 h1:ue41HOKd1vGURxrmeKIgELGb3jPW9DMUDGtsinblHwI= -go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI= -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-20181203042331-505ab145d0a9/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-20190513172903-22d7a77e9e5f/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191205180655-e7c4368fe9dd/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200204104054-c9f3fb736b72/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -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-20181106170214-d68db9428509/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= -golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= -golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= -golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= -golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20200513190911-00229845015e/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= -golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= -golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= -golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20200119044424-58c23975cae1/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= -golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= -golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= -golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= -golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-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-20181114220301-adae6a3d119a/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-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-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= -golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190611141213-3f473d35a33a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191002035440-2ec189313ef0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20201010224723-4f7140c49acb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= -golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210610132358-84b48f89b13b/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -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-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -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= -golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180816055513-1c9583448a9c/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-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-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-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181228144115-9a3f9b0469bb/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-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= -golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190610200419-93c9922d18ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191010194322-b09406accb47/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210217105451-b926d437f341/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -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-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210831042530-f4d43177bf5e/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= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -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.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.5/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/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -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= -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-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= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190327201419-c70d86f8b7cf/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190524210228-3d17549cdc6b/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190606050223-4d9ae51c2468/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190611222205-d73e1c7e250b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191030062658-86caa796c7ab/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191107010934-f79515f33823/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191114200427-caa0b0f7d508/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200225230052-807dcd883420/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200527183253-8e7acdbce89d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201125231158-b5590deeca9b/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210112230658-8b4aab62c064/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= -golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.5 h1:ouewzE6p+/VEB31YYnTbEJdi8pFqKp4P4n85vwo3DHA= -golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.8/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= -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= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= -gonum.org/v1/gonum v0.0.0-20181121035319-3f7ecaa7e8ca/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= -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.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= -google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -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.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= -google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= -google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= -google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= -google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= -google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= -google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= -google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= -google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= -google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= -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= -google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= -google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/genproto v0.0.0-20180518175338-11a468237815/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20181004005441-af9cb2a35e7f/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20190927181202-20e1ac93f88c/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= -google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -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-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= -google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= -google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= -google.golang.org/genproto v0.0.0-20210825212027-de86158e7fda/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -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.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= -google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.24.0/go.mod h1:XDChyiUovWa60DnaeDeZmSW86xtLtjtZbwvSiRnRtcA= -google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= -google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.1/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.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= -google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= -google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= -google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= -google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= -google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= -google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= -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= -gopkg.in/alecthomas/gometalinter.v2 v2.0.12/go.mod h1:NDRytsqEZyolNuAgTzJkZMkSQM7FIKyzVzGhjB/qfYo= -gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= -gopkg.in/alecthomas/kingpin.v3-unstable v3.0.0-20180810215634-df19058c872c/go.mod h1:3HH7i1SgMqlzxCcBmUHW657sD4Kvv9sC3HpL3YukzwA= -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= -gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= -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/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/go-playground/validator.v9 v9.29.1/go.mod h1:+c9/zcJMFNgbLvly1L1V+PpxWdVbfP1avr/N00E2vyQ= -gopkg.in/jcmturner/aescts.v1 v1.0.1/go.mod h1:nsR8qBOg+OucoIW+WMhB3GspUQXq9XorLnQb9XtvcOo= -gopkg.in/jcmturner/dnsutils.v1 v1.0.1/go.mod h1:m3v+5svpVOhtFAP/wSz+yzh4Mc0Fg7eRhxkJMWSIz9Q= -gopkg.in/jcmturner/goidentity.v3 v3.0.0/go.mod h1:oG2kH0IvSYNIu80dVAyu/yoefjq1mNfM5bm88whjWx4= -gopkg.in/jcmturner/gokrb5.v7 v7.3.0/go.mod h1:l8VISx+WGYp+Fp7KRbsiUuXTTOnxIc3Tuvyavf11/WM= -gopkg.in/jcmturner/rpc.v1 v1.1.0/go.mod h1:YIdkC4XfD6GXbzje11McwsDuOlZQSb9W4vfLvuNnlv8= -gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= -gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8= -gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= -gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= -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= -gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gorm.io/driver/mysql v1.0.6/go.mod h1:KdrTanmfLPPyAOeYGyG+UpDys7/7eeWT1zCq+oekYnU= -gorm.io/driver/sqlite v1.1.4/go.mod h1:mJCeTFr7+crvS+TRnWc5Z3UvwxUN1BGBLMrf5LA9DYw= -gorm.io/gorm v1.20.7/go.mod h1:0HFTzE/SqkGTzK6TlDPPQbAYCluiVvhzoA1+aVyzenw= -gorm.io/gorm v1.21.9/go.mod h1:F+OptMscr0P2F2qU97WT1WimdH9GaQPoDW7AYd5i2Y0= -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= -honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.2.0/go.mod h1:lPVVZ2BS5TfnjLyizF7o7hv7j9/L+8cZY2hLyjP9cGY= -k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= -modernc.org/fileutil v1.0.0/go.mod h1:JHsWpkrk/CnVV1H/eGlFf85BEpfkrp56ro8nojIq9Q8= -modernc.org/golex v1.0.1/go.mod h1:QCA53QtsT1NdGkaZZkF5ezFwk4IXh4BGNafAARTC254= -modernc.org/lex v1.0.0/go.mod h1:G6rxMTy3cH2iA0iXL/HRRv4Znu8MK4higxph/lE7ypk= -modernc.org/lexer v1.0.0/go.mod h1:F/Dld0YKYdZCLQ7bD0USbWL4YKCyTDRDHiDTOs0q0vk= -modernc.org/mathutil v1.0.0/go.mod h1:wU0vUrJsVWBZ4P6e7xtFJEhFSNsfRLJ8H458uRjg03k= -modernc.org/mathutil v1.2.2/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= -modernc.org/mathutil v1.4.1/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= -modernc.org/parser v1.0.0/go.mod h1:H20AntYJ2cHHL6MHthJ8LZzXCdDCHMWt1KZXtIMjejA= -modernc.org/parser v1.0.2/go.mod h1:TXNq3HABP3HMaqLK7brD1fLA/LfN0KS6JxZn71QdDqs= -modernc.org/scanner v1.0.1/go.mod h1:OIzD2ZtjYk6yTuyqZr57FmifbM9fIH74SumloSsajuE= -modernc.org/sortutil v1.0.0/go.mod h1:1QO0q8IlIlmjBIwm6t/7sof874+xCfZouyqZMLIAtxM= -modernc.org/strutil v1.0.0/go.mod h1:lstksw84oURvj9y3tn8lGvRxyRC1S2+g5uuIzNfIOBs= -modernc.org/strutil v1.1.0/go.mod h1:lstksw84oURvj9y3tn8lGvRxyRC1S2+g5uuIzNfIOBs= -modernc.org/y v1.0.1/go.mod h1:Ho86I+LVHEI+LYXoUKlmOMAM1JTXOCfj8qi1T8PsClE= -moul.io/zapgorm2 v1.1.0/go.mod h1:emRfKjNqSzVj5lcgasBdovIXY1jSOwFz2GQZn1Rddks= -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/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= -sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= -sourcegraph.com/sourcegraph/appdash-data v0.0.0-20151005221446-73f23eafcf67/go.mod h1:L5q+DGLGOQFpo1snNEkLOJT2d1YTW66rWNzatr3He1k= diff --git a/tests/realtikvtest/BUILD.bazel b/tests/realtikvtest/BUILD.bazel new file mode 100644 index 0000000000000..fce9eeafed557 --- /dev/null +++ b/tests/realtikvtest/BUILD.bazel @@ -0,0 +1,24 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "realtikvtest", + srcs = ["testkit.go"], + importpath = "github.com/pingcap/tidb/tests/realtikvtest", + visibility = ["//visibility:public"], + deps = [ + "//config", + "//domain", + "//kv", + "//session", + "//store/driver", + "//store/mockstore", + "//testkit/testmain", + "//testkit/testsetup", + "@com_github_stretchr_testify//require", + "@com_github_tikv_client_go_v2//tikv", + "@com_github_tikv_client_go_v2//txnkv/transaction", + "@io_etcd_go_etcd_client_v3//:client", + "@org_golang_google_grpc//:grpc", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/tests/realtikvtest/brietest/BUILD.bazel b/tests/realtikvtest/brietest/BUILD.bazel new file mode 100644 index 0000000000000..dc4d8f961044c --- /dev/null +++ b/tests/realtikvtest/brietest/BUILD.bazel @@ -0,0 +1,21 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_test") + +go_test( + name = "brietest_test", + srcs = [ + "backup_restore_test.go", + "binlog_test.go", + "main_test.go", + ], + deps = [ + "//config", + "//parser/mysql", + "//sessionctx/binloginfo", + "//store/mockstore/mockcopr", + "//testkit", + "//tests/realtikvtest", + "@com_github_pingcap_tipb//go-binlog", + "@com_github_stretchr_testify//require", + "@org_golang_google_grpc//:grpc", + ], +) diff --git a/tests/realtikvtest/pessimistictest/BUILD.bazel b/tests/realtikvtest/pessimistictest/BUILD.bazel new file mode 100644 index 0000000000000..4e24498c34a4f --- /dev/null +++ b/tests/realtikvtest/pessimistictest/BUILD.bazel @@ -0,0 +1,35 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_test") + +go_test( + name = "pessimistictest_test", + srcs = [ + "main_test.go", + "pessimistic_test.go", + ], + deps = [ + "//config", + "//domain", + "//kv", + "//parser", + "//parser/auth", + "//parser/model", + "//parser/mysql", + "//parser/terror", + "//session", + "//sessionctx/variable", + "//store/driver/error", + "//store/mockstore", + "//tablecodec", + "//testkit", + "//tests/realtikvtest", + "//types", + "//util/codec", + "//util/deadlockhistory", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_stretchr_testify//require", + "@com_github_tikv_client_go_v2//oracle", + "@com_github_tikv_client_go_v2//testutils", + "@com_github_tikv_client_go_v2//txnkv/transaction", + ], +) diff --git a/tests/realtikvtest/sessiontest/BUILD.bazel b/tests/realtikvtest/sessiontest/BUILD.bazel new file mode 100644 index 0000000000000..95c8ae77a9646 --- /dev/null +++ b/tests/realtikvtest/sessiontest/BUILD.bazel @@ -0,0 +1,48 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_test") + +go_test( + name = "sessiontest_test", + srcs = [ + "main_test.go", + "retry_test.go", + "session_fail_test.go", + "session_test.go", + "temporary_table_test.go", + ], + flaky = True, + shard_count = 50, + deps = [ + "//config", + "//domain", + "//errno", + "//executor", + "//infoschema", + "//kv", + "//meta/autoid", + "//parser", + "//parser/auth", + "//parser/format", + "//parser/model", + "//parser/mysql", + "//parser/terror", + "//privilege/privileges", + "//session", + "//sessionctx", + "//sessionctx/variable", + "//sessiontxn", + "//store/copr", + "//store/mockstore", + "//table/tables", + "//tablecodec", + "//testkit", + "//tests/realtikvtest", + "//types", + "//util", + "//util/memory", + "//util/sqlexec", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_stretchr_testify//require", + "@com_github_tikv_client_go_v2//tikv", + "@com_github_tikv_client_go_v2//txnkv/transaction", + ], +) diff --git a/tests/realtikvtest/sessiontest/session_test.go b/tests/realtikvtest/sessiontest/session_test.go index e3464f5cd6907..4bc983d94b40f 100644 --- a/tests/realtikvtest/sessiontest/session_test.go +++ b/tests/realtikvtest/sessiontest/session_test.go @@ -1341,6 +1341,12 @@ func TestSetTxnScope(t *testing.T) { } func TestDoDDLJobQuit(t *testing.T) { + // This is required since mock tikv does not support paging. + failpoint.Enable("github.com/pingcap/tidb/store/copr/DisablePaging", `return`) + defer func() { + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/store/copr/DisablePaging")) + }() + // test https://github.com/pingcap/tidb/issues/18714, imitate DM's use environment // use isolated store, because in below failpoint we will cancel its context store, err := mockstore.NewMockStore(mockstore.WithStoreType(mockstore.MockTiKV)) @@ -2945,6 +2951,17 @@ func TestCast(t *testing.T) { tk.MustQuery("select cast(0.5 as unsigned)") tk.MustQuery("select cast(-0.5 as signed)") tk.MustQuery("select hex(cast(0x10 as binary(2)))").Check(testkit.Rows("1000")) + + // test for issue: https://github.com/pingcap/tidb/issues/34539 + tk.MustQuery("select cast('0000-00-00' as TIME);").Check(testkit.Rows("00:00:00")) + tk.MustQuery("select cast('1234x' as TIME);").Check(testkit.Rows("00:12:34")) + tk.MustQuery("show warnings;").Check(testkit.RowsWithSep("|", "Warning|1292|Truncated incorrect time value: '1234x'")) + tk.MustQuery("select cast('a' as TIME);").Check(testkit.Rows("")) + tk.MustQuery("select cast('' as TIME);").Check(testkit.Rows("")) + tk.MustQuery("select cast('1234xxxxxxx' as TIME);").Check(testkit.Rows("00:12:34")) + tk.MustQuery("select cast('1234xxxxxxxx' as TIME);").Check(testkit.Rows("")) + tk.MustQuery("select cast('-1234xxxxxxx' as TIME);").Check(testkit.Rows("-00:12:34")) + tk.MustQuery("select cast('-1234xxxxxxxx' as TIME);").Check(testkit.Rows("")) } func TestTableInfoMeta(t *testing.T) { diff --git a/tests/realtikvtest/sessiontest/temporary_table_test.go b/tests/realtikvtest/sessiontest/temporary_table_test.go index 8dce9e42d8fe7..6eb2ceddb5d3c 100644 --- a/tests/realtikvtest/sessiontest/temporary_table_test.go +++ b/tests/realtikvtest/sessiontest/temporary_table_test.go @@ -301,22 +301,27 @@ func TestTemporaryTableInterceptor(t *testing.T) { initTxnFuncs := []func() error{ func() error { - return sessiontxn.WarmUpTxn(tk.Session()) + err := tk.Session().PrepareTxnCtx(context.TODO()) + if err == nil { + err = sessiontxn.GetTxnManager(tk.Session()).AdviseWarmup() + } + return err }, func() error { return sessiontxn.NewTxn(context.Background(), tk.Session()) }, func() error { - return tk.Session().NewStaleTxnWithStartTS(context.Background(), 0) - }, - func() error { - return tk.Session().InitTxnWithStartTS(0) + return sessiontxn.GetTxnManager(tk.Session()).EnterNewTxn(context.TODO(), &sessiontxn.EnterNewTxnRequest{ + Type: sessiontxn.EnterNewTxnWithBeginStmt, + StaleReadTS: 0, + }) }, } for _, initFunc := range initTxnFuncs { require.NoError(t, initFunc()) + require.NoError(t, sessiontxn.GetTxnManager(tk.Session()).OnStmtStart(context.TODO())) txn, err := tk.Session().Txn(true) require.NoError(t, err) diff --git a/tests/realtikvtest/statisticstest/BUILD.bazel b/tests/realtikvtest/statisticstest/BUILD.bazel new file mode 100644 index 0000000000000..0baa43e00be64 --- /dev/null +++ b/tests/realtikvtest/statisticstest/BUILD.bazel @@ -0,0 +1,15 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_test") + +go_test( + name = "statisticstest_test", + srcs = [ + "main_test.go", + "statistics_test.go", + ], + deps = [ + "//statistics/handle", + "//testkit", + "//tests/realtikvtest", + "@com_github_stretchr_testify//require", + ], +) diff --git a/tests/realtikvtest/txntest/BUILD.bazel b/tests/realtikvtest/txntest/BUILD.bazel new file mode 100644 index 0000000000000..fd7e9fbdb3753 --- /dev/null +++ b/tests/realtikvtest/txntest/BUILD.bazel @@ -0,0 +1,22 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_test") + +go_test( + name = "txntest_test", + srcs = [ + "isolation_test.go", + "main_test.go", + "txn_state_test.go", + "txn_test.go", + ], + deps = [ + "//kv", + "//parser", + "//session/txninfo", + "//testkit", + "//tests/realtikvtest", + "//types", + "//util", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_stretchr_testify//require", + ], +) diff --git a/tidb-binlog/driver/example/mysql/BUILD.bazel b/tidb-binlog/driver/example/mysql/BUILD.bazel new file mode 100644 index 0000000000000..5e56a58af65d0 --- /dev/null +++ b/tidb-binlog/driver/example/mysql/BUILD.bazel @@ -0,0 +1,26 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library") + +go_library( + name = "mysql_lib", + srcs = ["mysql.go"], + importpath = "github.com/pingcap/tidb/tidb-binlog/driver/example/mysql", + visibility = ["//visibility:private"], + deps = [ + "//parser", + "//parser/ast", + "//tidb-binlog/driver/reader", + "//tidb-binlog/proto/go-binlog", + "//types/parser_driver", + "//util/dbutil", + "@com_github_go_sql_driver_mysql//:mysql", + "@com_github_pingcap_log//:log", + "@com_github_shopify_sarama//:sarama", + "@org_uber_go_zap//:zap", + ], +) + +go_binary( + name = "mysql", + embed = [":mysql_lib"], + visibility = ["//visibility:public"], +) diff --git a/tidb-binlog/driver/example/print/BUILD.bazel b/tidb-binlog/driver/example/print/BUILD.bazel new file mode 100644 index 0000000000000..880e3bb790f6d --- /dev/null +++ b/tidb-binlog/driver/example/print/BUILD.bazel @@ -0,0 +1,20 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library") + +go_library( + name = "print_lib", + srcs = ["print.go"], + importpath = "github.com/pingcap/tidb/tidb-binlog/driver/example/print", + visibility = ["//visibility:private"], + deps = [ + "//tidb-binlog/driver/reader", + "@com_github_pingcap_log//:log", + "@com_github_shopify_sarama//:sarama", + "@org_uber_go_zap//:zap", + ], +) + +go_binary( + name = "print", + embed = [":print_lib"], + visibility = ["//visibility:public"], +) diff --git a/tidb-binlog/driver/reader/BUILD.bazel b/tidb-binlog/driver/reader/BUILD.bazel new file mode 100644 index 0000000000000..11fd71c2dec51 --- /dev/null +++ b/tidb-binlog/driver/reader/BUILD.bazel @@ -0,0 +1,29 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "reader", + srcs = [ + "offset.go", + "reader.go", + ], + importpath = "github.com/pingcap/tidb/tidb-binlog/driver/reader", + visibility = ["//visibility:public"], + deps = [ + "//tidb-binlog/proto/go-binlog", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_log//:log", + "@com_github_shopify_sarama//:sarama", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "reader_test", + srcs = ["offset_test.go"], + embed = [":reader"], + deps = [ + "//tidb-binlog/proto/go-binlog", + "@com_github_shopify_sarama//:sarama", + "@com_github_stretchr_testify//require", + ], +) diff --git a/tidb-binlog/node/BUILD.bazel b/tidb-binlog/node/BUILD.bazel new file mode 100644 index 0000000000000..4ab911cebb865 --- /dev/null +++ b/tidb-binlog/node/BUILD.bazel @@ -0,0 +1,30 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "node", + srcs = [ + "node.go", + "registry.go", + ], + importpath = "github.com/pingcap/tidb/tidb-binlog/node", + visibility = ["//visibility:public"], + deps = [ + "//util", + "//util/etcd", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_log//:log", + "@io_etcd_go_etcd_client_v3//:client", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "node_test", + srcs = ["registry_test.go"], + embed = [":node"], + deps = [ + "//util/etcd", + "@com_github_stretchr_testify//require", + "@io_etcd_go_etcd_tests_v3//integration", + ], +) diff --git a/tidb-binlog/proto/go-binlog/BUILD.bazel b/tidb-binlog/proto/go-binlog/BUILD.bazel new file mode 100644 index 0000000000000..aadd5181f9734 --- /dev/null +++ b/tidb-binlog/proto/go-binlog/BUILD.bazel @@ -0,0 +1,9 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "go-binlog", + srcs = ["secondary_binlog.pb.go"], + importpath = "github.com/pingcap/tidb/tidb-binlog/proto/go-binlog", + visibility = ["//visibility:public"], + deps = ["@com_github_golang_protobuf//proto"], +) diff --git a/tidb-binlog/pump_client/BUILD.bazel b/tidb-binlog/pump_client/BUILD.bazel new file mode 100644 index 0000000000000..9063cb7e95a07 --- /dev/null +++ b/tidb-binlog/pump_client/BUILD.bazel @@ -0,0 +1,43 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "pump_client", + srcs = [ + "client.go", + "pump.go", + "selector.go", + ], + importpath = "github.com/pingcap/tidb/tidb-binlog/pump_client", + visibility = ["//visibility:public"], + deps = [ + "//tidb-binlog/node", + "//util", + "//util/etcd", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_log//:log", + "@com_github_pingcap_tipb//go-binlog", + "@com_github_tikv_pd_client//:client", + "@io_etcd_go_etcd_api_v3//mvccpb", + "@org_golang_google_grpc//:grpc", + "@org_golang_google_grpc//codes", + "@org_golang_google_grpc//credentials", + "@org_golang_google_grpc//status", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "pump_client_test", + srcs = [ + "bench_test.go", + "client_test.go", + ], + embed = [":pump_client"], + deps = [ + "//tidb-binlog/node", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_tipb//go-binlog", + "@com_github_stretchr_testify//require", + "@org_golang_google_grpc//:grpc", + ], +) diff --git a/tidb-server/BUILD.bazel b/tidb-server/BUILD.bazel new file mode 100644 index 0000000000000..ad6526d69138e --- /dev/null +++ b/tidb-server/BUILD.bazel @@ -0,0 +1,98 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library", "go_test") + +go_library( + name = "tidb-server_lib", + srcs = ["main.go"], + importpath = "github.com/pingcap/tidb/tidb-server", + visibility = ["//visibility:private"], + deps = [ + "//bindinfo", + "//config", + "//ddl", + "//domain", + "//executor", + "//kv", + "//metrics", + "//parser/mysql", + "//parser/terror", + "//parser/types", + "//planner/core", + "//plugin", + "//privilege/privileges", + "//server", + "//session", + "//session/txninfo", + "//sessionctx/binloginfo", + "//sessionctx/variable", + "//statistics", + "//store", + "//store/driver", + "//store/mockstore", + "//store/mockstore/unistore/metrics", + "//tidb-binlog/pump_client", + "//util", + "//util/cpuprofile", + "//util/deadlockhistory", + "//util/disk", + "//util/domainutil", + "//util/kvcache", + "//util/logutil", + "//util/memory", + "//util/printer", + "//util/sem", + "//util/signal", + "//util/sys/linux", + "//util/sys/storage", + "//util/systimemon", + "//util/topsql", + "//util/versioninfo", + "@com_github_opentracing_opentracing_go//:opentracing-go", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_pingcap_log//:log", + "@com_github_prometheus_client_golang//prometheus", + "@com_github_prometheus_client_golang//prometheus/push", + "@com_github_tikv_client_go_v2//tikv", + "@com_github_tikv_client_go_v2//txnkv/transaction", + "@com_github_tikv_pd_client//:client", + "@org_uber_go_automaxprocs//maxprocs", + "@org_uber_go_zap//:zap", + ], +) + +go_binary( + name = "tidb-server", + embed = [":tidb-server_lib"], + visibility = ["//visibility:public"], + x_defs = { + "github.com/pingcap/tidb/parser/mysql.TiDBReleaseVersion": "{STABLE_TiDB_RELEASE_VERSION}", + "github.com/pingcap/tidb/util/versioninfo.TiDBBuildTS": "{STABLE_TiDB_BUILD_UTCTIME}", + "github.com/pingcap/tidb/util/versioninfo.TiDBGitHash": "{STABLE_TIDB_GIT_HASH}", + "github.com/pingcap/tidb/util/versioninfo.TiDBGitBranch": "{STABLE_TIDB_GIT_BRANCH}", + "github.com/pingcap/tidb/util/versioninfo.TiDBEdition": "{STABLE_TIDB_EDITION}", + }, +) + +go_binary( + name = "tidb-server-check", + embed = [":tidb-server_lib"], + gc_linkopts = [ + "-X", + "github.com/pingcap/tidb/config.checkBeforeDropLDFlag=1", + ], + visibility = ["//visibility:public"], +) + +go_test( + name = "tidb-server_test", + srcs = ["main_test.go"], + embed = [":tidb-server_lib"], + deps = [ + "//config", + "//parser/mysql", + "//sessionctx/variable", + "//testkit/testsetup", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/tidb-server/main.go b/tidb-server/main.go index 06e26eb2341c6..bc8795875f360 100644 --- a/tidb-server/main.go +++ b/tidb-server/main.go @@ -45,12 +45,14 @@ import ( "github.com/pingcap/tidb/privilege/privileges" "github.com/pingcap/tidb/server" "github.com/pingcap/tidb/session" + "github.com/pingcap/tidb/session/txninfo" "github.com/pingcap/tidb/sessionctx/binloginfo" "github.com/pingcap/tidb/sessionctx/variable" "github.com/pingcap/tidb/statistics" kvstore "github.com/pingcap/tidb/store" "github.com/pingcap/tidb/store/driver" "github.com/pingcap/tidb/store/mockstore" + uni_metrics "github.com/pingcap/tidb/store/mockstore/unistore/metrics" pumpcli "github.com/pingcap/tidb/tidb-binlog/pump_client" "github.com/pingcap/tidb/util" "github.com/pingcap/tidb/util/cpuprofile" @@ -284,6 +286,9 @@ func registerStores() { func registerMetrics() { metrics.RegisterMetrics() + if config.GetGlobalConfig().Store == "unistore" { + uni_metrics.RegisterMetrics() + } } func createStoreAndDomain() (kv.Storage, *domain.Domain) { @@ -554,6 +559,8 @@ func setGlobalVars() { cfg.Instance.CheckMb4ValueInUTF8.Store(cfg.CheckMb4ValueInUTF8.Load()) case "enable-collect-execution-info": cfg.Instance.EnableCollectExecutionInfo = cfg.EnableCollectExecutionInfo + case "max-server-connections": + cfg.Instance.MaxConnections = cfg.MaxServerConnections } case "log": switch oldName { @@ -697,6 +704,8 @@ func setGlobalVars() { tikv.SetStoreLivenessTimeout(t) parsertypes.TiDBStrictIntegerDisplayWidth = cfg.DeprecateIntegerDisplayWidth deadlockhistory.GlobalDeadlockHistory.Resize(cfg.PessimisticTxn.DeadlockHistoryCapacity) + txninfo.Recorder.ResizeSummaries(cfg.TrxSummary.TransactionSummaryCapacity) + txninfo.Recorder.SetMinDuration(time.Duration(cfg.TrxSummary.TransactionIDDigestMinDuration) * time.Millisecond) } func setupLog() { diff --git a/tools/check/BUILD.bazel b/tools/check/BUILD.bazel new file mode 100644 index 0000000000000..408c1bcd83b75 --- /dev/null +++ b/tools/check/BUILD.bazel @@ -0,0 +1,35 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library") + +go_library( + name = "ut_lib", + srcs = ["ut.go"], + importpath = "github.com/pingcap/tidb/tools/check", + visibility = ["//visibility:private"], + deps = [ + "@org_golang_x_tools//cover", + "@org_uber_go_automaxprocs//:automaxprocs", + ], +) + +go_library( + name = "xprog_lib", + srcs = ["xprog.go"], + importpath = "github.com/pingcap/tidb/tools/check", + visibility = ["//visibility:private"], + deps = [ + "@org_golang_x_tools//cover", + "@org_uber_go_automaxprocs//:automaxprocs", + ], +) + +go_binary( + name = "ut", + embed = [":ut_lib"], + visibility = ["//visibility:public"], +) + +go_binary( + name = "xprog", + embed = [":xprog_lib"], + visibility = ["//visibility:public"], +) diff --git a/tools/check/ut.go b/tools/check/ut.go index 920afbb9cb257..84b00d34d9e60 100644 --- a/tools/check/ut.go +++ b/tools/check/ut.go @@ -720,6 +720,7 @@ func (n *numa) runTestCase(pkg string, fn string) testResult { start = time.Now() err = cmd.Run() if err != nil { + //lint:ignore S1020 if _, ok := err.(*exec.ExitError); ok { // Retry 3 times to get rid of the weird error: switch err.Error() { @@ -875,6 +876,7 @@ func buildTestBinaryMulti(pkgs []string) error { func testBinaryExist(pkg string) (bool, error) { _, err := os.Stat(testFileFullPath(pkg)) if err != nil { + //lint:ignore S1020 if _, ok := err.(*os.PathError); ok { return false, nil } diff --git a/types/BUILD.bazel b/types/BUILD.bazel new file mode 100644 index 0000000000000..cbe5865ec3c5d --- /dev/null +++ b/types/BUILD.bazel @@ -0,0 +1,96 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "types", + srcs = [ + "binary_literal.go", + "compare.go", + "convert.go", + "core_time.go", + "datum.go", + "datum_eval.go", + "enum.go", + "errors.go", + "etc.go", + "eval_type.go", + "explain_format.go", + "field_name.go", + "field_type.go", + "field_type_builder.go", + "fsp.go", + "helper.go", + "mydecimal.go", + "overflow.go", + "set.go", + "time.go", + ], + importpath = "github.com/pingcap/tidb/types", + visibility = ["//visibility:public"], + deps = [ + "//errno", + "//parser/ast", + "//parser/charset", + "//parser/model", + "//parser/mysql", + "//parser/opcode", + "//parser/terror", + "//parser/types", + "//sessionctx/stmtctx", + "//types/json", + "//util/collate", + "//util/dbterror", + "//util/hack", + "//util/logutil", + "//util/mathutil", + "//util/parser", + "//util/stringutil", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_log//:log", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "types_test", + srcs = [ + "benchmark_test.go", + "binary_literal_test.go", + "compare_test.go", + "const_test.go", + "convert_test.go", + "core_time_test.go", + "datum_test.go", + "enum_test.go", + "errors_test.go", + "etc_test.go", + "export_test.go", + "field_type_test.go", + "format_test.go", + "fsp_test.go", + "helper_test.go", + "main_test.go", + "mydecimal_benchmark_test.go", + "mydecimal_test.go", + "overflow_test.go", + "set_test.go", + "time_test.go", + ], + embed = [":types"], + deps = [ + "//parser/charset", + "//parser/mysql", + "//parser/terror", + "//session", + "//sessionctx/stmtctx", + "//testkit", + "//testkit/testsetup", + "//types/json", + "//util/collate", + "//util/hack", + "//util/mock", + "@com_github_pingcap_errors//:errors", + "@com_github_stretchr_testify//assert", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/types/convert.go b/types/convert.go index 9433f26dbefc8..a6e33d5b2c51b 100644 --- a/types/convert.go +++ b/types/convert.go @@ -327,7 +327,7 @@ func StrToDuration(sc *stmtctx.StatementContext, str string, fsp int) (d Duratio } } - d, err = ParseDuration(sc, str, fsp) + d, _, err = ParseDuration(sc, str, fsp) if ErrTruncatedWrongVal.Equal(err) { err = sc.HandleTruncate(err) } diff --git a/types/convert_test.go b/types/convert_test.go index aed9980635b72..88a60171ed3ad 100644 --- a/types/convert_test.go +++ b/types/convert_test.go @@ -251,7 +251,7 @@ func TestConvertType(t *testing.T) { // Test Datum.ToDecimal with bad number. d := NewDatum("hello") _, err = d.ToDecimal(sc) - require.Truef(t, terror.ErrorEqual(err, ErrBadNumber), "err %v", err) + require.Truef(t, terror.ErrorEqual(err, ErrTruncatedWrongVal), "err %v", err) sc.IgnoreTruncate = true v, err = d.ToDecimal(sc) @@ -352,7 +352,7 @@ func TestConvertToString(t *testing.T) { require.NoError(t, err) testToString(t, t1, "2011-11-10 11:11:11.999999") - td, err := ParseDuration(nil, "11:11:11.999999", 6) + td, _, err := ParseDuration(nil, "11:11:11.999999", 6) require.NoError(t, err) testToString(t, td, "11:11:11.999999") @@ -819,7 +819,9 @@ func TestConvert(t *testing.T) { signedDeny(t, mysql.TypeDate, "2012-08-x", "0000-00-00") signedDeny(t, mysql.TypeDatetime, "2012-08-x", "0000-00-00 00:00:00") signedDeny(t, mysql.TypeTimestamp, "2012-08-x", "0000-00-00 00:00:00") - signedDeny(t, mysql.TypeDuration, "2012-08-x", "00:00:00") + signedDeny(t, mysql.TypeDuration, "2012-08-x", "00:20:12") + signedDeny(t, mysql.TypeDuration, "0000-00-00", "00:00:00") + signedDeny(t, mysql.TypeDuration, "1234abc", "00:12:34") // string from string signedAccept(t, mysql.TypeString, "abc", "abc") diff --git a/types/datum.go b/types/datum.go index 8bc8fddafe870..1ad86c770a01b 100644 --- a/types/datum.go +++ b/types/datum.go @@ -15,6 +15,7 @@ package types import ( + gjson "encoding/json" "fmt" "math" "sort" @@ -748,7 +749,7 @@ func (d *Datum) compareString(sc *stmtctx.StatementContext, s string, comparer c dt, err := ParseDatetime(sc, s) return d.GetMysqlTime().Compare(dt), errors.Trace(err) case KindMysqlDuration: - dur, err := ParseDuration(sc, s, MaxFsp) + dur, _, err := ParseDuration(sc, s, MaxFsp) return d.GetMysqlDuration().Compare(dur), errors.Trace(err) case KindMysqlSet: return comparer.Compare(d.GetMysqlSet().String(), s), nil @@ -795,7 +796,7 @@ func (d *Datum) compareMysqlDuration(sc *stmtctx.StatementContext, dur Duration) case KindMysqlDuration: return d.GetMysqlDuration().Compare(dur), nil case KindString, KindBytes: - dDur, err := ParseDuration(sc, d.GetString(), MaxFsp) + dDur, _, err := ParseDuration(sc, d.GetString(), MaxFsp) return dDur.Compare(dur), errors.Trace(err) default: return d.compareFloat64(sc, dur.Seconds()) @@ -1374,13 +1375,13 @@ func (d *Datum) convertToMysqlDuration(sc *stmtctx.StatementContext, target *Fie if timeNum < -MaxDuration { return ret, ErrWrongValue.GenWithStackByArgs(TimeStr, timeStr) } - t, err := ParseDuration(sc, timeStr, fsp) + t, _, err := ParseDuration(sc, timeStr, fsp) ret.SetMysqlDuration(t) if err != nil { return ret, errors.Trace(err) } case KindString, KindBytes: - t, err := ParseDuration(sc, d.GetString(), fsp) + t, _, err := ParseDuration(sc, d.GetString(), fsp) ret.SetMysqlDuration(t) if err != nil { return ret, errors.Trace(err) @@ -1391,7 +1392,7 @@ func (d *Datum) convertToMysqlDuration(sc *stmtctx.StatementContext, target *Fie if err != nil { return ret, errors.Trace(err) } - t, err := ParseDuration(sc, s, fsp) + t, _, err := ParseDuration(sc, s, fsp) ret.SetMysqlDuration(t) if err != nil { return ret, errors.Trace(err) @@ -2008,6 +2009,62 @@ func (d *Datum) MemUsage() (sum int64) { return EmptyDatumSize + int64(cap(d.b)) + int64(len(d.collation)) } +type jsonDatum struct { + K byte `json:"k"` + Decimal uint16 `json:"decimal,omitempty"` + Length uint32 `json:"length,omitempty"` + I int64 `json:"i,omitempty"` + Collation string `json:"collation,omitempty"` + B []byte `json:"b,omitempty"` + Time Time `json:"time,omitempty"` + MyDecimal *MyDecimal `json:"mydecimal,omitempty"` +} + +// MarshalJSON implements Marshaler.MarshalJSON interface. +func (d *Datum) MarshalJSON() ([]byte, error) { + jd := &jsonDatum{ + K: d.k, + Decimal: d.decimal, + Length: d.length, + I: d.i, + Collation: d.collation, + B: d.b, + } + switch d.k { + case KindMysqlTime: + jd.Time = d.GetMysqlTime() + case KindMysqlDecimal: + jd.MyDecimal = d.GetMysqlDecimal() + default: + if d.x != nil { + return nil, errors.New(fmt.Sprintf("unsupported type: %d", d.k)) + } + } + return gjson.Marshal(jd) +} + +// UnmarshalJSON implements Unmarshaler.UnmarshalJSON interface. +func (d *Datum) UnmarshalJSON(data []byte) error { + var jd jsonDatum + if err := gjson.Unmarshal(data, &jd); err != nil { + return err + } + d.k = jd.K + d.decimal = jd.Decimal + d.length = jd.Length + d.i = jd.I + d.collation = jd.Collation + d.b = jd.B + + switch jd.K { + case KindMysqlTime: + d.SetMysqlTime(jd.Time) + case KindMysqlDecimal: + d.SetMysqlDecimal(jd.MyDecimal) + } + return nil +} + func invalidConv(d *Datum, tp byte) (Datum, error) { return Datum{}, errors.Errorf("cannot convert datum from %s to type %s", KindStr(d.Kind()), TypeStr(tp)) } @@ -2335,8 +2392,8 @@ func ChangeReverseResultByUpperLowerBound( resRetType.SetType(mysql.TypeDouble) case KindMysqlDecimal: resRetType.SetType(mysql.TypeNewDecimal) - resRetType.SetFlen(int(res.GetMysqlDecimal().GetDigitsFrac() + res.GetMysqlDecimal().GetDigitsInt())) - resRetType.SetDecimal(int(res.GetMysqlDecimal().GetDigitsInt())) + resRetType.SetFlenUnderLimit(int(res.GetMysqlDecimal().GetDigitsFrac() + res.GetMysqlDecimal().GetDigitsInt())) + resRetType.SetDecimalUnderLimit(int(res.GetMysqlDecimal().GetDigitsInt())) } bound := getDatumBound(&resRetType, rType) cmp, err := d.Compare(sc, &bound, collate.GetCollator(resRetType.GetCollate())) diff --git a/types/datum_test.go b/types/datum_test.go index fbcafa9b29b04..698a69fd6b731 100644 --- a/types/datum_test.go +++ b/types/datum_test.go @@ -15,6 +15,7 @@ package types import ( + gjson "encoding/json" "fmt" "math" "reflect" @@ -22,6 +23,7 @@ import ( "testing" "time" + "github.com/pingcap/tidb/parser/charset" "github.com/pingcap/tidb/parser/mysql" "github.com/pingcap/tidb/sessionctx/stmtctx" "github.com/pingcap/tidb/types/json" @@ -96,7 +98,7 @@ func TestToBool(t *testing.T) { require.NoError(t, err) testDatumToBool(t, t1, 1) - td, err := ParseDuration(nil, "11:11:11.999999", 6) + td, _, err := ParseDuration(nil, "11:11:11.999999", 6) require.NoError(t, err) testDatumToBool(t, td, 1) @@ -139,7 +141,7 @@ func TestToInt64(t *testing.T) { require.NoError(t, err) testDatumToInt64(t, t1, int64(20111110111112)) - td, err := ParseDuration(nil, "11:11:11.999999", 6) + td, _, err := ParseDuration(nil, "11:11:11.999999", 6) require.NoError(t, err) testDatumToInt64(t, td, int64(111112)) @@ -546,6 +548,59 @@ func TestStringToMysqlBit(t *testing.T) { } } +func TestMarshalDatum(t *testing.T) { + e, err := ParseSetValue([]string{"a", "b", "c", "d", "e"}, uint64(1)) + require.NoError(t, err) + tests := []Datum{ + NewIntDatum(1), + NewUintDatum(72), + NewFloat32Datum(1.23), + NewFloat64Datum(1.23), + NewDatum(math.Inf(-1)), + NewDecimalDatum(NewDecFromStringForTest("1.2345")), + NewStringDatum("abcde"), + NewCollationStringDatum("abcde", charset.CollationBin), + NewDurationDatum(Duration{Duration: time.Duration(1)}), + NewTimeDatum(NewTime(FromGoTime(time.Date(2018, 3, 8, 16, 1, 0, 315313000, time.UTC)), mysql.TypeTimestamp, 6)), + NewBytesDatum([]byte("abcde")), + NewBinaryLiteralDatum([]byte{0x81}), + NewMysqlBitDatum(NewBinaryLiteralFromUint(0x98765432, 4)), + NewMysqlEnumDatum(Enum{Name: "a", Value: 1}), + NewCollateMysqlEnumDatum(Enum{Name: "a", Value: 1}, charset.CollationASCII), + NewMysqlSetDatum(e, charset.CollationGBKBin), + NewJSONDatum(json.CreateBinary(int64(1))), + MinNotNullDatum(), + MaxValueDatum(), + } + // Marshal the datum and then unmarshal it to see if they are equal. + for i, tt := range tests { + msg := fmt.Sprintf("failed at %dth test", i) + bytes, err := gjson.Marshal(&tt) + require.NoError(t, err, msg) + var datum Datum + err = gjson.Unmarshal(bytes, &datum) + require.NoError(t, err, msg) + require.Equal(t, tt.k, datum.k, msg) + require.Equal(t, tt.decimal, datum.decimal, msg) + require.Equal(t, tt.length, datum.length, msg) + require.Equal(t, tt.i, datum.i, msg) + require.Equal(t, tt.collation, datum.collation, msg) + require.Equal(t, tt.b, datum.b, msg) + if tt.x == nil { + require.Nil(t, datum.x, msg) + } + require.Equal(t, reflect.TypeOf(tt.x), reflect.TypeOf(datum.x), msg) + switch tt.x.(type) { + case Time: + require.Equal(t, 0, tt.x.(Time).Compare(datum.x.(Time))) + case *MyDecimal: + require.Equal(t, 0, tt.x.(*MyDecimal).Compare(datum.x.(*MyDecimal))) + default: + require.EqualValues(t, tt.x, datum.x, msg) + } + } +} + func BenchmarkCompareDatum(b *testing.B) { vals, vals1 := prepareCompareDatums() sc := new(stmtctx.StatementContext) diff --git a/types/explain_format.go b/types/explain_format.go index 0a44d0ffa583a..6c8ef6f72d546 100644 --- a/types/explain_format.go +++ b/types/explain_format.go @@ -29,6 +29,8 @@ var ( ExplainFormatVerbose = "verbose" // ExplainFormatTraditional is the same as ExplainFormatROW. ExplainFormatTraditional = "traditional" + // ExplainFormatTrueCardCost indicates the optimizer to use true cardinality to calculate the cost. + ExplainFormatTrueCardCost = "true_card_cost" // ExplainFormats stores the valid formats for explain statement, used by validator. ExplainFormats = []string{ @@ -39,5 +41,6 @@ var ( ExplainFormatROW, ExplainFormatVerbose, ExplainFormatTraditional, + ExplainFormatTrueCardCost, } ) diff --git a/types/field_type.go b/types/field_type.go index e936b1a7f8564..d7cfe3030ed56 100644 --- a/types/field_type.go +++ b/types/field_type.go @@ -301,10 +301,10 @@ func DefaultTypeForValue(value interface{}, tp *FieldType, char string, collate SetBinChsClnFlag(tp) case *MyDecimal: tp.SetType(mysql.TypeNewDecimal) - tp.SetFlen(len(x.ToString())) - tp.SetDecimal(int(x.digitsFrac)) + tp.SetFlenUnderLimit(len(x.ToString())) + tp.SetDecimalUnderLimit(int(x.digitsFrac)) // Add the length for `.`. - tp.SetFlen(tp.GetFlen() + 1) + tp.SetFlenUnderLimit(tp.GetFlen() + 1) SetBinChsClnFlag(tp) case Enum: tp.SetType(mysql.TypeEnum) diff --git a/types/json/BUILD.bazel b/types/json/BUILD.bazel new file mode 100644 index 0000000000000..0beccc50e4ce0 --- /dev/null +++ b/types/json/BUILD.bazel @@ -0,0 +1,37 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "json", + srcs = [ + "binary.go", + "binary_functions.go", + "constants.go", + "path_expr.go", + ], + importpath = "github.com/pingcap/tidb/types/json", + visibility = ["//visibility:public"], + deps = [ + "//errno", + "//parser/terror", + "//util/dbterror", + "//util/hack", + "//util/stringutil", + "@com_github_pingcap_errors//:errors", + ], +) + +go_test( + name = "json_test", + srcs = [ + "binary_functions_test.go", + "binary_test.go", + "main_test.go", + "path_expr_test.go", + ], + embed = [":json"], + deps = [ + "//testkit/testsetup", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/types/mydecimal.go b/types/mydecimal.go index c1e09808c6d20..0e2ca156a8bc4 100644 --- a/types/mydecimal.go +++ b/types/mydecimal.go @@ -15,6 +15,7 @@ package types import ( + "encoding/json" "math" "strconv" "strings" @@ -402,7 +403,7 @@ func (d *MyDecimal) FromString(str []byte) error { } if len(str) == 0 { *d = zeroMyDecimal - return ErrBadNumber + return ErrTruncatedWrongVal.GenWithStackByArgs("DECIMAL", str) } switch str[0] { case '-': @@ -430,7 +431,7 @@ func (d *MyDecimal) FromString(str []byte) error { } if digitsInt+digitsFrac == 0 { *d = zeroMyDecimal - return ErrBadNumber + return ErrTruncatedWrongVal.GenWithStackByArgs("DECIMAL", str) } wordsInt := digitsToWords(digitsInt) wordsFrac := digitsToWords(digitsFrac) @@ -1538,6 +1539,41 @@ func (d *MyDecimal) Compare(to *MyDecimal) int { return 1 } +// None of ToBin, ToFloat64, or ToString can encode MyDecimal without loss. +// So we still need a MarshalJSON/UnmarshalJSON function. +type jsonMyDecimal struct { + DigitsInt int8 + DigitsFrac int8 + ResultFrac int8 + Negative bool + WordBuf [maxWordBufLen]int32 +} + +// MarshalJSON implements Marshaler.MarshalJSON interface. +func (d *MyDecimal) MarshalJSON() ([]byte, error) { + var r jsonMyDecimal + r.DigitsInt = d.digitsInt + r.DigitsFrac = d.digitsFrac + r.ResultFrac = d.resultFrac + r.Negative = d.negative + r.WordBuf = d.wordBuf + return json.Marshal(r) +} + +// UnmarshalJSON implements Unmarshaler.UnmarshalJSON interface. +func (d *MyDecimal) UnmarshalJSON(data []byte) error { + var r jsonMyDecimal + err := json.Unmarshal(data, &r) + if err == nil { + d.digitsInt = r.DigitsInt + d.digitsFrac = r.DigitsFrac + d.resultFrac = r.ResultFrac + d.negative = r.Negative + d.wordBuf = r.WordBuf + } + return err +} + // DecimalNeg reverses decimal's sign. func DecimalNeg(from *MyDecimal) *MyDecimal { to := *from diff --git a/types/mydecimal_test.go b/types/mydecimal_test.go index 07e8df28c28b9..584c1a8bd7f08 100644 --- a/types/mydecimal_test.go +++ b/types/mydecimal_test.go @@ -15,6 +15,7 @@ package types import ( + "encoding/json" "fmt" "strconv" "strings" @@ -992,3 +993,22 @@ func TestFromStringMyDecimal(t *testing.T) { // reset wordBufLen = maxWordBufLen } + +func TestMarshalMyDecimal(t *testing.T) { + cases := []string{ + "12345", + "12345.", + ".00012345000098765", + ".12345000098765", + "-.000000012345000098765", + "123E-2", + } + for _, tt := range cases { + var v1, v2 MyDecimal + require.NoError(t, v1.FromString([]byte(tt))) + j, err := json.Marshal(&v1) + require.NoError(t, err) + require.NoError(t, json.Unmarshal(j, &v2)) + require.Equal(t, 0, v1.Compare(&v2)) + } +} diff --git a/types/parser_driver/BUILD.bazel b/types/parser_driver/BUILD.bazel new file mode 100644 index 0000000000000..4cb8767c3e94b --- /dev/null +++ b/types/parser_driver/BUILD.bazel @@ -0,0 +1,32 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "parser_driver", + srcs = ["value_expr.go"], + importpath = "github.com/pingcap/tidb/types/parser_driver", + visibility = ["//visibility:public"], + deps = [ + "//parser/ast", + "//parser/format", + "//parser/mysql", + "//types", + "//util/hack", + "@com_github_pingcap_errors//:errors", + ], +) + +go_test( + name = "parser_driver_test", + srcs = [ + "main_test.go", + "value_expr_test.go", + ], + embed = [":parser_driver"], + deps = [ + "//parser/format", + "//testkit/testsetup", + "//types", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/types/parser_driver/value_expr.go b/types/parser_driver/value_expr.go index 3c6f77ae5a069..e2490783fc329 100644 --- a/types/parser_driver/value_expr.go +++ b/types/parser_driver/value_expr.go @@ -165,7 +165,11 @@ func (n *ValueExpr) Format(w io.Writer) { case types.KindFloat64: s = strconv.FormatFloat(n.GetFloat64(), 'e', -1, 64) case types.KindString, types.KindBytes: - s = strconv.Quote(n.GetString()) + // If sql_mode='ANSI_QUOTES', strings with double-quotes will be taken as an identifier. + // See #35281. + s = strings.ReplaceAll(n.GetString(), "\\", "\\\\") + s = strings.ReplaceAll(s, `'`, `''`) + s = fmt.Sprintf("'%s'", s) case types.KindMysqlDecimal: s = n.GetMysqlDecimal().String() case types.KindBinaryLiteral: diff --git a/types/parser_driver/value_expr_test.go b/types/parser_driver/value_expr_test.go index 57225e44755e3..501319f9286e3 100644 --- a/types/parser_driver/value_expr_test.go +++ b/types/parser_driver/value_expr_test.go @@ -55,3 +55,34 @@ func TestValueExprRestore(t *testing.T) { }) } } + +func TestValueExprFormat(t *testing.T) { + tests := []struct { + datum types.Datum + expect string + }{ + {types.NewDatum(nil), "NULL"}, + {types.NewIntDatum(1), "1"}, + {types.NewIntDatum(-1), "-1"}, + {types.NewUintDatum(1), "1"}, + {types.NewFloat32Datum(1.1), "1.1e+00"}, + {types.NewFloat64Datum(1.1), "1.1e+00"}, + {types.NewStringDatum("test `s't\"r."), "'test `s''t\"r.'"}, + {types.NewBytesDatum([]byte("test `s't\"r.")), "'test `s''t\"r.'"}, + {types.NewBinaryLiteralDatum([]byte("test `s't\"r.")), "b'11101000110010101110011011101000010000001100000011100110010011101110100001000100111001000101110'"}, + {types.NewDecimalDatum(types.NewDecFromInt(321)), "321"}, + {types.NewStringDatum("\\"), "'\\\\'"}, + {types.NewStringDatum("''"), "''''''"}, + {types.NewStringDatum("\\''\t\n"), "'\\\\''''\t\n'"}, + } + + for _, test := range tests { + test := test + t.Run(test.expect, func(t *testing.T) { + var sb strings.Builder + expr := &ValueExpr{Datum: test.datum} + expr.Format(&sb) + require.Equalf(t, test.expect, sb.String(), "datum: %#v", test.datum) + }) + } +} diff --git a/types/time.go b/types/time.go index a9c46aa7912ad..14c647f945788 100644 --- a/types/time.go +++ b/types/time.go @@ -16,6 +16,7 @@ package types import ( "bytes" + "encoding/json" "fmt" "math" "regexp" @@ -25,9 +26,11 @@ import ( "unicode" "github.com/pingcap/errors" + "github.com/pingcap/tidb/errno" "github.com/pingcap/tidb/parser/mysql" "github.com/pingcap/tidb/parser/terror" "github.com/pingcap/tidb/sessionctx/stmtctx" + "github.com/pingcap/tidb/util/dbterror" "github.com/pingcap/tidb/util/logutil" "github.com/pingcap/tidb/util/mathutil" "github.com/pingcap/tidb/util/parser" @@ -545,6 +548,16 @@ func (t Time) RoundFrac(sc *stmtctx.StatementContext, fsp int) (Time, error) { return NewTime(nt, t.Type(), fsp), nil } +// MarshalJSON implements Marshaler.MarshalJSON interface. +func (t Time) MarshalJSON() ([]byte, error) { + return json.Marshal(t.coreTime) +} + +// UnmarshalJSON implements Unmarshaler.UnmarshalJSON interface. +func (t *Time) UnmarshalJSON(data []byte) error { + return json.Unmarshal(data, &t.coreTime) +} + // GetFsp gets the fsp of a string. func GetFsp(s string) int { index := GetFracIndex(s) @@ -1517,7 +1530,7 @@ func (d Duration) Compare(o Duration) int { // but parses str to Duration then compares. func (d Duration) CompareString(sc *stmtctx.StatementContext, str string) (int, error) { // use MaxFsp to parse the string - o, err := ParseDuration(sc, str, MaxFsp) + o, _, err := ParseDuration(sc, str, MaxFsp) if err != nil { return 0, err } @@ -1667,18 +1680,19 @@ func matchFrac(str string, fsp int) (bool, int, string, error) { return overflow, frac, rest, nil } -func matchDuration(str string, fsp int) (Duration, error) { +func matchDuration(str string, fsp int) (Duration, bool, error) { fsp, err := CheckFsp(fsp) if err != nil { - return ZeroDuration, errors.Trace(err) + return ZeroDuration, true, errors.Trace(err) } if len(str) == 0 { - return ZeroDuration, ErrTruncatedWrongVal.GenWithStackByArgs("time", str) + return ZeroDuration, true, ErrTruncatedWrongVal.GenWithStackByArgs("time", str) } negative, rest := isNegativeDuration(str) rest = parser.Space0(rest) + charsLen := len(rest) hhmmss := [3]int{} @@ -1690,13 +1704,13 @@ func matchDuration(str string, fsp int) (Duration, error) { } else if hms, remain, err := matchHHMMSSCompact(rest); err == nil { rest, hhmmss = remain, hms } else { - return ZeroDuration, ErrTruncatedWrongVal.GenWithStackByArgs("time", str) + return ZeroDuration, true, ErrTruncatedWrongVal.GenWithStackByArgs("time", str) } rest = parser.Space0(rest) overflow, frac, rest, err := matchFrac(rest, fsp) - if err != nil || len(rest) > 0 { - return ZeroDuration, ErrTruncatedWrongVal.GenWithStackByArgs("time", str) + if err != nil || (len(rest) > 0 && charsLen >= 12) { + return ZeroDuration, true, ErrTruncatedWrongVal.GenWithStackByArgs("time", str) } if overflow { @@ -1705,7 +1719,7 @@ func matchDuration(str string, fsp int) (Duration, error) { } if !checkHHMMSS(hhmmss) { - return ZeroDuration, ErrTruncatedWrongVal.GenWithStackByArgs("time", str) + return ZeroDuration, true, ErrTruncatedWrongVal.GenWithStackByArgs("time", str) } if hhmmss[0] > TimeMaxHour { @@ -1715,7 +1729,7 @@ func matchDuration(str string, fsp int) (Duration, error) { } else { t = MaxTime } - return Duration{t, fsp}, ErrTruncatedWrongVal.GenWithStackByArgs("time", str) + return Duration{t, fsp}, false, ErrTruncatedWrongVal.GenWithStackByArgs("time", str) } d := gotime.Duration(hhmmss[0]*3600+hhmmss[1]*60+hhmmss[2])*gotime.Second + gotime.Duration(frac)*gotime.Microsecond //nolint:durationcheck @@ -1723,7 +1737,10 @@ func matchDuration(str string, fsp int) (Duration, error) { d = -d } d, err = TruncateOverflowMySQLTime(d) - return Duration{d, fsp}, errors.Trace(err) + if err == nil && len(rest) > 0 { + return Duration{d, fsp}, false, ErrTruncatedWrongVal.GenWithStackByArgs("time", str) + } + return Duration{d, fsp}, false, errors.Trace(err) } // canFallbackToDateTime return true @@ -1763,29 +1780,30 @@ func canFallbackToDateTime(str string) bool { } // ParseDuration parses the time form a formatted string with a fractional seconds part, -// returns the duration type Time value. +// returns the duration type Time value and bool to indicate whether the result is null. // See http://dev.mysql.com/doc/refman/5.7/en/fractional-seconds.html -func ParseDuration(sc *stmtctx.StatementContext, str string, fsp int) (Duration, error) { +func ParseDuration(sc *stmtctx.StatementContext, str string, fsp int) (Duration, bool, error) { rest := strings.TrimSpace(str) - d, err := matchDuration(rest, fsp) + d, isNull, err := matchDuration(rest, fsp) if err == nil { - return d, nil + return d, isNull, nil } if !canFallbackToDateTime(rest) { - return d, ErrTruncatedWrongVal.GenWithStackByArgs("time", str) + return d, isNull, ErrTruncatedWrongVal.GenWithStackByArgs("time", str) } datetime, err := ParseDatetime(sc, rest) if err != nil { - return ZeroDuration, ErrTruncatedWrongVal.GenWithStackByArgs("time", str) + return ZeroDuration, true, ErrTruncatedWrongVal.GenWithStackByArgs("time", str) } d, err = datetime.ConvertToDuration() if err != nil { - return ZeroDuration, ErrTruncatedWrongVal.GenWithStackByArgs("time", str) + return ZeroDuration, true, ErrTruncatedWrongVal.GenWithStackByArgs("time", str) } - return d.RoundFrac(fsp, sc.TimeZone) + d, err = d.RoundFrac(fsp, sc.TimeZone) + return d, false, err } // TruncateOverflowMySQLTime truncates d when it overflows, and returns ErrTruncatedWrongVal. @@ -2542,13 +2560,36 @@ func ExtractDurationValue(unit string, format string) (Duration, error) { } } -// IsClockUnit returns true when unit is interval unit with hour, minute or second. +// IsClockUnit returns true when unit is interval unit with hour, minute, second or microsecond. func IsClockUnit(unit string) bool { switch strings.ToUpper(unit) { case "MICROSECOND", "SECOND", "MINUTE", "HOUR", - "SECOND_MICROSECOND", "MINUTE_MICROSECOND", "MINUTE_SECOND", - "HOUR_MICROSECOND", "HOUR_SECOND", "HOUR_MINUTE", - "DAY_MICROSECOND", "DAY_SECOND", "DAY_MINUTE", "DAY_HOUR": + "SECOND_MICROSECOND", "MINUTE_MICROSECOND", "HOUR_MICROSECOND", "DAY_MICROSECOND", + "MINUTE_SECOND", "HOUR_SECOND", "DAY_SECOND", + "HOUR_MINUTE", "DAY_MINUTE", + "DAY_HOUR": + return true + default: + return false + } +} + +// IsDateUnit returns true when unit is interval unit with year, quarter, month, week or day. +func IsDateUnit(unit string) bool { + switch strings.ToUpper(unit) { + case "DAY", "WEEK", "MONTH", "QUARTER", "YEAR", + "DAY_MICROSECOND", "DAY_SECOND", "DAY_MINUTE", "DAY_HOUR", + "YEAR_MONTH": + return true + default: + return false + } +} + +// IsMicrosecondUnit returns true when unit is interval unit with microsecond. +func IsMicrosecondUnit(unit string) bool { + switch strings.ToUpper(unit) { + case "MICROSECOND", "SECOND_MICROSECOND", "MINUTE_MICROSECOND", "HOUR_MICROSECOND", "DAY_MICROSECOND": return true default: return false @@ -2577,6 +2618,68 @@ func ParseTimeFromInt64(sc *stmtctx.StatementContext, num int64) (Time, error) { return parseDateTimeFromNum(sc, num) } +// ParseTimeFromFloat64 parses mysql time value from float64. +// It is used in scenarios that distinguish date and datetime, e.g., date_add/sub() with first argument being real. +// For example, 20010203 parses to date (no HMS) and 20010203040506 parses to datetime (with HMS). +func ParseTimeFromFloat64(sc *stmtctx.StatementContext, f float64) (Time, error) { + intPart := int64(f) + t, err := parseDateTimeFromNum(sc, intPart) + if err != nil { + return ZeroTime, err + } + if t.Type() == mysql.TypeDatetime { + // US part is only kept when the integral part is recognized as datetime. + fracPart := uint32((f - float64(intPart)) * 1000000.0) + ct := t.CoreTime() + ct.setMicrosecond(fracPart) + t.SetCoreTime(ct) + } + return t, err +} + +// ParseTimeFromDecimal parses mysql time value from decimal. +// It is used in scenarios that distinguish date and datetime, e.g., date_add/sub() with first argument being decimal. +// For example, 20010203 parses to date (no HMS) and 20010203040506 parses to datetime (with HMS). +func ParseTimeFromDecimal(sc *stmtctx.StatementContext, dec *MyDecimal) (t Time, err error) { + intPart, err := dec.ToInt() + if err != nil && !terror.ErrorEqual(err, ErrTruncated) { + return ZeroTime, err + } + fsp := mathutil.Min(MaxFsp, int(dec.GetDigitsFrac())) + t, err = parseDateTimeFromNum(sc, intPart) + if err != nil { + return ZeroTime, err + } + t.SetFsp(fsp) + if fsp == 0 || t.Type() == mysql.TypeDate { + // Shortcut for integer value or date value (fractional part omitted). + return t, err + } + + intPartDec := new(MyDecimal).FromInt(intPart) + fracPartDec := new(MyDecimal) + err = DecimalSub(dec, intPartDec, fracPartDec) + if err != nil { + return ZeroTime, errors.Trace(dbterror.ClassTypes.NewStd(errno.ErrIncorrectDatetimeValue).GenWithStackByArgs(dec.ToString())) + } + million := new(MyDecimal).FromInt(1000000) + msPartDec := new(MyDecimal) + err = DecimalMul(fracPartDec, million, msPartDec) + if err != nil && !terror.ErrorEqual(err, ErrTruncated) { + return ZeroTime, errors.Trace(dbterror.ClassTypes.NewStd(errno.ErrIncorrectDatetimeValue).GenWithStackByArgs(dec.ToString())) + } + msPart, err := msPartDec.ToInt() + if err != nil && !terror.ErrorEqual(err, ErrTruncated) { + return ZeroTime, errors.Trace(dbterror.ClassTypes.NewStd(errno.ErrIncorrectDatetimeValue).GenWithStackByArgs(dec.ToString())) + } + + ct := t.CoreTime() + ct.setMicrosecond(uint32(msPart)) + t.SetCoreTime(ct) + + return t, nil +} + // DateFormat returns a textual representation of the time value formatted // according to layout. // See http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_date-format diff --git a/types/time_test.go b/types/time_test.go index c575fa730c2b7..13e9191ec4175 100644 --- a/types/time_test.go +++ b/types/time_test.go @@ -15,6 +15,7 @@ package types_test import ( + "encoding/json" "fmt" "math" "testing" @@ -333,8 +334,9 @@ func TestTime(t *testing.T) { } for _, test := range table { - duration, err := types.ParseDuration(sc, test.Input, types.MinFsp) + duration, isNull, err := types.ParseDuration(sc, test.Input, types.MinFsp) require.NoError(t, err) + require.False(t, isNull) require.Equal(t, test.Expect, duration.String()) } @@ -348,11 +350,27 @@ func TestTime(t *testing.T) { } for _, test := range table { - duration, err := types.ParseDuration(sc, test.Input, types.MaxFsp) + duration, _, err := types.ParseDuration(sc, test.Input, types.MaxFsp) require.NoError(t, err) require.Equal(t, test.Expect, duration.String()) } + table = []struct { + Input string + Expect string + }{ + {"0x", "00:00:00.000000"}, + {"1x", "00:00:01.000000"}, + {"0000-00-00", "00:00:00.000000"}, + } + + for _, test := range table { + duration, isNull, err := types.ParseDuration(sc, test.Input, types.MaxFsp) + require.False(t, isNull) + require.True(t, types.ErrTruncatedWrongVal.Equal(err)) + require.Equal(t, test.Expect, duration.String()) + } + errTable := []string{ "2011-11-11", "232 10", @@ -360,11 +378,11 @@ func TestTime(t *testing.T) { } for _, test := range errTable { - _, err := types.ParseDuration(sc, test, types.DefaultFsp) + _, _, err := types.ParseDuration(sc, test, types.DefaultFsp) require.Error(t, err) } - duration, err := types.ParseDuration(sc, "4294967295 0:59:59", types.DefaultFsp) + duration, _, err := types.ParseDuration(sc, "4294967295 0:59:59", types.DefaultFsp) require.Error(t, err) require.Equal(t, "838:59:59", duration.String()) @@ -407,15 +425,15 @@ func TestDurationAdd(t *testing.T) { {"00:00:00.099", 3, "00:00:00.001", 3, "00:00:00.100"}, } for _, test := range table { - duration, err := types.ParseDuration(nil, test.Input, test.Fsp) + duration, _, err := types.ParseDuration(nil, test.Input, test.Fsp) require.NoError(t, err) - ta, err := types.ParseDuration(nil, test.InputAdd, test.FspAdd) + ta, _, err := types.ParseDuration(nil, test.InputAdd, test.FspAdd) require.NoError(t, err) result, err := duration.Add(ta) require.NoError(t, err) require.Equal(t, test.Expect, result.String()) } - duration, err := types.ParseDuration(nil, "00:00:00", 0) + duration, _, err := types.ParseDuration(nil, "00:00:00", 0) require.NoError(t, err) ta := new(types.Duration) result, err := duration.Add(*ta) @@ -423,7 +441,7 @@ func TestDurationAdd(t *testing.T) { require.Equal(t, "00:00:00", result.String()) duration = types.Duration{Duration: math.MaxInt64, Fsp: 0} - tatmp, err := types.ParseDuration(nil, "00:01:00", 0) + tatmp, _, err := types.ParseDuration(nil, "00:01:00", 0) require.NoError(t, err) _, err = duration.Add(tatmp) require.Error(t, err) @@ -443,9 +461,9 @@ func TestDurationSub(t *testing.T) { {"00:00:00", 0, "00:00:00.1", 1, "-00:00:00.1"}, } for _, test := range table { - duration, err := types.ParseDuration(sc, test.Input, test.Fsp) + duration, _, err := types.ParseDuration(sc, test.Input, test.Fsp) require.NoError(t, err) - ta, err := types.ParseDuration(sc, test.InputAdd, test.FspAdd) + ta, _, err := types.ParseDuration(sc, test.InputAdd, test.FspAdd) require.NoError(t, err) result, err := duration.Sub(ta) require.NoError(t, err) @@ -474,7 +492,7 @@ func TestTimeFsp(t *testing.T) { } for _, test := range table { - duration, err := types.ParseDuration(sc, test.Input, test.Fsp) + duration, _, err := types.ParseDuration(sc, test.Input, test.Fsp) require.NoError(t, err) require.Equal(t, test.Expect, duration.String()) } @@ -487,7 +505,7 @@ func TestTimeFsp(t *testing.T) { } for _, test := range errTable { - _, err := types.ParseDuration(sc, test.Input, test.Fsp) + _, _, err := types.ParseDuration(sc, test.Input, test.Fsp) require.Error(t, err) } } @@ -752,7 +770,7 @@ func TestToNumber(t *testing.T) { } for _, test := range tblDuration { - v, err := types.ParseDuration(sc, test.Input, test.Fsp) + v, _, err := types.ParseDuration(sc, test.Input, test.Fsp) require.NoError(t, err) // now we can only changetypes.Duration's Fsp to check ToNumber with different Fsp require.Equal(t, test.Expect, v.ToNumber().String()) @@ -896,7 +914,7 @@ func TestRoundFrac(t *testing.T) { } for _, tt := range tbl { - v, err := types.ParseDuration(sc, tt.Input, types.MaxFsp) + v, _, err := types.ParseDuration(sc, tt.Input, types.MaxFsp) require.NoError(t, err) nv, err := v.RoundFrac(tt.Fsp, sc.TimeZone) require.NoError(t, err) @@ -958,7 +976,7 @@ func TestConvert(t *testing.T) { // test different time zone. sc.TimeZone = time.UTC for _, tt := range tblDuration { - v, err := types.ParseDuration(sc, tt.Input, tt.Fsp) + v, _, err := types.ParseDuration(sc, tt.Input, tt.Fsp) require.NoError(t, err) year, month, day := time.Now().In(sc.TimeZone).Date() n := time.Date(year, month, day, 0, 0, 0, 0, sc.TimeZone) @@ -1009,7 +1027,7 @@ func TestCompare(t *testing.T) { } for _, tt := range tbl { - v1, err := types.ParseDuration(nil, tt.Arg1, types.MaxFsp) + v1, _, err := types.ParseDuration(nil, tt.Arg1, types.MaxFsp) require.NoError(t, err) ret, err := v1.CompareString(nil, tt.Arg2) @@ -1033,7 +1051,7 @@ func TestDurationClock(t *testing.T) { } for _, tt := range tbl { - d, err := types.ParseDuration(&stmtctx.StatementContext{TimeZone: time.UTC}, tt.Input, types.MaxFsp) + d, _, err := types.ParseDuration(&stmtctx.StatementContext{TimeZone: time.UTC}, tt.Input, types.MaxFsp) require.NoError(t, err) require.Equal(t, tt.Hour, d.Hour()) require.Equal(t, tt.Minute, d.Minute()) @@ -1150,7 +1168,7 @@ func TestTimeAdd(t *testing.T) { for _, tt := range tbl { v1, err := types.ParseTime(sc, tt.Arg1, mysql.TypeDatetime, types.MaxFsp) require.NoError(t, err) - dur, err := types.ParseDuration(sc, tt.Arg2, types.MaxFsp) + dur, _, err := types.ParseDuration(sc, tt.Arg2, types.MaxFsp) require.NoError(t, err) result, err := types.ParseTime(sc, tt.Ret, mysql.TypeDatetime, types.MaxFsp) require.NoError(t, err) @@ -1684,6 +1702,7 @@ func TestIsClockUnit(t *testing.T) { {"DAY_MINUTE", true}, {"DAY_HOUR", true}, {"TEST", false}, + {"SOME_MICROSECOND", false}, } for _, col := range tbl { output := types.IsClockUnit(col.input) @@ -1691,6 +1710,64 @@ func TestIsClockUnit(t *testing.T) { } } +func TestIsDateUnit(t *testing.T) { + tbl := []struct { + input string + expected bool + }{ + {"Day", true}, + {"Week", true}, + {"month", true}, + {"quarter", true}, + {"YEAR", true}, + {"DAY_MICROSECOND", true}, + {"DAY_SECOND", true}, + {"DAY_MINUTE", true}, + {"DAY_HOUR", true}, + {"YEAR_MONTH", true}, + {"MICROSECOND", false}, + {"SECOND", false}, + {"MINUTE", false}, + {"HOUR", false}, + {"TEST", false}, + {"SOME_DAY", false}, + } + for _, col := range tbl { + output := types.IsDateUnit(col.input) + require.Equal(t, col.expected, output) + } +} + +func TestIsMicrosecondUnit(t *testing.T) { + tbl := []struct { + input string + expected bool + }{ + {"Microsecond", true}, + {"Second_microsecond", true}, + {"minute_microsecond", true}, + {"hour_microsecond", true}, + {"DAY_MICROSECOND", true}, + {"SECOND", false}, + {"MINUTE", false}, + {"HOUR", false}, + {"DAY_SECOND", false}, + {"DAY_MINUTE", false}, + {"DAY_HOUR", false}, + {"DAY", false}, + {"WEEK", false}, + {"MONTH", false}, + {"QUARTER", false}, + {"YEAR", false}, + {"TEST", false}, + {"SOME_MICROSECOND", false}, + } + for _, col := range tbl { + output := types.IsMicrosecondUnit(col.input) + require.Equal(t, col.expected, output) + } +} + func TestIsDateFormat(t *testing.T) { input := "1234:321" output := types.IsDateFormat(input) @@ -1727,6 +1804,94 @@ func TestParseTimeFromInt64(t *testing.T) { require.Equal(t, 00, output.Microsecond()) } +func TestParseTimeFromFloat64(t *testing.T) { + sc := mock.NewContext().GetSessionVars().StmtCtx + sc.IgnoreZeroInDate = true + + cases := []struct { + f float64 + t byte // type: date or datetime. + Y int + M int + D int + h int + m int + s int + us int + err *terror.Error + }{ + {20000102, mysql.TypeDate, 2000, 1, 2, 0, 0, 0, 0, nil}, + {20000102.9, mysql.TypeDate, 2000, 1, 2, 0, 0, 0, 0, nil}, + {0.0, mysql.TypeDate, 0, 0, 0, 0, 0, 0, 0, nil}, + {20000102030405, mysql.TypeDatetime, 2000, 1, 2, 3, 4, 5, 0, nil}, + {20000102030405.015625, mysql.TypeDatetime, 2000, 1, 2, 3, 4, 5, 15625, nil}, + {20000102030405.0078125, mysql.TypeDatetime, 2000, 1, 2, 3, 4, 5, 7812, nil}, + {2000, mysql.TypeDatetime, 0, 0, 0, 0, 0, 0, 0, types.ErrTruncatedWrongVal}, + {20000000000000, mysql.TypeDatetime, 2000, 0, 0, 0, 0, 0, 0, nil}, + } + + for _, c := range cases { + res, err := types.ParseTimeFromFloat64(sc, c.f) + require.Equalf(t, c.t, res.Type(), "Type mismatch for case %v", c) + require.Equalf(t, c.Y, res.Year(), "Year mismatch for case %v", c) + require.Equalf(t, c.M, res.Month(), "Month mismatch for case %v", c) + require.Equalf(t, c.D, res.Day(), "Day mismatch for case %v", c) + require.Equalf(t, c.h, res.Hour(), "Hour mismatch for case %v", c) + require.Equalf(t, c.m, res.Minute(), "Minute mismatch for case %v", c) + require.Equalf(t, c.s, res.Second(), "Second mismatch for case %v", c) + require.Equalf(t, c.us, res.Microsecond(), "Microsecond mismatch for case %v", c) + if c.err == nil { + require.NoErrorf(t, err, "Unexpected error for case %v", c) + } else { + require.Truef(t, c.err.Equal(err), "Error mismatch for case %v", c) + } + } +} + +func TestParseTimeFromDecimal(t *testing.T) { + sc := mock.NewContext().GetSessionVars().StmtCtx + sc.IgnoreZeroInDate = true + + cases := []struct { + d *types.MyDecimal + t byte // type: date or datetime. + Y int + M int + D int + h int + m int + s int + us int + err *terror.Error + }{ + {types.NewDecFromStringForTest("20000102"), mysql.TypeDate, 2000, 1, 2, 0, 0, 0, 0, nil}, + {types.NewDecFromStringForTest("20000102.9"), mysql.TypeDate, 2000, 1, 2, 0, 0, 0, 0, nil}, + {types.NewDecFromStringForTest("0.0"), mysql.TypeDate, 0, 0, 0, 0, 0, 0, 0, nil}, + {types.NewDecFromStringForTest("20000102030405"), mysql.TypeDatetime, 2000, 1, 2, 3, 4, 5, 0, nil}, + {types.NewDecFromStringForTest("20000102030405.015625"), mysql.TypeDatetime, 2000, 1, 2, 3, 4, 5, 15625, nil}, + {types.NewDecFromStringForTest("20000102030405.0078125"), mysql.TypeDatetime, 2000, 1, 2, 3, 4, 5, 7812, nil}, + {types.NewDecFromStringForTest("2000"), mysql.TypeDatetime, 0, 0, 0, 0, 0, 0, 0, types.ErrTruncatedWrongVal}, + {types.NewDecFromStringForTest("20000000000000"), mysql.TypeDatetime, 2000, 0, 0, 0, 0, 0, 0, nil}, + } + + for _, c := range cases { + res, err := types.ParseTimeFromDecimal(sc, c.d) + require.Equalf(t, c.t, res.Type(), "Type mismatch for case %v", c) + require.Equalf(t, c.Y, res.Year(), "Year mismatch for case %v", c) + require.Equalf(t, c.M, res.Month(), "Month mismatch for case %v", c) + require.Equalf(t, c.D, res.Day(), "Day mismatch for case %v", c) + require.Equalf(t, c.h, res.Hour(), "Hour mismatch for case %v", c) + require.Equalf(t, c.m, res.Minute(), "Minute mismatch for case %v", c) + require.Equalf(t, c.s, res.Second(), "Second mismatch for case %v", c) + require.Equalf(t, c.us, res.Microsecond(), "Microsecond mismatch for case %v", c) + if c.err == nil { + require.NoErrorf(t, err, "Unexpected error for case %v", c) + } else { + require.Truef(t, c.err.Equal(err), "Error mismatch for case %v", c) + } + } +} + func TestGetFormatType(t *testing.T) { input := "TEST" isDuration, isDate := types.GetFormatType(input) @@ -1828,7 +1993,7 @@ func TestTimeSub(t *testing.T) { require.NoError(t, err) v2, err := types.ParseTime(sc, tt.Arg2, mysql.TypeDatetime, types.MaxFsp) require.NoError(t, err) - dur, err := types.ParseDuration(sc, tt.Ret, types.MaxFsp) + dur, _, err := types.ParseDuration(sc, tt.Ret, types.MaxFsp) require.NoError(t, err) rec := v1.Sub(sc, &v2) require.Equal(t, dur, rec) @@ -2035,6 +2200,17 @@ func TestParseWithTimezone(t *testing.T) { } } +func TestMarshalTime(t *testing.T) { + sc := mock.NewContext().GetSessionVars().StmtCtx + v1, err := types.ParseTime(sc, "2017-01-18 01:01:01.123456", mysql.TypeDatetime, types.MaxFsp) + require.NoError(t, err) + j, err := json.Marshal(v1) + require.NoError(t, err) + var v2 types.Time + require.NoError(t, json.Unmarshal(j, &v2)) + require.Equal(t, 0, v1.Compare(v2)) +} + func BenchmarkFormat(b *testing.B) { t1 := types.NewTime(types.FromGoTime(time.Now()), mysql.TypeTimestamp, 0) for i := 0; i < b.N; i++ { @@ -2050,7 +2226,7 @@ func BenchmarkTimeAdd(b *testing.B) { TimeZone: time.UTC, } arg1, _ := types.ParseTime(sc, "2017-01-18", mysql.TypeDatetime, types.MaxFsp) - arg2, _ := types.ParseDuration(sc, "12:30:59", types.MaxFsp) + arg2, _, _ := types.ParseDuration(sc, "12:30:59", types.MaxFsp) for i := 0; i < b.N; i++ { _, err := arg1.Add(sc, arg2) if err != nil { diff --git a/util/BUILD.bazel b/util/BUILD.bazel new file mode 100644 index 0000000000000..00ae97bd39a22 --- /dev/null +++ b/util/BUILD.bazel @@ -0,0 +1,84 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "util", + srcs = [ + "cpu_posix.go", + "cpu_windows.go", + "errors.go", + "etcd.go", + "gogc.go", + "misc.go", + "prefix_helper.go", + "printer.go", + "processinfo.go", + "security.go", + "tso.go", + "urls.go", + "util.go", + "wait_group_wrapper.go", + ], + importpath = "github.com/pingcap/tidb/util", + visibility = ["//visibility:public"], + deps = [ + "//config", + "//kv", + "//metrics", + "//parser", + "//parser/model", + "//parser/mysql", + "//parser/terror", + "//session/txninfo", + "//sessionctx/stmtctx", + "//util/collate", + "//util/execdetails", + "//util/logutil", + "//util/tls", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_pingcap_log//:log", + "@com_github_pingcap_tipb//go-tipb", + "@com_github_tikv_client_go_v2//oracle", + "@io_etcd_go_etcd_client_v3//:client", + "@io_etcd_go_etcd_client_v3//concurrency", + "@org_golang_google_grpc//:grpc", + "@org_golang_google_grpc//credentials", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "util_test", + srcs = [ + "errors_test.go", + "main_test.go", + "misc_test.go", + "prefix_helper_test.go", + "processinfo_test.go", + "security_test.go", + "urls_test.go", + "wait_group_wrapper_test.go", + ], + data = glob(["tls_test/**"]), + embed = [":util"], + flaky = True, + deps = [ + "//config", + "//kv", + "//parser", + "//parser/model", + "//parser/mysql", + "//parser/terror", + "//sessionctx/stmtctx", + "//store/mockstore", + "//testkit/testsetup", + "//types", + "//util/fastrand", + "//util/memory", + "@com_github_pingcap_errors//:errors", + "@com_github_stretchr_testify//assert", + "@com_github_stretchr_testify//require", + "@org_uber_go_atomic//:atomic", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/util/admin/BUILD.bazel b/util/admin/BUILD.bazel new file mode 100644 index 0000000000000..b46e0ea03bc7f --- /dev/null +++ b/util/admin/BUILD.bazel @@ -0,0 +1,45 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "admin", + srcs = ["admin.go"], + importpath = "github.com/pingcap/tidb/util/admin", + visibility = ["//visibility:public"], + deps = [ + "//errno", + "//expression", + "//kv", + "//parser/model", + "//parser/mysql", + "//sessionctx", + "//table", + "//tablecodec", + "//types", + "//util", + "//util/dbterror", + "//util/logutil", + "//util/logutil/consistency", + "//util/rowDecoder", + "//util/sqlexec", + "@com_github_pingcap_errors//:errors", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "admin_test", + srcs = [ + "admin_integration_test.go", + "main_test.go", + ], + embed = [":admin"], + deps = [ + "//config", + "//sessionctx/variable", + "//tablecodec", + "//testkit", + "//testkit/testsetup", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/util/arena/BUILD.bazel b/util/arena/BUILD.bazel new file mode 100644 index 0000000000000..412221d3af4e3 --- /dev/null +++ b/util/arena/BUILD.bazel @@ -0,0 +1,22 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "arena", + srcs = ["arena.go"], + importpath = "github.com/pingcap/tidb/util/arena", + visibility = ["//visibility:public"], +) + +go_test( + name = "arena_test", + srcs = [ + "arena_test.go", + "main_test.go", + ], + embed = [":arena"], + deps = [ + "//testkit/testsetup", + "@com_github_stretchr_testify//assert", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/util/benchdaily/BUILD.bazel b/util/benchdaily/BUILD.bazel new file mode 100644 index 0000000000000..a9359576c0fe4 --- /dev/null +++ b/util/benchdaily/BUILD.bazel @@ -0,0 +1,21 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "benchdaily", + srcs = ["bench_daily.go"], + importpath = "github.com/pingcap/tidb/util/benchdaily", + visibility = ["//visibility:public"], +) + +go_test( + name = "benchdaily_test", + srcs = [ + "bench_daily_test.go", + "main_test.go", + ], + embed = [":benchdaily"], + deps = [ + "//testkit/testsetup", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/util/bitmap/BUILD.bazel b/util/bitmap/BUILD.bazel new file mode 100644 index 0000000000000..1a2544f8dcc91 --- /dev/null +++ b/util/bitmap/BUILD.bazel @@ -0,0 +1,22 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "bitmap", + srcs = ["concurrent.go"], + importpath = "github.com/pingcap/tidb/util/bitmap", + visibility = ["//visibility:public"], +) + +go_test( + name = "bitmap_test", + srcs = [ + "concurrent_test.go", + "main_test.go", + ], + embed = [":bitmap"], + deps = [ + "//testkit/testsetup", + "@com_github_stretchr_testify//assert", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/util/checksum/BUILD.bazel b/util/checksum/BUILD.bazel new file mode 100644 index 0000000000000..adf3565326f01 --- /dev/null +++ b/util/checksum/BUILD.bazel @@ -0,0 +1,23 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "checksum", + srcs = ["checksum.go"], + importpath = "github.com/pingcap/tidb/util/checksum", + visibility = ["//visibility:public"], +) + +go_test( + name = "checksum_test", + srcs = [ + "checksum_test.go", + "main_test.go", + ], + embed = [":checksum"], + deps = [ + "//testkit/testsetup", + "//util/encrypt", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/util/chunk/BUILD.bazel b/util/chunk/BUILD.bazel new file mode 100644 index 0000000000000..948adc6666223 --- /dev/null +++ b/util/chunk/BUILD.bazel @@ -0,0 +1,75 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "chunk", + srcs = [ + "alloc.go", + "chunk.go", + "chunk_util.go", + "codec.go", + "column.go", + "compare.go", + "disk.go", + "iterator.go", + "list.go", + "mutrow.go", + "pool.go", + "row.go", + "row_container.go", + ], + importpath = "github.com/pingcap/tidb/util/chunk", + visibility = ["//visibility:public"], + deps = [ + "//config", + "//parser/mysql", + "//parser/terror", + "//types", + "//types/json", + "//util/checksum", + "//util/disk", + "//util/encrypt", + "//util/hack", + "//util/logutil", + "//util/mathutil", + "//util/memory", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "chunk_test", + srcs = [ + "alloc_test.go", + "chunk_test.go", + "chunk_util_test.go", + "codec_test.go", + "column_test.go", + "disk_test.go", + "iterator_test.go", + "list_test.go", + "main_test.go", + "mutrow_test.go", + "pool_test.go", + "row_container_test.go", + ], + embed = [":chunk"], + race = "on", + deps = [ + "//config", + "//parser/mysql", + "//sessionctx/stmtctx", + "//testkit/testsetup", + "//types", + "//types/json", + "//util/collate", + "//util/mathutil", + "//util/memory", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_stretchr_testify//assert", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/util/chunk/disk.go b/util/chunk/disk.go index ccbc1e0c2365e..089e9fd9b6a6a 100644 --- a/util/chunk/disk.go +++ b/util/chunk/disk.go @@ -184,6 +184,12 @@ func (l *ListInDisk) GetChunk(chkIdx int) (*Chunk, error) { // GetRow gets a Row from the ListInDisk by RowPtr. func (l *ListInDisk) GetRow(ptr RowPtr) (row Row, err error) { + row, _, err = l.GetRowAndAppendToChunk(ptr, nil) + return row, err +} + +// GetRowAndAppendToChunk gets a Row from the ListInDisk by RowPtr. Return the Row and the Ref Chunk. +func (l *ListInDisk) GetRowAndAppendToChunk(ptr RowPtr, chk *Chunk) (row Row, _ *Chunk, err error) { off, err := l.getOffset(ptr.ChkIdx, ptr.RowIdx) if err != nil { return @@ -192,10 +198,10 @@ func (l *ListInDisk) GetRow(ptr RowPtr) (row Row, err error) { format := rowInDisk{numCol: len(l.fieldTypes)} _, err = format.ReadFrom(r) if err != nil { - return row, err + return row, nil, err } - row = format.toMutRow(l.fieldTypes).ToRow() - return row, err + row, chk = format.toRow(l.fieldTypes, chk) + return row, chk, err } func (l *ListInDisk) getOffset(chkIdx uint32, rowIdx uint32) (int64, error) { @@ -348,7 +354,7 @@ type diskFormatRow struct { sizesOfColumns []int64 // -1 means null // cells represents raw data of not-null columns in one row. // In convertFromRow, data from Row is shallow copied to cells. - // In toMutRow, data in cells is shallow copied to MutRow. + // In toRow, data in cells is deep copied to Row. cells [][]byte } @@ -378,35 +384,28 @@ func convertFromRow(row Row, reuse *diskFormatRow) (format *diskFormatRow) { return } -// toMutRow deserializes diskFormatRow to MutRow. -func (format *diskFormatRow) toMutRow(fields []*types.FieldType) MutRow { - chk := &Chunk{columns: make([]*Column, 0, len(format.sizesOfColumns))} +// toRow deserializes diskFormatRow to Row. +func (format *diskFormatRow) toRow(fields []*types.FieldType, chk *Chunk) (Row, *Chunk) { + if chk == nil || chk.IsFull() { + chk = NewChunkWithCapacity(fields, 1024) + } var cellOff int for colIdx, size := range format.sizesOfColumns { - col := &Column{length: 1} - elemSize := getFixedLen(fields[colIdx]) + col := chk.columns[colIdx] if size == -1 { // isNull - col.nullBitmap = []byte{0} - if elemSize == varElemLen { - col.offsets = []int64{0, 0} - } else { - buf := make([]byte, elemSize) - col.data = buf - col.elemBuf = buf - } + col.AppendNull() } else { - col.nullBitmap = []byte{1} - col.data = format.cells[cellOff] - cellOff++ - if elemSize == varElemLen { - col.offsets = []int64{0, int64(len(col.data))} + if col.isFixed() { + col.elemBuf = format.cells[cellOff] + col.finishAppendFixed() } else { - col.elemBuf = col.data + col.AppendBytes(format.cells[cellOff]) } + cellOff++ } - chk.columns = append(chk.columns, col) } - return MutRow{c: chk} + + return Row{c: chk, idx: chk.NumRows() - 1}, chk } // ReaderWithCache helps to read data that has not be flushed to underlying layer. diff --git a/util/chunk/disk_test.go b/util/chunk/disk_test.go index ea056c48e9467..fa82eef01024d 100644 --- a/util/chunk/disk_test.go +++ b/util/chunk/disk_test.go @@ -23,6 +23,7 @@ import ( "path/filepath" "strconv" "strings" + "sync" "testing" errors2 "github.com/pingcap/errors" @@ -189,7 +190,7 @@ func (l *listInDiskWriteDisk) GetRow(ptr RowPtr) (row Row, err error) { if err != nil { return row, err } - row = format.toMutRow(l.fieldTypes).ToRow() + row, _ = format.toRow(l.fieldTypes, nil) return row, err } @@ -211,7 +212,7 @@ func checkRow(t *testing.T, row1, row2 Row) { } } -func testListInDisk(t *testing.T) { +func testListInDisk(t *testing.T, concurrency int) { numChk, numRow := 10, 1000 chks, fields := initChunks(numChk, numRow) lChecksum := NewListInDisk(fields) @@ -236,13 +237,26 @@ func testListInDisk(t *testing.T) { } } + expectRows := make([]Row, 0, len(ptrs)) for _, rowPtr := range ptrs { - row1, err := lChecksum.GetRow(rowPtr) + row, err := lDisk.GetRow(rowPtr) require.NoError(t, err) - row2, err := lDisk.GetRow(rowPtr) - require.NoError(t, err) - checkRow(t, row1, row2) + expectRows = append(expectRows, row) } + + wg := sync.WaitGroup{} + wg.Add(concurrency) + for con := 0; con < concurrency; con++ { + go func() { + for i, rowPtr := range ptrs { + row, err := lChecksum.GetRow(rowPtr) + require.NoError(t, err) + checkRow(t, row, expectRows[i]) + } + wg.Done() + }() + } + wg.Wait() } func TestListInDiskWithChecksum(t *testing.T) { @@ -250,7 +264,15 @@ func TestListInDiskWithChecksum(t *testing.T) { config.UpdateGlobal(func(conf *config.Config) { conf.Security.SpilledFileEncryptionMethod = config.SpilledFileEncryptionMethodPlaintext }) - t.Run("testListInDisk", testListInDisk) + t.Run("testListInDisk", func(t *testing.T) { + testListInDisk(t, 1) + }) + t.Run("testListInDisk", func(t *testing.T) { + testListInDisk(t, 2) + }) + t.Run("testListInDisk", func(t *testing.T) { + testListInDisk(t, 8) + }) t.Run("testReaderWithCache", testReaderWithCache) t.Run("testReaderWithCacheNoFlush", testReaderWithCacheNoFlush) @@ -261,7 +283,15 @@ func TestListInDiskWithChecksumAndEncrypt(t *testing.T) { config.UpdateGlobal(func(conf *config.Config) { conf.Security.SpilledFileEncryptionMethod = config.SpilledFileEncryptionMethodAES128CTR }) - t.Run("testListInDisk", testListInDisk) + t.Run("testListInDisk", func(t *testing.T) { + testListInDisk(t, 1) + }) + t.Run("testListInDisk", func(t *testing.T) { + testListInDisk(t, 2) + }) + t.Run("testListInDisk", func(t *testing.T) { + testListInDisk(t, 8) + }) t.Run("testReaderWithCache", testReaderWithCache) t.Run("testReaderWithCacheNoFlush", testReaderWithCacheNoFlush) diff --git a/util/chunk/iterator.go b/util/chunk/iterator.go index ed9905b916a93..e62ef08212349 100644 --- a/util/chunk/iterator.go +++ b/util/chunk/iterator.go @@ -14,6 +14,8 @@ package chunk +import "sync" + var ( _ Iterator = (*Iterator4Chunk)(nil) _ Iterator = (*iterator4RowPtr)(nil) @@ -23,6 +25,22 @@ var ( _ Iterator = (*multiIterator)(nil) ) +var ( + iterator4SlicePool = &sync.Pool{New: func() any { return new(iterator4Slice) }} +) + +// FreeIterator try to free and reuse the iterator. +func FreeIterator(it any) { + switch it := it.(type) { + case *iterator4Slice: + it.rows = nil + it.cursor = 0 + iterator4SlicePool.Put(it) + default: + // Do Nothing. + } +} + // Iterator is used to iterate a number of rows. // // for row := it.Begin(); row != it.End(); row = it.Next() { @@ -53,7 +71,10 @@ type Iterator interface { // NewIterator4Slice returns a Iterator for Row slice. func NewIterator4Slice(rows []Row) Iterator { - return &iterator4Slice{rows: rows} + it := iterator4SlicePool.Get().(*iterator4Slice) + it.rows = rows + it.cursor = 0 + return it } type iterator4Slice struct { diff --git a/util/chunk/mutrow_test.go b/util/chunk/mutrow_test.go index 1293240013a3d..532206cf42782 100644 --- a/util/chunk/mutrow_test.go +++ b/util/chunk/mutrow_test.go @@ -80,7 +80,7 @@ func TestMutRow(t *testing.T) { retTypes := []*types.FieldType{types.NewFieldType(mysql.TypeDuration)} chk := New(retTypes, 1, 1) - dur, err := types.ParseDuration(sc, "01:23:45", 0) + dur, _, err := types.ParseDuration(sc, "01:23:45", 0) require.NoError(t, err) chk.AppendDuration(0, dur) mutRow = MutRowFromTypes(retTypes) diff --git a/util/chunk/row_container.go b/util/chunk/row_container.go index 20d5496fa533d..e80e8b7485b77 100644 --- a/util/chunk/row_container.go +++ b/util/chunk/row_container.go @@ -242,16 +242,22 @@ func (c *RowContainer) GetChunk(chkIdx int) (*Chunk, error) { } // GetRow returns the row the ptr pointed to. -func (c *RowContainer) GetRow(ptr RowPtr) (Row, error) { +func (c *RowContainer) GetRow(ptr RowPtr) (row Row, err error) { + row, _, err = c.GetRowAndAppendToChunk(ptr, nil) + return row, err +} + +// GetRowAndAppendToChunk gets a Row from the RowContainer by RowPtr. +func (c *RowContainer) GetRowAndAppendToChunk(ptr RowPtr, chk *Chunk) (row Row, _ *Chunk, err error) { c.m.RLock() defer c.m.RUnlock() if c.alreadySpilled() { if err := c.m.records.spillError; err != nil { - return Row{}, err + return Row{}, nil, err } - return c.m.records.inDisk.GetRow(ptr) + return c.m.records.inDisk.GetRowAndAppendToChunk(ptr, chk) } - return c.m.records.inMemory.GetRow(ptr), nil + return c.m.records.inMemory.GetRow(ptr), nil, nil } // GetMemTracker returns the memory tracker in records, panics if the RowContainer has already spilled. diff --git a/util/codec/BUILD.bazel b/util/codec/BUILD.bazel new file mode 100644 index 0000000000000..a7387f4ad7e4d --- /dev/null +++ b/util/codec/BUILD.bazel @@ -0,0 +1,54 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "codec", + srcs = [ + "bytes.go", + "codec.go", + "decimal.go", + "float.go", + "number.go", + ], + importpath = "github.com/pingcap/tidb/util/codec", + visibility = ["//visibility:public"], + deps = [ + "//parser/mysql", + "//parser/terror", + "//sessionctx/stmtctx", + "//types", + "//types/json", + "//util/chunk", + "//util/collate", + "//util/hack", + "//util/logutil", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "codec_test", + srcs = [ + "bench_test.go", + "bytes_test.go", + "codec_test.go", + "collation_test.go", + "decimal_test.go", + "main_test.go", + ], + embed = [":codec"], + deps = [ + "//parser/mysql", + "//parser/terror", + "//sessionctx/stmtctx", + "//testkit/testsetup", + "//types", + "//types/json", + "//util/benchdaily", + "//util/chunk", + "//util/collate", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/util/codec/codec_test.go b/util/codec/codec_test.go index 33af7c59a9840..a1a5461dcd5fa 100644 --- a/util/codec/codec_test.go +++ b/util/codec/codec_test.go @@ -527,7 +527,7 @@ func parseTime(t *testing.T, s string) types.Time { } func parseDuration(t *testing.T, s string) types.Duration { - m, err := types.ParseDuration(nil, s, types.DefaultFsp) + m, _, err := types.ParseDuration(nil, s, types.DefaultFsp) require.NoError(t, err) return m } diff --git a/util/collate/BUILD.bazel b/util/collate/BUILD.bazel new file mode 100644 index 0000000000000..d104760eb78f5 --- /dev/null +++ b/util/collate/BUILD.bazel @@ -0,0 +1,46 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "collate", + srcs = [ + "bin.go", + "charset.go", + "collate.go", + "gbk_bin.go", + "gbk_chinese_ci.go", + "gbk_chinese_ci_data.go", + "general_ci.go", + "pinyin_tidb_as_cs.go", + "unicode_ci.go", + "unicode_ci_data.go", + ], + importpath = "github.com/pingcap/tidb/util/collate", + visibility = ["//visibility:public"], + deps = [ + "//parser/charset", + "//parser/mysql", + "//parser/terror", + "//util/dbterror", + "//util/hack", + "//util/logutil", + "//util/stringutil", + "@com_github_pingcap_errors//:errors", + "@org_golang_x_text//encoding", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "collate_test", + srcs = [ + "collate_bench_test.go", + "collate_test.go", + "main_test.go", + ], + embed = [":collate"], + deps = [ + "//testkit/testsetup", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/util/collate/bin.go b/util/collate/bin.go index f0d338d3fa7b3..8d620b351e446 100644 --- a/util/collate/bin.go +++ b/util/collate/bin.go @@ -33,6 +33,11 @@ func (bc *binCollator) Key(str string) []byte { return []byte(str) } +// KeyWithoutTrimRightSpace implement Collator interface. +func (bc *binCollator) KeyWithoutTrimRightSpace(str string) []byte { + return []byte(str) +} + // Pattern implements Collator interface. func (bc *binCollator) Pattern() WildcardPattern { return &binPattern{} @@ -49,6 +54,11 @@ func (bpc *binPaddingCollator) Key(str string) []byte { return []byte(truncateTailingSpace(str)) } +// KeyWithoutTrimRightSpace implement Collator interface. +func (bpc *binPaddingCollator) KeyWithoutTrimRightSpace(str string) []byte { + return []byte(str) +} + // Pattern implements Collator interface. // Notice that trailing spaces are significant. func (bpc *binPaddingCollator) Pattern() WildcardPattern { diff --git a/util/collate/collate.go b/util/collate/collate.go index e018215d92886..714a70e0c0a88 100644 --- a/util/collate/collate.go +++ b/util/collate/collate.go @@ -66,6 +66,8 @@ type Collator interface { Compare(a, b string) int // Key returns the collate key for str. If the collation is padding, make sure the PadLen >= len(rune[]str) in opt. Key(str string) []byte + // KeyWithoutTrimRightSpace returns the collate key for str. The difference with Key is str will not be trimed. + KeyWithoutTrimRightSpace(str string) []byte // Pattern get a collation-aware WildcardPattern. Pattern() WildcardPattern } diff --git a/util/collate/gbk_bin.go b/util/collate/gbk_bin.go index 9c30557a3afea..7b28ad88ef799 100644 --- a/util/collate/gbk_bin.go +++ b/util/collate/gbk_bin.go @@ -58,7 +58,11 @@ func (g *gbkBinCollator) Compare(a, b string) int { // Key implement Collator interface. func (g *gbkBinCollator) Key(str string) []byte { - str = truncateTailingSpace(str) + return g.KeyWithoutTrimRightSpace(truncateTailingSpace(str)) +} + +// KeyWithoutTrimRightSpace implement Collator interface. +func (g *gbkBinCollator) KeyWithoutTrimRightSpace(str string) []byte { buf := make([]byte, 0, len(str)) for len(str) > 0 { l := runeLen(str[0]) diff --git a/util/collate/gbk_chinese_ci.go b/util/collate/gbk_chinese_ci.go index 937ba3844df1a..d06519fc8eb5e 100644 --- a/util/collate/gbk_chinese_ci.go +++ b/util/collate/gbk_chinese_ci.go @@ -40,7 +40,11 @@ func (g *gbkChineseCICollator) Compare(a, b string) int { // Key implements Collator interface. func (g *gbkChineseCICollator) Key(str string) []byte { - str = truncateTailingSpace(str) + return g.KeyWithoutTrimRightSpace(truncateTailingSpace(str)) +} + +// KeyWithoutTrimRightSpace implement Collator interface. +func (g *gbkChineseCICollator) KeyWithoutTrimRightSpace(str string) []byte { buf := make([]byte, 0, len(str)*2) i := 0 r := rune(0) diff --git a/util/collate/general_ci.go b/util/collate/general_ci.go index ee1cb4980f4bf..d9d9ab400a11a 100644 --- a/util/collate/general_ci.go +++ b/util/collate/general_ci.go @@ -41,7 +41,11 @@ func (gc *generalCICollator) Compare(a, b string) int { // Key implements Collator interface. func (gc *generalCICollator) Key(str string) []byte { - str = truncateTailingSpace(str) + return gc.KeyWithoutTrimRightSpace(truncateTailingSpace(str)) +} + +// KeyWithoutTrimRightSpace implements Collator interface. +func (gc *generalCICollator) KeyWithoutTrimRightSpace(str string) []byte { buf := make([]byte, 0, len(str)) i := 0 r := rune(0) diff --git a/util/collate/pinyin_tidb_as_cs.go b/util/collate/pinyin_tidb_as_cs.go index c0b2bab04f380..4341d2cb6ef31 100644 --- a/util/collate/pinyin_tidb_as_cs.go +++ b/util/collate/pinyin_tidb_as_cs.go @@ -28,6 +28,11 @@ func (py *zhPinyinTiDBASCSCollator) Key(str string) []byte { panic("implement me") } +// Collator interface, no implements now. +func (py *zhPinyinTiDBASCSCollator) KeyWithoutTrimRightSpace(str string) []byte { + panic("implement me") +} + // Collator interface, no implements now. func (py *zhPinyinTiDBASCSCollator) Pattern() WildcardPattern { panic("implement me") diff --git a/util/collate/unicode_ci.go b/util/collate/unicode_ci.go index 0e80669531f4f..58575551d011b 100644 --- a/util/collate/unicode_ci.go +++ b/util/collate/unicode_ci.go @@ -85,7 +85,11 @@ func (uc *unicodeCICollator) Compare(a, b string) int { // Key implements Collator interface. func (uc *unicodeCICollator) Key(str string) []byte { - str = truncateTailingSpace(str) + return uc.KeyWithoutTrimRightSpace(truncateTailingSpace(str)) +} + +// KeyWithoutTrimRightSpace implements Collator interface. +func (uc *unicodeCICollator) KeyWithoutTrimRightSpace(str string) []byte { buf := make([]byte, 0, len(str)*2) r := rune(0) si := 0 // decode index of s diff --git a/util/column-mapping/BUILD.bazel b/util/column-mapping/BUILD.bazel new file mode 100644 index 0000000000000..5b20244d7052e --- /dev/null +++ b/util/column-mapping/BUILD.bazel @@ -0,0 +1,19 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "column-mapping", + srcs = ["column.go"], + importpath = "github.com/pingcap/tidb/util/column-mapping", + visibility = ["//visibility:public"], + deps = [ + "//util/table-rule-selector", + "@com_github_pingcap_errors//:errors", + ], +) + +go_test( + name = "column-mapping_test", + srcs = ["column_test.go"], + embed = [":column-mapping"], + deps = ["@com_github_stretchr_testify//require"], +) diff --git a/util/cpuprofile/BUILD.bazel b/util/cpuprofile/BUILD.bazel new file mode 100644 index 0000000000000..32f6638285bfb --- /dev/null +++ b/util/cpuprofile/BUILD.bazel @@ -0,0 +1,31 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "cpuprofile", + srcs = [ + "cpuprofile.go", + "pprof_api.go", + ], + importpath = "github.com/pingcap/tidb/util/cpuprofile", + visibility = ["//visibility:public"], + deps = [ + "//metrics", + "//util", + "//util/logutil", + "@com_github_google_pprof//profile", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "cpuprofile_test", + srcs = ["cpuprofile_test.go"], + embed = [":cpuprofile"], + deps = [ + "//testkit/testsetup", + "//util/cpuprofile/testutil", + "@com_github_google_pprof//profile", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/util/cpuprofile/testutil/BUILD.bazel b/util/cpuprofile/testutil/BUILD.bazel new file mode 100644 index 0000000000000..1635fab206753 --- /dev/null +++ b/util/cpuprofile/testutil/BUILD.bazel @@ -0,0 +1,8 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "testutil", + srcs = ["util.go"], + importpath = "github.com/pingcap/tidb/util/cpuprofile/testutil", + visibility = ["//visibility:public"], +) diff --git a/util/cteutil/BUILD.bazel b/util/cteutil/BUILD.bazel new file mode 100644 index 0000000000000..1fab2fdcbeab5 --- /dev/null +++ b/util/cteutil/BUILD.bazel @@ -0,0 +1,32 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "cteutil", + srcs = ["storage.go"], + importpath = "github.com/pingcap/tidb/util/cteutil", + visibility = ["//visibility:public"], + deps = [ + "//types", + "//util/chunk", + "//util/disk", + "//util/memory", + "@com_github_pingcap_errors//:errors", + ], +) + +go_test( + name = "cteutil_test", + srcs = [ + "main_test.go", + "storage_test.go", + ], + embed = [":cteutil"], + deps = [ + "//parser/mysql", + "//testkit/testsetup", + "//types", + "//util/chunk", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/util/dbterror/BUILD.bazel b/util/dbterror/BUILD.bazel new file mode 100644 index 0000000000000..6c67f5fd4484d --- /dev/null +++ b/util/dbterror/BUILD.bazel @@ -0,0 +1,32 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "dbterror", + srcs = [ + "ddl_terror.go", + "terror.go", + ], + importpath = "github.com/pingcap/tidb/util/dbterror", + visibility = ["//visibility:public"], + deps = [ + "//errno", + "//parser/mysql", + "//parser/terror", + ], +) + +go_test( + name = "dbterror_test", + srcs = [ + "main_test.go", + "terror_test.go", + ], + embed = [":dbterror"], + deps = [ + "//errno", + "//testkit/testsetup", + "@com_github_pingcap_errors//:errors", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/util/dbterror/ddl_terror.go b/util/dbterror/ddl_terror.go index 4eefe434d4fd5..d9e268c650948 100644 --- a/util/dbterror/ddl_terror.go +++ b/util/dbterror/ddl_terror.go @@ -34,6 +34,10 @@ var ( ErrCancelledDDLJob = ClassDDL.NewStd(mysql.ErrCancelledDDLJob) // ErrRunMultiSchemaChanges means we run multi schema changes. ErrRunMultiSchemaChanges = ClassDDL.NewStdErr(mysql.ErrUnsupportedDDLOperation, parser_mysql.Message(fmt.Sprintf(mysql.MySQLErrName[mysql.ErrUnsupportedDDLOperation].Raw, "multi schema change"), nil)) + // ErrOperateSameColumn means we change the same columns multiple times in a DDL. + ErrOperateSameColumn = ClassDDL.NewStdErr(mysql.ErrUnsupportedDDLOperation, parser_mysql.Message(fmt.Sprintf(mysql.MySQLErrName[mysql.ErrUnsupportedDDLOperation].Raw, "operate same column '%s'"), nil)) + // ErrOperateSameIndex means we change the same indexes multiple times in a DDL. + ErrOperateSameIndex = ClassDDL.NewStdErr(mysql.ErrUnsupportedDDLOperation, parser_mysql.Message(fmt.Sprintf(mysql.MySQLErrName[mysql.ErrUnsupportedDDLOperation].Raw, "operate same index '%s'"), nil)) // ErrWaitReorgTimeout means we wait for reorganization timeout. ErrWaitReorgTimeout = ClassDDL.NewStdErr(mysql.ErrLockWaitTimeout, mysql.MySQLErrName[mysql.ErrWaitReorgTimeout]) // ErrInvalidStoreVer means invalid store version. @@ -384,4 +388,7 @@ var ( ErrCancelFinishedDDLJob = ClassDDL.NewStd(mysql.ErrCancelFinishedDDLJob) // ErrCannotCancelDDLJob returns when cancel a almost finished ddl job, because cancel in now may cause data inconsistency. ErrCannotCancelDDLJob = ClassDDL.NewStd(mysql.ErrCannotCancelDDLJob) + + // ErrColumnInChange indicates there is modification on the column in parallel. + ErrColumnInChange = ClassDDL.NewStd(mysql.ErrColumnInChange) ) diff --git a/util/dbutil/BUILD.bazel b/util/dbutil/BUILD.bazel new file mode 100644 index 0000000000000..b9b55839a52ad --- /dev/null +++ b/util/dbutil/BUILD.bazel @@ -0,0 +1,63 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "dbutil", + srcs = [ + "common.go", + "index.go", + "interface.go", + "query.go", + "retry.go", + "table.go", + "types.go", + "variable.go", + ], + importpath = "github.com/pingcap/tidb/util/dbutil", + visibility = ["//visibility:public"], + deps = [ + "//ddl", + "//errno", + "//infoschema", + "//parser", + "//parser/ast", + "//parser/auth", + "//parser/model", + "//parser/mysql", + "//planner/core", + "//sessionctx/stmtctx", + "//types", + "//types/parser_driver", + "//util", + "//util/collate", + "//util/dbterror", + "@com_github_go_sql_driver_mysql//:mysql", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_log//:log", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "dbutil_test", + srcs = [ + "common_test.go", + "index_test.go", + "retry_test.go", + "table_test.go", + "variable_test.go", + ], + embed = [":dbutil"], + deps = [ + "//errno", + "//infoschema", + "//parser", + "//parser/model", + "//parser/mysql", + "//types", + "//util/schemacmp", + "@com_github_data_dog_go_sqlmock//:go-sqlmock", + "@com_github_go_sql_driver_mysql//:mysql", + "@com_github_pingcap_errors//:errors", + "@com_github_stretchr_testify//require", + ], +) diff --git a/util/dbutil/common.go b/util/dbutil/common.go index eadf0714aea6e..674314af3492f 100644 --- a/util/dbutil/common.go +++ b/util/dbutil/common.go @@ -319,7 +319,7 @@ func GetTimeZoneOffset(ctx context.Context, db QueryExecutor) (time.Duration, er } hour, minute, second := t.Clock() - // nolint:durationcheck + //nolint:durationcheck return time.Duration(hour*3600+minute*60+second) * time.Second * factor, nil } @@ -686,13 +686,12 @@ func GetSessionVariable(ctx context.Context, db QueryExecutor, variable string) */ for rows.Next() { - err = rows.Scan(&variable, &value) - if err != nil { + if err = rows.Scan(&variable, &value); err != nil { return "", errors.Trace(err) } } - if rows.Err() != nil { + if err := rows.Err(); err != nil { return "", errors.Trace(err) } diff --git a/util/dbutil/retry.go b/util/dbutil/retry.go index 63796ba61e8d3..30409883c920f 100644 --- a/util/dbutil/retry.go +++ b/util/dbutil/retry.go @@ -58,7 +58,8 @@ func IsRetryableError(err error) bool { errno.ErrInfoSchemaChanged, errno.ErrWriteConflictInTiDB, errno.ErrTxnRetryable, - errno.ErrWriteConflict: + errno.ErrWriteConflict, + errno.ErrColumnInChange: return true // retryable error in TiDB case errno.ErrUnknown: // the old version of TiDB uses `1105` frequently, this should be compatible. for _, msg := range Retryable1105Msgs { diff --git a/util/dbutil/retry_test.go b/util/dbutil/retry_test.go index 3d533e729e568..8aae23e6169a1 100644 --- a/util/dbutil/retry_test.go +++ b/util/dbutil/retry_test.go @@ -120,6 +120,10 @@ func TestIsRetryableError(t *testing.T) { err: newMysqlErr(errno.ErrTxnRetryable, "KV error safe to retry Txn(Mvcc(TxnLockNotFound { start_ts: TimeStamp(425904341916582174), commit_ts: TimeStamp(425904342991372376)"), retryable: true, }, + { + err: newMysqlErr(errno.ErrColumnInChange, "column c1 id 123 does not exist, this column may have been updated by other DDL ran in parallel"), + retryable: true, + }, } for _, cs := range cases { diff --git a/util/dbutil/variable.go b/util/dbutil/variable.go index e409957e04d62..2fa6267be0ec1 100644 --- a/util/dbutil/variable.go +++ b/util/dbutil/variable.go @@ -112,7 +112,7 @@ func ShowGrants(ctx context.Context, db QueryExecutor, user, host string) ([]str grants = append(grants, grant) } - if rows.Err() != nil { + if err := rows.Err(); err != nil { return nil, errors.Trace(err) } return grants, nil diff --git a/util/ddl-checker/BUILD.bazel b/util/ddl-checker/BUILD.bazel new file mode 100644 index 0000000000000..07ae93eca9980 --- /dev/null +++ b/util/ddl-checker/BUILD.bazel @@ -0,0 +1,32 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "ddl-checker", + srcs = [ + "ddl_syncer.go", + "executable_checker.go", + ], + importpath = "github.com/pingcap/tidb/util/ddl-checker", + visibility = ["//visibility:public"], + deps = [ + "//parser", + "//parser/ast", + "//session", + "//store/mockstore", + "//util/dbutil", + "//util/logutil", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_log//:log", + "@org_uber_go_atomic//:atomic", + ], +) + +go_test( + name = "ddl-checker_test", + srcs = ["executable_checker_test.go"], + embed = [":ddl-checker"], + deps = [ + "//testkit", + "@com_github_stretchr_testify//require", + ], +) diff --git a/util/deadlockhistory/BUILD.bazel b/util/deadlockhistory/BUILD.bazel new file mode 100644 index 0000000000000..55b4c6199eeec --- /dev/null +++ b/util/deadlockhistory/BUILD.bazel @@ -0,0 +1,37 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "deadlockhistory", + srcs = ["deadlock_history.go"], + importpath = "github.com/pingcap/tidb/util/deadlockhistory", + visibility = ["//visibility:public"], + deps = [ + "//parser/mysql", + "//types", + "//util/logutil", + "//util/resourcegrouptag", + "@com_github_tikv_client_go_v2//error", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "deadlockhistory_test", + srcs = [ + "deadlock_history_test.go", + "main_test.go", + ], + embed = [":deadlockhistory"], + deps = [ + "//parser", + "//parser/model", + "//testkit/testsetup", + "//types", + "@com_github_pingcap_kvproto//pkg/deadlock", + "@com_github_pingcap_kvproto//pkg/kvrpcpb", + "@com_github_pingcap_tipb//go-tipb", + "@com_github_stretchr_testify//assert", + "@com_github_tikv_client_go_v2//error", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/util/disjointset/BUILD.bazel b/util/disjointset/BUILD.bazel new file mode 100644 index 0000000000000..564cf031d3041 --- /dev/null +++ b/util/disjointset/BUILD.bazel @@ -0,0 +1,22 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "disjointset", + srcs = ["int_set.go"], + importpath = "github.com/pingcap/tidb/util/disjointset", + visibility = ["//visibility:public"], +) + +go_test( + name = "disjointset_test", + srcs = [ + "int_set_test.go", + "main_test.go", + ], + embed = [":disjointset"], + deps = [ + "//testkit/testsetup", + "@com_github_stretchr_testify//assert", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/util/disk/BUILD.bazel b/util/disk/BUILD.bazel new file mode 100644 index 0000000000000..7f28bc941a2b5 --- /dev/null +++ b/util/disk/BUILD.bazel @@ -0,0 +1,36 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "disk", + srcs = [ + "tempDir.go", + "tracker.go", + ], + importpath = "github.com/pingcap/tidb/util/disk", + visibility = ["//visibility:public"], + deps = [ + "//config", + "//parser/terror", + "//util/memory", + "@com_github_danjacques_gofslock//fslock", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_log//:log", + "@org_golang_x_sync//singleflight", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "disk_test", + srcs = [ + "main_test.go", + "tempDir_test.go", + ], + embed = [":disk"], + deps = [ + "//config", + "//testkit/testsetup", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/util/domainutil/BUILD.bazel b/util/domainutil/BUILD.bazel new file mode 100644 index 0000000000000..4053412e0406f --- /dev/null +++ b/util/domainutil/BUILD.bazel @@ -0,0 +1,9 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "domainutil", + srcs = ["repair_vars.go"], + importpath = "github.com/pingcap/tidb/util/domainutil", + visibility = ["//visibility:public"], + deps = ["//parser/model"], +) diff --git a/util/encrypt/BUILD.bazel b/util/encrypt/BUILD.bazel new file mode 100644 index 0000000000000..7011814e32f68 --- /dev/null +++ b/util/encrypt/BUILD.bazel @@ -0,0 +1,30 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "encrypt", + srcs = [ + "aes.go", + "aes_layer.go", + "crypt.go", + ], + importpath = "github.com/pingcap/tidb/util/encrypt", + visibility = ["//visibility:public"], + deps = ["@com_github_pingcap_errors//:errors"], +) + +go_test( + name = "encrypt_test", + srcs = [ + "aes_layer_test.go", + "aes_test.go", + "crypt_test.go", + "main_test.go", + ], + embed = [":encrypt"], + deps = [ + "//testkit/testsetup", + "//util/checksum", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/util/etcd/BUILD.bazel b/util/etcd/BUILD.bazel new file mode 100644 index 0000000000000..33024813f8778 --- /dev/null +++ b/util/etcd/BUILD.bazel @@ -0,0 +1,24 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "etcd", + srcs = ["etcd.go"], + importpath = "github.com/pingcap/tidb/util/etcd", + visibility = ["//visibility:public"], + deps = [ + "@com_github_pingcap_errors//:errors", + "@io_etcd_go_etcd_client_v3//:client", + ], +) + +go_test( + name = "etcd_test", + srcs = ["etcd_test.go"], + embed = [":etcd"], + deps = [ + "@com_github_pingcap_errors//:errors", + "@com_github_stretchr_testify//require", + "@io_etcd_go_etcd_client_v3//:client", + "@io_etcd_go_etcd_tests_v3//integration", + ], +) diff --git a/util/execdetails/BUILD.bazel b/util/execdetails/BUILD.bazel new file mode 100644 index 0000000000000..d2c9142fe8cd4 --- /dev/null +++ b/util/execdetails/BUILD.bazel @@ -0,0 +1,30 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "execdetails", + srcs = ["execdetails.go"], + importpath = "github.com/pingcap/tidb/util/execdetails", + visibility = ["//visibility:public"], + deps = [ + "@com_github_pingcap_tipb//go-tipb", + "@com_github_tikv_client_go_v2//util", + "@org_golang_x_exp//slices", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "execdetails_test", + srcs = [ + "execdetails_test.go", + "main_test.go", + ], + embed = [":execdetails"], + deps = [ + "//testkit/testsetup", + "@com_github_pingcap_tipb//go-tipb", + "@com_github_stretchr_testify//require", + "@com_github_tikv_client_go_v2//util", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/util/expensivequery/BUILD.bazel b/util/expensivequery/BUILD.bazel new file mode 100644 index 0000000000000..993d7fdc3e75b --- /dev/null +++ b/util/expensivequery/BUILD.bazel @@ -0,0 +1,37 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "expensivequery", + srcs = [ + "expensivequery.go", + "memory_usage_alarm.go", + ], + importpath = "github.com/pingcap/tidb/util/expensivequery", + visibility = ["//visibility:public"], + deps = [ + "//config", + "//parser", + "//sessionctx/variable", + "//util", + "//util/disk", + "//util/logutil", + "//util/memory", + "@com_github_pingcap_log//:log", + "@org_uber_go_zap//:zap", + "@org_uber_go_zap//zapcore", + ], +) + +go_test( + name = "expensivequery_test", + srcs = ["expensivequerey_test.go"], + embed = [":expensivequery"], + deps = [ + "//sessionctx/stmtctx", + "//testkit/testsetup", + "//util", + "//util/memory", + "@com_github_stretchr_testify//assert", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/util/fastrand/BUILD.bazel b/util/fastrand/BUILD.bazel new file mode 100644 index 0000000000000..42e40bc901991 --- /dev/null +++ b/util/fastrand/BUILD.bazel @@ -0,0 +1,22 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "fastrand", + srcs = ["random.go"], + importpath = "github.com/pingcap/tidb/util/fastrand", + visibility = ["//visibility:public"], +) + +go_test( + name = "fastrand_test", + srcs = [ + "main_test.go", + "random_test.go", + ], + embed = [":fastrand"], + deps = [ + "//testkit/testsetup", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/util/filter/BUILD.bazel b/util/filter/BUILD.bazel new file mode 100644 index 0000000000000..a9e565b1329a0 --- /dev/null +++ b/util/filter/BUILD.bazel @@ -0,0 +1,26 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "filter", + srcs = [ + "filter.go", + "schema.go", + ], + importpath = "github.com/pingcap/tidb/util/filter", + visibility = ["//visibility:public"], + deps = [ + "//util/table-filter", + "//util/table-rule-selector", + "@com_github_pingcap_errors//:errors", + ], +) + +go_test( + name = "filter_test", + srcs = [ + "filter_test.go", + "schema_test.go", + ], + embed = [":filter"], + deps = ["@com_github_stretchr_testify//require"], +) diff --git a/util/format/BUILD.bazel b/util/format/BUILD.bazel new file mode 100644 index 0000000000000..fb99a71d52804 --- /dev/null +++ b/util/format/BUILD.bazel @@ -0,0 +1,22 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "format", + srcs = ["format.go"], + importpath = "github.com/pingcap/tidb/util/format", + visibility = ["//visibility:public"], +) + +go_test( + name = "format_test", + srcs = [ + "format_test.go", + "main_test.go", + ], + embed = [":format"], + deps = [ + "//testkit/testsetup", + "@com_github_stretchr_testify//assert", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/util/gcutil/BUILD.bazel b/util/gcutil/BUILD.bazel new file mode 100644 index 0000000000000..f56fff242ab1b --- /dev/null +++ b/util/gcutil/BUILD.bazel @@ -0,0 +1,17 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "gcutil", + srcs = ["gcutil.go"], + importpath = "github.com/pingcap/tidb/util/gcutil", + visibility = ["//visibility:public"], + deps = [ + "//parser/model", + "//sessionctx", + "//sessionctx/variable", + "//util/sqlexec", + "@com_github_pingcap_errors//:errors", + "@com_github_tikv_client_go_v2//oracle", + "@com_github_tikv_client_go_v2//util", + ], +) diff --git a/util/generatedexpr/BUILD.bazel b/util/generatedexpr/BUILD.bazel new file mode 100644 index 0000000000000..74e9fc7259df6 --- /dev/null +++ b/util/generatedexpr/BUILD.bazel @@ -0,0 +1,32 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "generatedexpr", + srcs = ["generated_expr.go"], + importpath = "github.com/pingcap/tidb/util/generatedexpr", + visibility = ["//visibility:public"], + deps = [ + "//parser", + "//parser/ast", + "//parser/charset", + "//parser/model", + "//util", + "@com_github_pingcap_errors//:errors", + ], +) + +go_test( + name = "generatedexpr_test", + srcs = [ + "gen_expr_test.go", + "main_test.go", + ], + embed = [":generatedexpr"], + deps = [ + "//parser/ast", + "//testkit/testsetup", + "//types/parser_driver", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/util/hack/BUILD.bazel b/util/hack/BUILD.bazel new file mode 100644 index 0000000000000..53a083731d5f7 --- /dev/null +++ b/util/hack/BUILD.bazel @@ -0,0 +1,21 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "hack", + srcs = ["hack.go"], + importpath = "github.com/pingcap/tidb/util/hack", + visibility = ["//visibility:public"], +) + +go_test( + name = "hack_test", + srcs = [ + "hack_test.go", + "main_test.go", + ], + embed = [":hack"], + deps = [ + "//testkit/testsetup", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/util/hack/hack.go b/util/hack/hack.go index f4a2f79f894ab..8e586485ee9bd 100644 --- a/util/hack/hack.go +++ b/util/hack/hack.go @@ -76,3 +76,8 @@ const ( // DefBucketMemoryUsageForSetInt64 = bucketSize*(1+unsafe.Sizeof(int64) + unsafe.Sizeof(struct{}))+2*ptrSize DefBucketMemoryUsageForSetInt64 = (8*(1+8+0) + 16) / 2 * 3 ) + +// EstimateBucketMemoryUsage returns the estimated memory usage of a bucket in a map. +func EstimateBucketMemoryUsage[K comparable, V any]() uint64 { + return (8*(1+uint64(unsafe.Sizeof(*new(K))+unsafe.Sizeof(*new(V)))) + 16) / 2 * 3 +} diff --git a/util/hint/BUILD.bazel b/util/hint/BUILD.bazel new file mode 100644 index 0000000000000..817a1237fa9df --- /dev/null +++ b/util/hint/BUILD.bazel @@ -0,0 +1,20 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "hint", + srcs = ["hint_processor.go"], + importpath = "github.com/pingcap/tidb/util/hint", + visibility = ["//visibility:public"], + deps = [ + "//errno", + "//parser", + "//parser/ast", + "//parser/format", + "//parser/model", + "//sessionctx", + "//util/dbterror", + "//util/logutil", + "@com_github_pingcap_errors//:errors", + "@org_uber_go_zap//:zap", + ], +) diff --git a/util/importer/BUILD.bazel b/util/importer/BUILD.bazel new file mode 100644 index 0000000000000..d666b345c8c7b --- /dev/null +++ b/util/importer/BUILD.bazel @@ -0,0 +1,28 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "importer", + srcs = [ + "config.go", + "data.go", + "db.go", + "importer.go", + "job.go", + "parser.go", + "rand.go", + ], + importpath = "github.com/pingcap/tidb/util/importer", + visibility = ["//visibility:public"], + deps = [ + "//parser", + "//parser/ast", + "//parser/mysql", + "//parser/types", + "//types/parser_driver", + "//util/dbutil", + "@com_github_go_sql_driver_mysql//:mysql", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_log//:log", + "@org_uber_go_zap//:zap", + ], +) diff --git a/util/importer/db.go b/util/importer/db.go index e483fa0a86dc7..17956b67f3c07 100644 --- a/util/importer/db.go +++ b/util/importer/db.go @@ -78,7 +78,7 @@ func genRowDatas(table *table, count int) ([]string, error) { } func genRowData(table *table) (string, error) { - var values []byte // nolint: prealloc + var values []byte //nolint: prealloc for _, column := range table.columns { data, err := genColumnData(table, column) if err != nil { diff --git a/util/israce/BUILD.bazel b/util/israce/BUILD.bazel new file mode 100644 index 0000000000000..7b9291a02722f --- /dev/null +++ b/util/israce/BUILD.bazel @@ -0,0 +1,11 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "israce", + srcs = [ + "israce.go", + "norace.go", + ], + importpath = "github.com/pingcap/tidb/util/israce", + visibility = ["//visibility:public"], +) diff --git a/util/keydecoder/BUILD.bazel b/util/keydecoder/BUILD.bazel new file mode 100644 index 0000000000000..ef29440153448 --- /dev/null +++ b/util/keydecoder/BUILD.bazel @@ -0,0 +1,40 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "keydecoder", + srcs = ["keydecoder.go"], + importpath = "github.com/pingcap/tidb/util/keydecoder", + visibility = ["//visibility:public"], + deps = [ + "//infoschema", + "//kv", + "//parser/model", + "//tablecodec", + "//util/logutil", + "@com_github_pingcap_errors//:errors", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "keydecoder_test", + srcs = [ + "keydecoder_test.go", + "main_test.go", + ], + embed = [":keydecoder"], + deps = [ + "//infoschema", + "//parser/model", + "//planner/core", + "//sessionctx/stmtctx", + "//table", + "//table/tables", + "//testkit/testsetup", + "//testkit/testutil", + "//types", + "//util/codec", + "@com_github_stretchr_testify//assert", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/util/kvcache/BUILD.bazel b/util/kvcache/BUILD.bazel new file mode 100644 index 0000000000000..139b64ada66f1 --- /dev/null +++ b/util/kvcache/BUILD.bazel @@ -0,0 +1,27 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "kvcache", + srcs = ["simple_lru.go"], + importpath = "github.com/pingcap/tidb/util/kvcache", + visibility = ["//visibility:public"], + deps = [ + "//util/memory", + "@com_github_pingcap_errors//:errors", + ], +) + +go_test( + name = "kvcache_test", + srcs = [ + "main_test.go", + "simple_lru_test.go", + ], + embed = [":kvcache"], + deps = [ + "//testkit/testsetup", + "//util/memory", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/util/localpool/BUILD.bazel b/util/localpool/BUILD.bazel new file mode 100644 index 0000000000000..ed161eed10518 --- /dev/null +++ b/util/localpool/BUILD.bazel @@ -0,0 +1,27 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "localpool", + srcs = [ + "localpool.go", + "localpool_norace.go", + "localpool_race.go", + ], + importpath = "github.com/pingcap/tidb/util/localpool", + visibility = ["//visibility:public"], +) + +go_test( + name = "localpool_test", + srcs = [ + "localpool_test.go", + "main_test.go", + ], + embed = [":localpool"], + deps = [ + "//testkit/testsetup", + "//util", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/util/logutil/BUILD.bazel b/util/logutil/BUILD.bazel new file mode 100644 index 0000000000000..ee230fe0d184d --- /dev/null +++ b/util/logutil/BUILD.bazel @@ -0,0 +1,43 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "logutil", + srcs = [ + "hex.go", + "log.go", + "slow_query_logger.go", + ], + importpath = "github.com/pingcap/tidb/util/logutil", + visibility = ["//visibility:public"], + deps = [ + "@com_github_golang_protobuf//proto", + "@com_github_grpc_ecosystem_go_grpc_middleware//logging/zap", + "@com_github_opentracing_opentracing_go//:opentracing-go", + "@com_github_opentracing_opentracing_go//log", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_log//:log", + "@org_uber_go_zap//:zap", + "@org_uber_go_zap//buffer", + "@org_uber_go_zap//zapcore", + ], +) + +go_test( + name = "logutil_test", + srcs = [ + "hex_test.go", + "log_test.go", + "main_test.go", + ], + embed = [":logutil"], + deps = [ + "//kv", + "//testkit/testsetup", + "@com_github_pingcap_kvproto//pkg/metapb", + "@com_github_pingcap_log//:log", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + "@org_uber_go_zap//:zap", + "@org_uber_go_zap//zapcore", + ], +) diff --git a/util/logutil/consistency/BUILD.bazel b/util/logutil/consistency/BUILD.bazel new file mode 100644 index 0000000000000..a361cc392428a --- /dev/null +++ b/util/logutil/consistency/BUILD.bazel @@ -0,0 +1,22 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "consistency", + srcs = ["reporter.go"], + importpath = "github.com/pingcap/tidb/util/logutil/consistency", + visibility = ["//visibility:public"], + deps = [ + "//errno", + "//kv", + "//parser/model", + "//sessionctx", + "//store/helper", + "//tablecodec", + "//types", + "//util/dbterror", + "//util/logutil", + "@com_github_pingcap_kvproto//pkg/kvrpcpb", + "@com_github_tikv_client_go_v2//tikv", + "@org_uber_go_zap//:zap", + ], +) diff --git a/util/mathutil/BUILD.bazel b/util/mathutil/BUILD.bazel new file mode 100644 index 0000000000000..7edebf6fb4de5 --- /dev/null +++ b/util/mathutil/BUILD.bazel @@ -0,0 +1,27 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "mathutil", + srcs = [ + "math.go", + "rand.go", + ], + importpath = "github.com/pingcap/tidb/util/mathutil", + visibility = ["//visibility:public"], + deps = ["@org_golang_x_exp//constraints"], +) + +go_test( + name = "mathutil_test", + srcs = [ + "main_test.go", + "math_test.go", + "rand_test.go", + ], + embed = [":mathutil"], + deps = [ + "//testkit/testsetup", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/util/mathutil/rand.go b/util/mathutil/rand.go index 6c93588a91129..a58c88281d638 100644 --- a/util/mathutil/rand.go +++ b/util/mathutil/rand.go @@ -67,3 +67,17 @@ func (rng *MysqlRng) SetSeed2(seed uint32) { defer rng.mu.Unlock() rng.seed2 = seed } + +// GetSeed1 is an interface to get seed1. It's only used for getting session states. +func (rng *MysqlRng) GetSeed1() uint32 { + rng.mu.Lock() + defer rng.mu.Unlock() + return rng.seed1 +} + +// GetSeed2 is an interface to get seed2. It's only used for getting session states. +func (rng *MysqlRng) GetSeed2() uint32 { + rng.mu.Lock() + defer rng.mu.Unlock() + return rng.seed2 +} diff --git a/util/mathutil/rand_test.go b/util/mathutil/rand_test.go index d0164f4de201f..0cc026604431c 100644 --- a/util/mathutil/rand_test.go +++ b/util/mathutil/rand_test.go @@ -68,4 +68,6 @@ func TestRandWithSeed1AndSeed2(t *testing.T) { require.Equal(t, rng.Gen(), 0.028870999839968048) require.Equal(t, rng.Gen(), 0.11641535266900002) require.Equal(t, rng.Gen(), 0.49546379455874096) + require.Equal(t, rng.GetSeed1(), uint32(532000198)) + require.Equal(t, rng.GetSeed2(), uint32(689000330)) } diff --git a/util/memory/BUILD.bazel b/util/memory/BUILD.bazel new file mode 100644 index 0000000000000..3f55456e383f9 --- /dev/null +++ b/util/memory/BUILD.bazel @@ -0,0 +1,41 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "memory", + srcs = [ + "action.go", + "meminfo.go", + "tracker.go", + ], + importpath = "github.com/pingcap/tidb/util/memory", + visibility = ["//visibility:public"], + deps = [ + "//config", + "//errno", + "//metrics", + "//parser/terror", + "//util/dbterror", + "//util/logutil", + "@com_github_shirou_gopsutil_v3//mem", + "@org_uber_go_atomic//:atomic", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "memory_test", + srcs = [ + "bench_test.go", + "main_test.go", + "tracker_test.go", + ], + embed = [":memory"], + deps = [ + "//errno", + "//parser/terror", + "//testkit/testsetup", + "//util/mathutil", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/util/mock/BUILD.bazel b/util/mock/BUILD.bazel new file mode 100644 index 0000000000000..a438de7ec2cb5 --- /dev/null +++ b/util/mock/BUILD.bazel @@ -0,0 +1,52 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "mock", + srcs = [ + "client.go", + "context.go", + "iter.go", + "store.go", + ], + importpath = "github.com/pingcap/tidb/util/mock", + visibility = ["//visibility:public"], + deps = [ + "//kv", + "//parser/ast", + "//parser/model", + "//parser/terror", + "//sessionctx", + "//sessionctx/sessionstates", + "//sessionctx/variable", + "//util", + "//util/disk", + "//util/kvcache", + "//util/memory", + "//util/sli", + "//util/sqlexec", + "//util/topsql/stmtstats", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_kvproto//pkg/deadlock", + "@com_github_pingcap_kvproto//pkg/kvrpcpb", + "@com_github_pingcap_tipb//go-binlog", + "@com_github_stretchr_testify//assert", + "@com_github_tikv_client_go_v2//oracle", + "@com_github_tikv_client_go_v2//tikv", + ], +) + +go_test( + name = "mock_test", + srcs = [ + "iter_test.go", + "main_test.go", + "mock_test.go", + ], + embed = [":mock"], + deps = [ + "//kv", + "//testkit/testsetup", + "@com_github_stretchr_testify//assert", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/util/mock/context.go b/util/mock/context.go index a0525c3e4ef42..19a67cd3e104e 100644 --- a/util/mock/context.go +++ b/util/mock/context.go @@ -27,6 +27,7 @@ import ( "github.com/pingcap/tidb/parser/model" "github.com/pingcap/tidb/parser/terror" "github.com/pingcap/tidb/sessionctx" + "github.com/pingcap/tidb/sessionctx/sessionstates" "github.com/pingcap/tidb/sessionctx/variable" "github.com/pingcap/tidb/util" "github.com/pingcap/tidb/util/disk" @@ -36,7 +37,7 @@ import ( "github.com/pingcap/tidb/util/sqlexec" "github.com/pingcap/tidb/util/topsql/stmtstats" "github.com/pingcap/tipb/go-binlog" - "github.com/tikv/client-go/v2/tikv" + "github.com/tikv/client-go/v2/oracle" ) var ( @@ -54,6 +55,7 @@ type Context struct { cancel context.CancelFunc sm util.SessionManager pcache *kvcache.SimpleLRUCache + level kvrpcpb.DiskFullOpt } type wrapTxn struct { @@ -90,12 +92,12 @@ func (c *Context) ExecuteStmt(ctx context.Context, stmtNode ast.StmtNode) (sqlex // SetDiskFullOpt sets allowed options of current operation in each TiKV disk usage level. func (c *Context) SetDiskFullOpt(level kvrpcpb.DiskFullOpt) { - c.txn.Transaction.SetDiskFullOpt(kvrpcpb.DiskFullOpt_AllowedOnAlmostFull) + c.level = level } // ClearDiskFullOpt clears allowed options of current operation in each TiKV disk usage level. func (c *Context) ClearDiskFullOpt() { - c.txn.Transaction.ClearDiskFullOpt() + c.level = kvrpcpb.DiskFullOpt_NotAllowedOnFull } // ExecuteInternal implements sqlexec.SQLExecutor ExecuteInternal interface. @@ -174,6 +176,11 @@ func (c *Context) GetInfoSchema() sessionctx.InfoschemaMetaVersion { return nil } +// GetDomainInfoSchema returns the latest information schema in domain +func (c *Context) GetDomainInfoSchema() sessionctx.InfoschemaMetaVersion { + return nil +} + // GetBuiltinFunctionUsage implements sessionctx.Context GetBuiltinFunctionUsage interface. func (c *Context) GetBuiltinFunctionUsage() map[string]uint32 { return make(map[string]uint32) @@ -259,27 +266,13 @@ func (c *Context) RollbackTxn(ctx context.Context) { // CommitTxn indicates an expected call of CommitTxn. func (c *Context) CommitTxn(ctx context.Context) error { defer c.sessionVars.SetInTxn(false) + c.txn.SetDiskFullOpt(c.level) if c.txn.Valid() { return c.txn.Commit(ctx) } return nil } -// InitTxnWithStartTS implements the sessionctx.Context interface with startTS. -func (c *Context) InitTxnWithStartTS(startTS uint64) error { - if c.txn.Valid() { - return nil - } - if c.Store != nil { - txn, err := c.Store.Begin(tikv.WithTxnScope(kv.GlobalTxnScope), tikv.WithStartTS(startTS)) - if err != nil { - return errors.Trace(err) - } - c.txn.Transaction = txn - } - return nil -} - // GetStore gets the store of session. func (c *Context) GetStore() kv.Storage { return c.Store @@ -363,7 +356,13 @@ func (c *Context) HasLockedTables() bool { } // PrepareTSFuture implements the sessionctx.Context interface. -func (c *Context) PrepareTSFuture(ctx context.Context) { +func (c *Context) PrepareTSFuture(ctx context.Context, future oracle.Future, scope string) error { + return nil +} + +// GetPreparedTSFuture returns the prepared ts future +func (c *Context) GetPreparedTSFuture() oracle.Future { + return nil } // GetStmtStats implements the sessionctx.Context interface. @@ -386,6 +385,16 @@ func (c *Context) ReleaseAllAdvisoryLocks() int { return 0 } +// EncodeSessionStates implements sessionctx.Context EncodeSessionStates interface. +func (c *Context) EncodeSessionStates(context.Context, sessionctx.Context, *sessionstates.SessionStates) error { + return errors.Errorf("Not Supported") +} + +// DecodeSessionStates implements sessionctx.Context DecodeSessionStates interface. +func (c *Context) DecodeSessionStates(context.Context, sessionctx.Context, *sessionstates.SessionStates) error { + return errors.Errorf("Not Supported") +} + // Close implements the sessionctx.Context interface. func (c *Context) Close() { } diff --git a/util/mvmap/BUILD.bazel b/util/mvmap/BUILD.bazel new file mode 100644 index 0000000000000..b6a1819054206 --- /dev/null +++ b/util/mvmap/BUILD.bazel @@ -0,0 +1,27 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "mvmap", + srcs = [ + "fnv.go", + "mvmap.go", + ], + importpath = "github.com/pingcap/tidb/util/mvmap", + visibility = ["//visibility:public"], + deps = ["//util/mathutil"], +) + +go_test( + name = "mvmap_test", + srcs = [ + "bench_test.go", + "main_test.go", + "mvmap_test.go", + ], + embed = [":mvmap"], + deps = [ + "//testkit/testsetup", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/util/paging/BUILD.bazel b/util/paging/BUILD.bazel new file mode 100644 index 0000000000000..f07dbeb8ff1f9 --- /dev/null +++ b/util/paging/BUILD.bazel @@ -0,0 +1,22 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "paging", + srcs = ["paging.go"], + importpath = "github.com/pingcap/tidb/util/paging", + visibility = ["//visibility:public"], +) + +go_test( + name = "paging_test", + srcs = [ + "main_test.go", + "paging_test.go", + ], + embed = [":paging"], + deps = [ + "//testkit/testsetup", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/util/parser/BUILD.bazel b/util/parser/BUILD.bazel new file mode 100644 index 0000000000000..bc2fed3317381 --- /dev/null +++ b/util/parser/BUILD.bazel @@ -0,0 +1,35 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "parser", + srcs = [ + "ast.go", + "parser.go", + ], + importpath = "github.com/pingcap/tidb/util/parser", + visibility = ["//visibility:public"], + deps = [ + "//parser/ast", + "//parser/format", + "//util/logutil", + "@com_github_pingcap_errors//:errors", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "parser_test", + srcs = [ + "ast_test.go", + "main_test.go", + "parser_test.go", + ], + deps = [ + ":parser", + "//parser", + "//testkit/testsetup", + "//types/parser_driver", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/util/pdapi/BUILD.bazel b/util/pdapi/BUILD.bazel new file mode 100644 index 0000000000000..2a2099a763e7e --- /dev/null +++ b/util/pdapi/BUILD.bazel @@ -0,0 +1,8 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "pdapi", + srcs = ["const.go"], + importpath = "github.com/pingcap/tidb/util/pdapi", + visibility = ["//visibility:public"], +) diff --git a/util/plancodec/BUILD.bazel b/util/plancodec/BUILD.bazel new file mode 100644 index 0000000000000..199bde529da8a --- /dev/null +++ b/util/plancodec/BUILD.bazel @@ -0,0 +1,33 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "plancodec", + srcs = [ + "codec.go", + "id.go", + ], + importpath = "github.com/pingcap/tidb/util/plancodec", + visibility = ["//visibility:public"], + deps = [ + "//kv", + "//util/texttree", + "@com_github_golang_snappy//:snappy", + "@com_github_pingcap_errors//:errors", + ], +) + +go_test( + name = "plancodec_test", + srcs = [ + "codec_test.go", + "id_test.go", + "main_test.go", + ], + embed = [":plancodec"], + deps = [ + "//kv", + "//testkit/testsetup", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/util/plancodec/id.go b/util/plancodec/id.go index b6f699c3b9837..2b2e5e7e972a2 100644 --- a/util/plancodec/id.go +++ b/util/plancodec/id.go @@ -174,16 +174,19 @@ const ( typeDataSourceID int = 40 typeLoadDataID int = 41 typeTableSampleID int = 42 - typeTableFullScan int = 43 - typeTableRangeScan int = 44 - typeTableRowIDScan int = 45 - typeIndexFullScan int = 46 - typeIndexRangeScan int = 47 - typeExchangeReceiver int = 48 - typeExchangeSender int = 49 - typeCTE int = 50 - typeCTEDefinition int = 51 - typeCTETable int = 52 + typeTableFullScanID int = 43 + typeTableRangeScanID int = 44 + typeTableRowIDScanID int = 45 + typeIndexFullScanID int = 46 + typeIndexRangeScanID int = 47 + typeExchangeReceiverID int = 48 + typeExchangeSenderID int = 49 + typeCTEID int = 50 + typeCTEDefinitionID int = 51 + typeCTETableID int = 52 + typePartitionUnionID int = 53 + typeShuffleID int = 54 + typeShuffleReceiverID int = 55 ) // TypeStringToPhysicalID converts the plan type string to plan id. @@ -207,6 +210,8 @@ func TypeStringToPhysicalID(tp string) int { return typeJoinID case TypeUnion: return typeUnionID + case TypePartitionUnion: + return typePartitionUnionID case TypeTableScan: return typeTableScanID case TypeMemTableScan: @@ -255,6 +260,10 @@ func TypeStringToPhysicalID(tp string) int { return typeIndexReaderID case TypeWindow: return typeWindowID + case TypeShuffle: + return typeShuffleID + case TypeShuffleReceiver: + return typeShuffleReceiverID case TypeTiKVSingleGather: return typeTiKVSingleGatherID case TypeIndexMerge: @@ -274,25 +283,25 @@ func TypeStringToPhysicalID(tp string) int { case TypeTableSample: return typeTableSampleID case TypeTableFullScan: - return typeTableFullScan + return typeTableFullScanID case TypeTableRangeScan: - return typeTableRangeScan + return typeTableRangeScanID case TypeTableRowIDScan: - return typeTableRowIDScan + return typeTableRowIDScanID case TypeIndexFullScan: - return typeIndexFullScan + return typeIndexFullScanID case TypeIndexRangeScan: - return typeIndexRangeScan + return typeIndexRangeScanID case TypeExchangeReceiver: - return typeExchangeReceiver + return typeExchangeReceiverID case TypeExchangeSender: - return typeExchangeSender + return typeExchangeSenderID case TypeCTE: - return typeCTE + return typeCTEID case TypeCTEDefinition: - return typeCTEDefinition + return typeCTEDefinitionID case TypeCTETable: - return typeCTETable + return typeCTETableID } // Should never reach here. return 0 @@ -319,6 +328,8 @@ func PhysicalIDToTypeString(id int) string { return TypeJoin case typeUnionID: return TypeUnion + case typePartitionUnionID: + return TypePartitionUnion case typeTableScanID: return TypeTableScan case typeMemTableScanID: @@ -367,6 +378,10 @@ func PhysicalIDToTypeString(id int) string { return TypeIndexReader case typeWindowID: return TypeWindow + case typeShuffleID: + return TypeShuffle + case typeShuffleReceiverID: + return TypeShuffleReceiver case typeTiKVSingleGatherID: return TypeTiKVSingleGather case typeIndexMergeID: @@ -383,25 +398,25 @@ func PhysicalIDToTypeString(id int) string { return TypeLoadData case typeTableSampleID: return TypeTableSample - case typeTableFullScan: + case typeTableFullScanID: return TypeTableFullScan - case typeTableRangeScan: + case typeTableRangeScanID: return TypeTableRangeScan - case typeTableRowIDScan: + case typeTableRowIDScanID: return TypeTableRowIDScan - case typeIndexFullScan: + case typeIndexFullScanID: return TypeIndexFullScan - case typeIndexRangeScan: + case typeIndexRangeScanID: return TypeIndexRangeScan - case typeExchangeReceiver: + case typeExchangeReceiverID: return TypeExchangeReceiver - case typeExchangeSender: + case typeExchangeSenderID: return TypeExchangeSender - case typeCTE: + case typeCTEID: return TypeCTE - case typeCTEDefinition: + case typeCTEDefinitionID: return TypeCTEDefinition - case typeCTETable: + case typeCTETableID: return TypeCTETable } diff --git a/util/plancodec/id_test.go b/util/plancodec/id_test.go index f97939e4cc14f..8a7addd23fdba 100644 --- a/util/plancodec/id_test.go +++ b/util/plancodec/id_test.go @@ -68,16 +68,19 @@ func TestPlanIDChanged(t *testing.T) { {typeDataSourceID, 40}, {typeLoadDataID, 41}, {typeTableSampleID, 42}, - {typeTableFullScan, 43}, - {typeTableRangeScan, 44}, - {typeTableRowIDScan, 45}, - {typeIndexFullScan, 46}, - {typeIndexRangeScan, 47}, - {typeExchangeReceiver, 48}, - {typeExchangeSender, 49}, - {typeCTE, 50}, - {typeCTEDefinition, 51}, - {typeCTETable, 52}, + {typeTableFullScanID, 43}, + {typeTableRangeScanID, 44}, + {typeTableRowIDScanID, 45}, + {typeIndexFullScanID, 46}, + {typeIndexRangeScanID, 47}, + {typeExchangeReceiverID, 48}, + {typeExchangeSenderID, 49}, + {typeCTEID, 50}, + {typeCTEDefinitionID, 51}, + {typeCTETableID, 52}, + {typePartitionUnionID, 53}, + {typeShuffleID, 54}, + {typeShuffleReceiverID, 55}, } for _, testcase := range testCases { diff --git a/util/printer/BUILD.bazel b/util/printer/BUILD.bazel new file mode 100644 index 0000000000000..a39b3d7170e7a --- /dev/null +++ b/util/printer/BUILD.bazel @@ -0,0 +1,30 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "printer", + srcs = ["printer.go"], + importpath = "github.com/pingcap/tidb/util/printer", + visibility = ["//visibility:public"], + deps = [ + "//config", + "//parser/mysql", + "//util/israce", + "//util/logutil", + "//util/versioninfo", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "printer_test", + srcs = [ + "main_test.go", + "printer_test.go", + ], + embed = [":printer"], + deps = [ + "//testkit/testsetup", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/util/processinfo.go b/util/processinfo.go index 30b95aec100ae..98d8733b8c111 100644 --- a/util/processinfo.go +++ b/util/processinfo.go @@ -153,7 +153,8 @@ var mapServerStatus2Str = map[uint16]string{ // Param state is a bit-field. (e.g. 0x0003 = "in transaction; autocommit"). func serverStatus2Str(state uint16) string { // l collect server status strings. - var l []string // nolint: prealloc + //nolint: prealloc + var l []string // check each defined server status, if match, append to collector. for _, s := range ascServerStatus { if state&s == 0 { diff --git a/util/profile/BUILD.bazel b/util/profile/BUILD.bazel new file mode 100644 index 0000000000000..c541901b7cc37 --- /dev/null +++ b/util/profile/BUILD.bazel @@ -0,0 +1,42 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "profile", + srcs = [ + "flamegraph.go", + "profile.go", + ], + importpath = "github.com/pingcap/tidb/util/profile", + visibility = ["//visibility:public"], + deps = [ + "//types", + "//util/cpuprofile", + "//util/texttree", + "@com_github_google_pprof//profile", + "@com_github_pingcap_errors//:errors", + ], +) + +go_test( + name = "profile_test", + srcs = [ + "flamegraph_test.go", + "main_test.go", + "profile_test.go", + ], + data = glob(["testdata/**"]), + embed = [":profile"], + deps = [ + "//domain", + "//kv", + "//session", + "//store/mockstore", + "//testkit", + "//testkit/testsetup", + "//types", + "//util/collate", + "@com_github_stretchr_testify//assert", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/util/promutil/BUILD.bazel b/util/promutil/BUILD.bazel new file mode 100644 index 0000000000000..aaf715fd6cdf7 --- /dev/null +++ b/util/promutil/BUILD.bazel @@ -0,0 +1,22 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "promutil", + srcs = [ + "factory.go", + "registry.go", + ], + importpath = "github.com/pingcap/tidb/util/promutil", + visibility = ["//visibility:public"], + deps = ["@com_github_prometheus_client_golang//prometheus"], +) + +go_test( + name = "promutil_test", + srcs = ["registry_test.go"], + embed = [":promutil"], + deps = [ + "@com_github_prometheus_client_golang//prometheus", + "@com_github_stretchr_testify//require", + ], +) diff --git a/util/ranger/BUILD.bazel b/util/ranger/BUILD.bazel new file mode 100644 index 0000000000000..053085331755e --- /dev/null +++ b/util/ranger/BUILD.bazel @@ -0,0 +1,62 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "ranger", + srcs = [ + "checker.go", + "detacher.go", + "points.go", + "ranger.go", + "types.go", + ], + importpath = "github.com/pingcap/tidb/util/ranger", + visibility = ["//visibility:public"], + deps = [ + "//errno", + "//expression", + "//kv", + "//parser/ast", + "//parser/charset", + "//parser/format", + "//parser/model", + "//parser/mysql", + "//parser/terror", + "//sessionctx", + "//sessionctx/stmtctx", + "//types", + "//types/parser_driver", + "//util/chunk", + "//util/codec", + "//util/collate", + "//util/dbterror", + "@com_github_pingcap_errors//:errors", + ], +) + +go_test( + name = "ranger_test", + srcs = [ + "main_test.go", + "ranger_test.go", + "types_test.go", + ], + data = glob(["testdata/**"]), + deps = [ + ":ranger", + "//config", + "//expression", + "//parser/ast", + "//parser/mysql", + "//planner/core", + "//session", + "//sessionctx", + "//sessionctx/variable", + "//testkit", + "//testkit/testdata", + "//testkit/testsetup", + "//types", + "//util/collate", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/util/ranger/detacher.go b/util/ranger/detacher.go index 037a5402f048b..cbde3ddef60c6 100644 --- a/util/ranger/detacher.go +++ b/util/ranger/detacher.go @@ -32,7 +32,7 @@ import ( // detachColumnCNFConditions detaches the condition for calculating range from the other conditions. // Please make sure that the top level is CNF form. func detachColumnCNFConditions(sctx sessionctx.Context, conditions []expression.Expression, checker *conditionChecker) ([]expression.Expression, []expression.Expression) { - var accessConditions, filterConditions []expression.Expression // nolint: prealloc + var accessConditions, filterConditions []expression.Expression //nolint: prealloc for _, cond := range conditions { if sf, ok := cond.(*expression.ScalarFunction); ok && sf.FuncName.L == ast.LogicOr { dnfItems := expression.FlattenDNFConditions(sf) diff --git a/util/regexpr-router/BUILD.bazel b/util/regexpr-router/BUILD.bazel new file mode 100644 index 0000000000000..361067d88c1bf --- /dev/null +++ b/util/regexpr-router/BUILD.bazel @@ -0,0 +1,24 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "regexpr-router", + srcs = ["regexpr_router.go"], + importpath = "github.com/pingcap/tidb/util/regexpr-router", + visibility = ["//visibility:public"], + deps = [ + "//util/filter", + "//util/table-router", + "@com_github_pingcap_errors//:errors", + ], +) + +go_test( + name = "regexpr-router_test", + srcs = ["regexpr_router_test.go"], + embed = [":regexpr-router"], + deps = [ + "//util/filter", + "//util/table-router", + "@com_github_stretchr_testify//require", + ], +) diff --git a/util/resourcegrouptag/BUILD.bazel b/util/resourcegrouptag/BUILD.bazel new file mode 100644 index 0000000000000..6047f0b7f9f8c --- /dev/null +++ b/util/resourcegrouptag/BUILD.bazel @@ -0,0 +1,37 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "resourcegrouptag", + srcs = ["resource_group_tag.go"], + importpath = "github.com/pingcap/tidb/util/resourcegrouptag", + visibility = ["//visibility:public"], + deps = [ + "//parser", + "//tablecodec/rowindexcodec", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_kvproto//pkg/coprocessor", + "@com_github_pingcap_kvproto//pkg/kvrpcpb", + "@com_github_pingcap_tipb//go-tipb", + "@com_github_tikv_client_go_v2//tikvrpc", + ], +) + +go_test( + name = "resourcegrouptag_test", + srcs = [ + "main_test.go", + "resource_group_tag_test.go", + ], + embed = [":resourcegrouptag"], + deps = [ + "//parser", + "//testkit/testsetup", + "//util/hack", + "@com_github_pingcap_kvproto//pkg/coprocessor", + "@com_github_pingcap_kvproto//pkg/kvrpcpb", + "@com_github_pingcap_tipb//go-tipb", + "@com_github_stretchr_testify//require", + "@com_github_tikv_client_go_v2//tikvrpc", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/util/rowDecoder/BUILD.bazel b/util/rowDecoder/BUILD.bazel new file mode 100644 index 0000000000000..9f6768ad49b44 --- /dev/null +++ b/util/rowDecoder/BUILD.bazel @@ -0,0 +1,47 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "rowDecoder", + srcs = ["decoder.go"], + importpath = "github.com/pingcap/tidb/util/rowDecoder", + visibility = ["//visibility:public"], + deps = [ + "//expression", + "//kv", + "//parser/model", + "//sessionctx", + "//table", + "//table/tables", + "//tablecodec", + "//types", + "//util/chunk", + "//util/rowcodec", + ], +) + +go_test( + name = "rowDecoder_test", + srcs = [ + "decoder_test.go", + "main_test.go", + ], + deps = [ + ":rowDecoder", + "//expression", + "//kv", + "//parser/model", + "//parser/mysql", + "//planner/core", + "//sessionctx/stmtctx", + "//table/tables", + "//tablecodec", + "//testkit/testsetup", + "//testkit/testutil", + "//types", + "//util/collate", + "//util/mock", + "//util/rowcodec", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/util/rowcodec/BUILD.bazel b/util/rowcodec/BUILD.bazel new file mode 100644 index 0000000000000..8a3457d5feb2e --- /dev/null +++ b/util/rowcodec/BUILD.bazel @@ -0,0 +1,51 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "rowcodec", + srcs = [ + "common.go", + "decoder.go", + "encoder.go", + "row.go", + ], + importpath = "github.com/pingcap/tidb/util/rowcodec", + visibility = ["//visibility:public"], + deps = [ + "//kv", + "//parser/model", + "//parser/mysql", + "//parser/terror", + "//parser/types", + "//sessionctx/stmtctx", + "//types", + "//types/json", + "//util/chunk", + "//util/codec", + "@com_github_pingcap_errors//:errors", + ], +) + +go_test( + name = "rowcodec_test", + srcs = [ + "bench_test.go", + "main_test.go", + "rowcodec_test.go", + ], + embed = [":rowcodec"], + deps = [ + "//kv", + "//parser/mysql", + "//sessionctx/stmtctx", + "//tablecodec", + "//testkit/testsetup", + "//types", + "//types/json", + "//util/benchdaily", + "//util/chunk", + "//util/codec", + "//util/collate", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/util/rowcodec/rowcodec_test.go b/util/rowcodec/rowcodec_test.go index 51c965f095cd6..8772a50eb3d5d 100644 --- a/util/rowcodec/rowcodec_test.go +++ b/util/rowcodec/rowcodec_test.go @@ -890,7 +890,7 @@ var ( } } getDuration = func(value string) types.Duration { - dur, _ := types.ParseDuration(nil, value, 0) + dur, _, _ := types.ParseDuration(nil, value, 0) return dur } getOldDatumByte = func(d types.Datum) []byte { diff --git a/util/schemacmp/BUILD.bazel b/util/schemacmp/BUILD.bazel new file mode 100644 index 0000000000000..3d70a070d360c --- /dev/null +++ b/util/schemacmp/BUILD.bazel @@ -0,0 +1,44 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "schemacmp", + srcs = [ + "lattice.go", + "table.go", + "type.go", + "util.go", + ], + importpath = "github.com/pingcap/tidb/util/schemacmp", + visibility = ["//visibility:public"], + deps = [ + "//parser/charset", + "//parser/format", + "//parser/model", + "//parser/mysql", + "//parser/types", + "//types", + ], +) + +go_test( + name = "schemacmp_test", + srcs = [ + "lattice_test.go", + "table_test.go", + "type_test.go", + ], + deps = [ + ":schemacmp", + "//ddl", + "//parser", + "//parser/ast", + "//parser/model", + "//parser/mysql", + "//planner", + "//sessionctx", + "//types", + "//util/mock", + "@com_github_pingcap_errors//:errors", + "@com_github_stretchr_testify//require", + ], +) diff --git a/util/selection/BUILD.bazel b/util/selection/BUILD.bazel new file mode 100644 index 0000000000000..3e6d014d6e7d7 --- /dev/null +++ b/util/selection/BUILD.bazel @@ -0,0 +1,22 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "selection", + srcs = ["selection.go"], + importpath = "github.com/pingcap/tidb/util/selection", + visibility = ["//visibility:public"], +) + +go_test( + name = "selection_test", + srcs = [ + "main_test.go", + "selection_test.go", + ], + embed = [":selection"], + deps = [ + "//testkit/testsetup", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/util/sem/BUILD.bazel b/util/sem/BUILD.bazel new file mode 100644 index 0000000000000..5c01a761449fa --- /dev/null +++ b/util/sem/BUILD.bazel @@ -0,0 +1,29 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "sem", + srcs = ["sem.go"], + importpath = "github.com/pingcap/tidb/util/sem", + visibility = ["//visibility:public"], + deps = [ + "//parser/mysql", + "//sessionctx/variable", + "//util/logutil", + ], +) + +go_test( + name = "sem_test", + srcs = [ + "main_test.go", + "sem_test.go", + ], + embed = [":sem"], + deps = [ + "//parser/mysql", + "//sessionctx/variable", + "//testkit/testsetup", + "@com_github_stretchr_testify//assert", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/util/set/BUILD.bazel b/util/set/BUILD.bazel new file mode 100644 index 0000000000000..0f733ad14ee41 --- /dev/null +++ b/util/set/BUILD.bazel @@ -0,0 +1,33 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "set", + srcs = [ + "float64_set.go", + "int_set.go", + "mem_aware_map.go", + "set_with_memory_usage.go", + "string_set.go", + ], + importpath = "github.com/pingcap/tidb/util/set", + visibility = ["//visibility:public"], + deps = ["//util/hack"], +) + +go_test( + name = "set_test", + srcs = [ + "float64_set_test.go", + "int_set_test.go", + "main_test.go", + "mem_aware_map_test.go", + "set_with_memory_usage_test.go", + "string_set_test.go", + ], + embed = [":set"], + deps = [ + "//testkit/testsetup", + "@com_github_stretchr_testify//assert", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/util/set/mem_aware_map.go b/util/set/mem_aware_map.go new file mode 100644 index 0000000000000..da1cb227af306 --- /dev/null +++ b/util/set/mem_aware_map.go @@ -0,0 +1,72 @@ +// 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 set + +import ( + "math" + + "github.com/pingcap/tidb/util/hack" +) + +// MemAwareMap is a map which is aware of its memory usage. It's adapted from SetWithMemoryUsage. +// It doesn't support delete. +// The estimate usage of memory is usually smaller than the real usage. +// According to experiments with SetWithMemoryUsage, 2/3 * estimated usage <= real usage <= estimated usage. +type MemAwareMap[K comparable, V any] struct { + M map[K]V // it's public, when callers want to directly access it, e.g. use in a for-range-loop + bInMap int64 + bucketMemoryUsage uint64 +} + +// EstimateMapSize returns the estimated size of the map. It doesn't include the dynamic part, e.g. objects pointed to by pointers in the map. +// len(map) <= load_factor * 2^bInMap. bInMap = ceil(log2(len(map)/load_factor)). +// memory = bucketSize * 2^bInMap +func EstimateMapSize(length int, bucketSize uint64) uint64 { + if length == 0 { + return 0 + } + bInMap := uint64(math.Ceil(math.Log2(float64(length) * hack.LoadFactorDen / hack.LoadFactorNum))) + return bucketSize * uint64(1< (1<